好吧,我正在开发一个有趣的项目,这个项目有一个障碍,我需要为我的iOS应用程序启用蓝牙音频支持.
我所处的障碍是,我根本无法得到连接的蓝牙音频设备的列表.即使我的iPhone 5S识别我的耳机(一个〜3 – 4年LG HBM-230,准确),并播放音频通过它的电话,BOTH外部配件和CoreBluetooth给我没有任何有用的,当我查询两者.
我把自己的代码放在问题&我发现CoreBluetooth和External Accessory框架的答案.
当我的代码只是试图为“蓝牙设备”显示和连接的任何蓝牙设备“scanForperipheralsWithServices:nil”时,下面的代码根本就没有出现在控制台中的“CBCentralManagerStatePoweredOn”消息之外.
而在我的代码中的这一行(有一个有效的EAAccessoryManager实例)
NSArray * connectedDevices = [self.eAAccessoryManager connectedAccessories];
也返回一个零数组.
我该怎么做错了?
B.T.W.,I’ve made this code available as a GitHub project.
@implementation BluetoothManager + (BluetoothManager *)sharedInstance { static dispatch_once_t pred = 0; __strong static id _bluetoothMGR = nil; dispatch_once(&pred,^{ _bluetoothMGR = [[BluetoothManager alloc] init]; }); return _bluetoothMGR; } - (id)init { self = [super init]; if(self) { dispatch_queue_t centralQueue = dispatch_queue_create("com.yo.mycentral",disPATCH_QUEUE_SERIAL); // whether we try this on a queue of "nil" (the main queue) or this separate thread,still not getting results self.cbManager = [[CBCentralManager alloc] initWithDelegate:self queue:centralQueue options:nil]; } return self; } // this would hit.... if I instantiated this in a storyboard of XIB file - (void)awakeFromNib { if(!self.cbManager) self.cbManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:nil]; } - (void)centralManager:(CBCentralManager *)central diddiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { NSLog(@"hey I found %@",[advertisementData description]); } - (void)centralManager:(CBCentralManager *)central didRetrieveConnectedperipherals:(NSArray *)peripherals { NSLog( @"I retrieved CONNECTED peripherals"); } -(void)centralManager:(CBCentralManager *)central didRetrieveperipherals:(NSArray *)peripherals{ NSLog(@"This is it!"); } - (void)centralManagerDidUpdateState:(CBCentralManager *)central{ Nsstring *messtoshow; switch (central.state) { case CBCentralManagerStateUnkNown: { messtoshow=@"State unkNown,update imminent."; break; } case CBCentralManagerStateResetting: { messtoshow=@"The connection with the system service was momentarily lost,update imminent."; break; } case CBCentralManagerStateUnsupported: { messtoshow=@"The platform doesn't support Bluetooth Low Energy"; break; } case CBCentralManagerStateUnauthorized: { messtoshow=@"The app is not authorized to use Bluetooth Low Energy"; break; } case CBCentralManagerStatePoweredOff: { messtoshow=@"Bluetooth is currently powered off."; break; } case CBCentralManagerStatePoweredOn: { messtoshow=@"Bluetooth is currently powered on and available to use."; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],CBCentralManagerScanoptionAllowDuplicatesKey,nil]; [_cbManager scanForperipheralsWithServices:nil options:options]; break; } } NSLog(@"%@",messtoshow); } @end
解决方法
首先,您将需要配置应用程序音频会话以允许支持音频的蓝牙连接.你可以这样做,例如你的应用程序委托 – (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。