好吧,我正在开发一个有趣的项目,我需要为我的iOS应用程序启用蓝牙音频支持.
我遇到的障碍是我甚至无法开始获得连接的蓝牙音频设备列表.即使我的iPhone 5S识别我的耳机(准确地说是一个~3 - 4岁的LG HBM-230)并通过它播放音频进行电话呼叫,但当我查询两者时,BOTH External Accessory和CoreBluetooth都没有给我任何帮助.
我将我自己的代码基于我发现的CoreBluetooth和External Accessory框架的问题和答案.
当我的代码只是试图" scanForPeripheralsWithServices:nil" 设置 - >蓝牙说的任何蓝牙设备可见并连接时,下面的代码只是CBCentralManagerStatePoweredOn在控制台中的" "消息之外不会出现一次命中.
我的代码中的这一行(带有有效的EAAccessoryManager实例)
NSArray * connectedDevices = [self.eAAccessoryManager connectedAccessories];
Run Code Online (Sandbox Code Playgroud)
还带有一个nil数组.
我能做错什么?
顺便说一下,我已将此代码作为GitHub项目提供.
@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 …Run Code Online (Sandbox Code Playgroud) 我不能让这两个通知EAAccessoryDidConnectNotification和EAAccessoryDidDisconnectNotification连接闪电大骨节病和大骨节病灵动与我的应用程序后.但它适用于iOS9.3,我的代码如下,
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
Run Code Online (Sandbox Code Playgroud)
原因是什么?
PS:我在日志中收到以下消息.找不到" com.apple.private.externalaccessory.showallaccessories "权利
从Xcode 7.3升级到Xcode 8后,我收到一个错误:
供应配置文件"iOS Team Provisioning Profile:*"不支持无线附件配置功能.
我可以知道如何解决这个问题吗?
我正在研究一个iOS应用程序的开发,该应用程序将使用iOS支持的蓝牙配置文件与蓝牙经典设备进行通信
据我了解,这应该可以使用外部附件框架,不应该要求参与MFi计划.从MFi常见问题解答:
什么类型的配件和技术不属于MFi计划?
不使用上述任何MFi许可技术的附件不属于MFi计划.例如:
到现在为止还挺好.在外部附件框架文档介绍说,(强调):
外部附件框架支持通过30针底座连接器或使用蓝牙无线连接与连接到基于iOS的设备的外部硬件.支持外部附件的应用程序必须确保正确配置其Info.plist文件.具体而言,您必须包含UISupportedExternalAccessoryProtocols密钥才能声明应用程序支持的特定硬件协议.
上面提到的"特定硬件协议"的值在哪里记录?我假设这是指蓝牙配置文件?
FWIW,我已下载并试图运行Apple的EADemo应用程序.它包含用于UISupportedExternalAccessoryProtocols密钥的值com.apple.p1和com.apple.p2.当我在第4代iPod Touch/iOS8.1.3上运行EADemo应用程序时,它找不到任何BT设备.它应该找到它所连接的Jawbone扬声器.
为了简化,我还创建了一个非常小的示例应用程序来监听EAAccessoryDidConnectNotification通知:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
}
- (void) accessoryDidConnect:(NSNotification *)notification {
EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey];
NSLog(@"didConnect: %@", connectedAccessory.name);
}
Run Code Online (Sandbox Code Playgroud)
当我在iPod Touch上运行代码时,不会收到任何通知.应用程序运行时.我关闭了Jawbone扬声器,然后开启连接.(我可以通过查看设置 - >蓝牙确认它确实连接).
我已将UISupportedExternalAccessoryProtocols键添加到app plist并将values数组保留为空并添加了com.apple.p1和com.apple.p2(如EADemo应用程序中所示).
关于我缺少的任何想法?如何使用iOS应用程序与蓝牙经典设备进行通信?
我面临着与常规蓝牙相关的2个问题.这是我的代码.
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(showElements) userInfo:nil repeats:NO];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(accessoryConnected:) name:EAAccessoryDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(accessoryDisconnected:) name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager]registerForLocalNotifications];
}
-(void)showElements{
[[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:nil completion:^(NSError *error) {
if (error) {
NSLog(@"error :%@", error);
}
else{
NSLog(@"Its Working");
}
}];
}
- (void)accessoryConnected:(NSNotification *)notification
{
EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey];
}
Run Code Online (Sandbox Code Playgroud)
1)连接建立后我收到此错误.
error :Error Domain=EABluetoothAccessoryPickerErrorDomain Code=1 "(null)"
Run Code Online (Sandbox Code Playgroud)
这是完整的日志: -
BTM: attaching to BTServer
BTM: setting pairing enabled
BTM: found device "ESGAA0010" 00:04:3E:95:BF:82
BTM: disabling device …Run Code Online (Sandbox Code Playgroud) Apple提供以下两个框架,用于与iOS附近的蓝牙设备进行通信.
核心蓝牙框架提供iOS和Mac应用程序与配备蓝牙低功耗无线技术的设备进行通信所需的类.
外部附件框架支持通过Apple Lightning或30针连接器与无线使用蓝牙连接到基于iOS设备的外部硬件.
我以前使用CoreBluetooth框架成功地与蓝牙设备通信.但是,我现在正在尝试与蓝牙打印机通信,并且它不会显示在扫描附近的设备中.使用ExternalAccessory框架,它确实如此.
就与蓝牙设备进行通信而言,这两个框架有何不同?为什么不同的蓝牙设备需要使用不同的框架?
我需要在Android上使用PhoneGap与外部设备通信.
它通过蓝牙与PhoneGap插件一起工作.现在我想通过USB端口进行通信.
通过使用Android设备的USB主机功能,PhoneGap可以访问外部设备吗?
任何现有的PhoneGap/Cordova插件?
任何例子?
我很难找到类似的东西证明我的概念......
我需要将配对的蓝牙设备(iOS设备)列表与iOS设置中"蓝牙"部分的列表相同,如下图所示.
可能吗?
您是否看过任何使用此类功能的应用程序?
我尝试了以下:
link1,link2,link3,link4,link5,link6
但没有什么能帮我清楚地得到确切的清单.我希望应该有办法实现这一目标.请分享您的经验,帮助我.谢谢.
external-accessory ios core-bluetooth bluetooth-lowenergy ios-bluetooth
我正在处理项目的外部配件和MFI,并有这个问题:
将iOS设备连接到MFI硬件后,可以识别哪些第三方硬件属性(如果有)?具体来说,我正在寻找一种通用的方法来确定设备类或功能,而不是必须检查特定的制造商和设备名称,类似于Android可以做到的方式(见下文).这可能吗?
http://developer.android.com/reference/android/bluetooth/BluetoothClass.Device.html
最终目标:连接到音频基座时切换布尔值; 忽略其他事件.我不确定iOS可以获得多么精细.iOS可以说出音频底座 和Golf Putter App Cradle之间的区别 吗?MFi是否可以深入了解设备的功能?
我将针对iOS 4.2+.