Tag: 蓝牙

如何检测我的苹果设备是否支持蓝牙低功耗

有一个API可以告诉我的应用程序运行的苹果设备(iPad / iPod / iPhone)是否支持蓝牙低功耗(BTLE)。

旧版iOS设备的蓝牙框架

我的问题是围绕iOS的蓝牙技术。 我曾经关注过有关蓝牙低功耗101,新function,基础等方面的WWDC,以及如何使用iOS 5及更高版本中提供的CoreBluetooth框架。 我已经浏览了不同的网站和文档,试图find关于蓝牙2.1和4的更多信息,但是有这么几个。 GameKIt不是一个答案,我正在开发一个应用程序,以使用非iOS设备。 我经历的一些话题: 从iOS连接到蓝牙设备,没有MFi iOS – 如何在我的应用程序中集成蓝牙设备 http://www.bluegiga.com/files/bluegiga/Presentations/BT4_0_for_Apple.pdf 带有较旧蓝牙的蓝牙4.0 IPhone蓝牙连接到非IOS设备 但支持的设备只是4S和最新的iPad … 1)最新的CoreBluetooth框架会在旧设备上失败吗? 2)苹果是否有任何框架BT 2.1或什么? 该怎么办,还有那么多的ipad2和iphone4用户,我不能忽略它们。那么实际使用哪个框架呢? 任何帮助,build议,想法,链接将不胜感激!

iOS:使用蓝牙audio输出(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput)AudioSession

CoreAudio AudioSession框架涉及到几个蓝牙任务,我有几个问题,我希望有人能帮助我解决这些问题,或者至less可以证实我的最新发现。 该用例是一个导航应用程序,想要连接一个支持HFP和A2DP的蓝牙function的无线电。 我已经阅读了整个AudioSession编程指南,但我仍然有一些开放的问题,特别是通过蓝牙audio输出。 蓝牙HFPaudio输出(kAudioSessionOutputRoute_BluetoothHFP)只能在AudioSession的情况下设置kAudioSessionCategory_PlayAndRecord已设置,并且您正在覆盖以下属性:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput。 这是真的? 如果没有,我怎样才能将MediaPlayback会话路由为kAudioSessionOutputRoute_BluetoothHFP路由。 背景模式下的audio输出对于类别kAudioSessionCategory_PlayAndRecord而言是不可能的。 因此,如果我在后台,我无法通过蓝牙HFP路由播放声音。 这是真的? 如果应用程序在后台,有没有办法通过蓝牙HFP协议发送audio? 如果有支持A2DP的设备,我的audio路由将始终自动切换到kAudioSessionOutputRoute_BluetoothA2DP路由。 我怎样才能防止这种路线变化? 另外我怎么能指定我现在想要的输出路线。 使用iOS5,可以通过kAudioSessionProperty_AudioRouteDescription标志查询所有这些路由目的地,但我不知道如何设置它,因为我想拥有它。 是否有可能做到这一点? 我希望你们中的一些人能够帮助我解决这些问题。 这对我对CoreAudio的整体了解,特别是AudioSession框架,确实有帮助。

Android和iPhone之间通过蓝牙文件传输?

我正在考虑开发一个iPhone和Android应用程序,以便他们可以通过蓝牙在彼此之间共享数据。 可能吗? 如果是的话如何? 谢谢你的帮助

iOS核心蓝牙不要求配对

在我最近的项目中,我需要沟通一个硬件(蓝牙低功耗)。我已经实现了所有委托方法的代码。 我能够连接硬件和设备,但我没有得到配对警报(附加屏幕截图)。 为什么不是要求配对? 谢谢。 #import "BTWCentralConnectionManager.h" @implementation BTWCentralConnectionManager @synthesize cbcManager; @synthesize discoveredPeripheral; @synthesize findMeServiceCharacteristic; @synthesize findMeService; @synthesize delegate=_delegate; static NSString *kFindMeServiceUUID=@"1802"; static NSString *kFindMeCharacteristicUUID=@"2A06"; static BTWCentralConnectionManager* connectionManager = nil; +(BTWCentralConnectionManager *)sharedConnectionManager{ @synchronized(self) { if (!connectionManager){ connectionManager=[[self alloc] init]; } return connectionManager; } return nil; } -(void)findMe { Byte code=0x02; if(self.discoveredPeripheral){ [self.discoveredPeripheral writeValue:[NSData dataWithBytes:&code length:1] forCharacteristic:self.findMeServiceCharacteristic […]

目标C到Swift代码转换,似乎无法正确处理在Swift中的字节

我正在研究一个简单的Swift蓝牙心率监视器iOS应用程序。 我发现这个具有客观的C代码的伟大的教程。 我已经将其转换为Swift,并从我的心率监视器获取数据。 我的问题是,我似乎无法正确访问和转换在Swift中的字节数据。 Objective C代码如下: // Instance method to get the heart rate BPM information – (void) getHeartBPMData:(CBCharacteristic *)characteristic error:(NSError *)error { // Get the Heart Rate Monitor BPM NSData *data = [characteristic value]; // 1 const uint8_t *reportData = [data bytes]; uint16_t bpm = 0; if ((reportData[0] & 0x01) == 0) { // […]

如果蓝牙closuresiOS,禁用警告对话框

我的ios应用程序使用蓝牙连接到附件。 如果蓝牙没有启用,会popup一个要求我激活的popup窗口。 我注意到popup窗口出现每次我运行应用程序。 我的问题是,是否可以显示popup一次,即只有在第一次启动后( fitbit应用程序这样做,我也想知道是否有可能改变popup窗口的语言。 我的应用程序是iOS7和iOS6 如果我们不能改变语言,有没有办法来禁用这个popup,那么我将开发我自己的视图(popup)与本地化的系统? 非常感谢你!

IOS Bluetooth LE:无法使用存储的配对数据进行连接

我被困在我的IOS开发中,我需要帮助。 我不是专家,这也许是一个愚蠢的问题。 我正在尝试做什么 我试图将我的应用程序连接到需要配对的蓝牙LE设备。 目前的行为 没有配对设备和我的iPhone应用程序没有问题。 我能够连接,重新连接和读/写特性没有任何问题。 但是,如果设备需要配对 ,我只能在配对popup确认之后第一次读取/写入特征。 下一次,我发现并连接到我的设备的应用程序,但我没有读/写特性数据的权利,因为(我猜)我没有使用配对信息。 最后… 花了几个小时在网上search没有运气这里是我的问题: 如何使用手机中存储的配对数据将我的应用程序从我的iPhone应用程序连接到蓝牙LE设备? 我错过了什么吗? 是否有可能不是IOS问题,因为如果连接设备的手机中存在配对数据,它会自动使用? 有没有与蓝牙LE和IOS的经验,以帮助我? 更新2013-10-27 我已经发现, 如果配对存在 (没有确认popup),那么通过配对authentication之后就不能读取受保护的特性 。 没有保护的特点没有问题! 我不知道为什么发生,但行为是IOS应用程序永远不会收到设备的答案。 所以如果第一次阅读完成后,不会造成问题。 这里是我用来发现评论中的数据阅读特征的代码。 – (void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error; { NSArray *characteristics = [service characteristics]; CBCharacteristic *characteristic; if (peripheral != servicePeripheral) { NSLog(@"Wrong Peripheral.\n"); return ; } if (service != batteryService) […]

iOS – 检查蓝牙是否打开,系统警告popup给用户

此代码可以确定当前的蓝牙状态: CBCentralManager* testBluetooth = [[CBCentralManager alloc] initWithDelegate:nil queue: nil]; switch ([testBluetooth state]) {….} 但是,当[[CBCentralManager alloc] init …]发生时,如果蓝牙closures,系统会popup一个警告给用户。 有没有办法检查蓝牙状态,而不会打扰我的用户?

iOS蓝牙双模式; 将BLE(GATT)同时连接到已连接的BR / EDR(A2DP / HFP)立体声耳机

我正在使用经典的configuration文件(HFP,A2DP,AVRCP)开发带有蓝牙function的立体声耳机,正如人们所期望的伊纳立体声耳机一样。 不过,我想为iOS部署一个远程控制应用程序,并将其同时用于其他经典链接,但是我在devise中使用的双模式芯片组并不像我预期的那样运行; 耳机被设置为外设,让iOS设备充当中心。 因此,外围设备广告其BLE服务(与我的具体的128位UUID),都是好的。 我可以从任何中央浏览外设,但只有当我没有连接经典configuration文件(例如,而不是streamaudio)。 我的设备似乎无法宣传BLE,而与HFP和/或A2DP连接! 不过,我已经看到相同芯片组的BLE中央显示器,扫描并连接到其他BLE外设,同时通过A2DPstream式传输audio。 然而,在该设置中,该设备作为A2DP接收器连接到iPhone,同时通过BLE扫描/连接到作为BLE外围设备的第三单元。 因此,不能将Classic和Smart Bluetooth技术点对点地连接到同一个设备上。 是否存在双模式限制,即在支持/连接到Bluetooth Classicconfiguration文件时不能充当外设? 那种情况下只支持中央模式? 仅供参考,我正在使用CSR的8670芯片组。 UPDATE 新的答案添加。 我的道歉没有澄清/清理我以前的答案,直到现在 – 时间过得真快!