Tag: 蓝牙

如何在后台和前台使用iOS 7.1中的蓝牙LE检测附近的设备?

我有一个应用程序,需要检测附近(范围内的蓝牙LE)设备运行相同的应用程序和iOS 7.1。 我考虑过两种检测方法: 使设备充当iBeacons并检测范围内的iBeacons 使用CoreBluetooth(就像这里的 Vicinity实现一样)创build一个BLE外设,做广告并扫描外设 看来选项1是不可能的,因为: 当iOS应用程序运行后台(iOS 7.1)时,iOS可能至less需要15分钟才能检测到进入信标区域。 备选scheme2似乎是要走的路,但执行方面有一些困难: iOS似乎在一段时间后(大约15分钟?)更改广告数据包中的外设UUID。 这意味着不能直接从广告广播信号中识别广告装置。 对此,我有以下问题: 有没有其他的方法来实现附近的设备检测我没有考虑? 是否有可能通过广告(或通过其他方式)识别设备,以便选项2可以工作?

在iPhone中logging来自蓝牙耳机的input

我有一个项目,我必须logging来自蓝牙耳机的声音,并使用默认的iPhone扬声器播放。 我搜查了很多,得到了这个代码。 UInt32 allowBluetoothInput = 1; AudioSessionSetProperty ( kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, sizeof (allowBluetoothInput), &allowBluetoothInput ); ————录音机启动和停止的代码———— – (IBAction)Record: (id)sender { UIButton *btn = (UIButton *)sender; if([btn isSelected]) { [audioRecorder stop]; [btn setSelected:NO]; [btn setTitle:@"Start Recording" forState:UIControlStateNormal]; } else { [audioRecorder record]; [btn setSelected:YES]; [btn setTitle:@"Stop Recording" forState:UIControlStateNormal]; } } 在这之后我正在使用avaudiorecorder。 在这里似乎还有其他的东西。 ——–录音机代码——— NSURL *soundFileURL = [NSURL fileURLWithPath:AUDIO_FILE]; […]

从iOS连接到蓝牙设备,没有MFi

我从Stackoverflow和互联网得到的盛传是,除非我使用LE设备,我为iOS应用程序制作的任何蓝牙设备必须通过MFiauthentication。 但是,在MFi常见问题页面上,我发现这一行: …完全依靠标准技术的配件开发商(如低功耗蓝牙或标准蓝牙configuration文件)不需要joinMFi计划。 我的设备将能够使用标准的蓝牙configuration文件传输协议(FTP) 。 现在这听起来像是对我的一些相互矛盾的build议,或者我只是不正确的理解。 因此,提供了上述证据,我只是要问:我可以编写和发布一个iOS应用程序,使用标准的蓝牙configuration文件FTP连接到专有的蓝牙设备,而无需authentication我的设备为MFi? 如果是这样,我需要知道哪些细节,注意事项等?

2个iOS设备之间的蓝牙连接

我正在尝试在iOS 5.0中引入的核心蓝牙框架 。 根据StackOverflow本身的许multithreading( 很多 ): 核心蓝牙框架可用于与具有蓝牙低功耗(4.0)硬件支持的任何硬件进行通信。 如果您正在使用Core蓝牙技术,我们可以忘记Made For iPhone / iPod(MFI)程序。 我有一个iPhone 5,iPhone 4S,谷歌Android Nexus 7与我,我敢肯定,至less有第一个2硬件支持BLE。 我的问题是 那么,我试着在我的iPhone 4S / iPhone 5上给定的代码下面,但它没有扫描,并find附近的iPhone5 / iPhone 4S。 我可以确认,两个设备都已经打开了蓝牙。 didDiscoverPeripheral方法didDiscoverPeripheral永远不会被调用。 可能是什么原因? 我错过了什么吗? 这是我的代码(剥离到一个小testing项目)。 ViewController.h @interface ViewController:UIViewController<CBCentralManagerDelegate, CBPeripheralDelegate{ } @property (strong, nonatomic) CBCentralManager *mCentralManager; @end ViewController.m @implementation ViewController @synthesize mCentralManager; – (void)viewDidLoad{ [super viewDidLoad]; mCentralManager = [[CBCentralManager alloc]initWithDelegate:self […]

重新连接到断开的同伴

我在我的应用程序中使用iOS 7 Multipeer框架,但遇到设备断开连接的问题。 如果我在两个设备(设备A和设备B)中打开应用,则两个设备会自动相互连接。 然而,几秒钟后,设备A从设备B断开。即,首先,连接如下: A —> B A <— B 几秒钟后: A —> B AB 设备A维护它的连接,但设备B得到一个MCSessionStateNotConnected。 这意味着A可以向B发送数据,但是B不能应答。 我试图通过检查设备是否连接,如果不是,重新启动连接使用: [browser invitePeer:peerID toSession:_session withContext:Nil timeout:10]; 但是didChangeStatecallback只是用MCSessionStateNotConnected调用。 奇怪的是,如果我发送应用程序A的背景,然后重新打开它,B重新连接到它,并保持连接。 Multipeer API(和文档)似乎有点稀疏,所以我认为它会工作。 在这种情况下,我应该如何重新连接设备?

万向节烽火台发现

是否有可能使用iOS SDK发现Gimbal信标? 我想使用简单的测距,但我不知道发射机的UUID。

在其他平台上使用iOS GameKit的“蓝牙Bonjour”

我有兴趣通过蓝牙连接到基于iOS的设备。 我可以看到“本地networking”服务是暴露的,但我无法find任何额外的信息。 存储在密钥0x0204下的属性看起来像Bonjour键。 使用哪种协议? 如何使用Linux,Mac或自己的embedded式设备与蓝牙芯片进行通话? 这里是使用蓝牙浏览器在OS X下提取的SDP数据,而iOS设备运行Gameloft的Star营。 { 0x0000 = uint32(1330188565), 0x0200 = uint32(2), 0x0202 = string(004wD7l1A..0|0|0|ivucic-À'), 0x030a = uint32(0), 0x0009 = { { uuid16(11 15), uint16(256) } }, 0x0201 = string(_657o30a6rmst07À), 0x0005 = { uuid16(10 02) }, 0x0100 = string(Local Network), 0x0001 = { uuid16(11 15) }, 0x0203 = string(004wd7l1a..0|0|0|ivucic-_657o30a6rmst07À 0xf000 = uint8(2), 0x0204 […]

初始化AVAudioSession时保持蓝牙的声音

我即将发疯。 我有一个录音应用程序。 我遇到了一个问题,当我打开我的应用程序,如果我在蓝牙设备上听音乐,它会自动路由回到手机内部扬声器。 我希望一切都保持不变。 即使当我开始录音,如果用户正在听蓝牙扬声器上的东西,继续这样做。 用户有耳机? 保持音乐在那里。 只是保持原样。 这是我目前正在初始化我的会议: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth error: nil]; 我允许它播放,录制,与其他人混合,并允许蓝牙,那么为什么它重新路由audio输出回到内部扬声器? 谢谢 5月30日编辑 我设法得到更好的东西,但仍然失去了一些东西。 如果我添加这一行: [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil]; 音乐停留在蓝牙设备,但听起来很可怕。 根据这个答案: https : //stackoverflow.com/a/18541874/517688这是因为 EnableBluetoothInput根据这个影响input和输出。 另外请记住,由于蓝牙input设备的限制,audio将以8000Hz播放 那么在使用蓝牙设备时,没有办法让所有的东西都保持不变而不会扭曲声音?

附近的蓝牙设备使用Swift 3.0

我正在寻找一种方式来以编程方式列出我的设备发现任何附近的蓝牙设备(发现)。 我一直没有find任何有关在Swift 3.0中执行此调用的信息或教程。 本QA文章讨论了如何使用Swift 1.0find这些设备,并在Xcode 6中编译,而不是最新的版本8。 我尽了最大的努力使我的代码进入1.0的3.0语法,但是在运行下面的代码时,在Playground中没有任何东西被返回: import Cocoa import IOBluetooth import PlaygroundSupport class BlueDelegate : IOBluetoothDeviceInquiryDelegate { func deviceInquiryComplete(_ sender: IOBluetoothDeviceInquiry, error: IOReturn, aborted: Bool) { aborted print("called") let devices = sender.foundDevices() for device : Any? in devices! { if let thingy = device as? IOBluetoothDevice { thingy.getAddress() } } } } var delegate […]

如何使用蓝牙经典,而不是勒

关于Dennis Mathews的回答 ,你如何在iOS上指定bluetooth classic而不是LE? Core Blue Framework有不同的api 吗?