检测iPhone上的蓝牙应答/结束通话button

是否可以在iOS上检测并响应来自HFP蓝牙设备的接听/结束通话button? 有没有人看过这个? 我应该在哪里寻找答案? 我知道如果你注册了设备制造商(MFI)程序,可以访问较低级别的蓝牙,但我希望我不必深入这一点。 我也知道你可以响应AVRCP命令,但我不想使用这个选项。 谁能帮忙?

UIResponder具有-remoteControlReceivedWithEvent:方法,您可以使用该方法从外部设备(可能包括蓝牙耳机)接收事件。 从文档:

远程控制事件起源于外部附件(包括耳机)的命令。 应用程序通过控制呈现给用户的audio或video媒体来响应这些命令。 接收响应者对象应检查事件的子types以确定预期的命令(例如,play(UIEventSubtypeRemoteControlPlay)),然后相应地继续。

要允许远程控制事件的传递,您必须调用UIApplication的beginReceivingRemoteControlEvents方法; 要closures远程控制事件的传递,请调用endReceivingRemoteControlEvents。

目前还不清楚耳机上的接听/挂断button是否与播放/暂停button(例如耳塞遥控器)等效,但这可能值得一试。

可悲的是,开发人员没有可用的蓝牙公共API,因此无法以常规方式获得该访问权限。

在我的研究中,有些人通过“remoteControlReceivedWithEvent”从他们的牙齿装置收到一些事件,但不是所有的事件! 有些没有收到! 很less有人收到他们所有的人!

我也试过核心蓝牙,但它只支持LEB(低能量蓝牙设备)! https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothOverview/CoreBluetoothOverview.html#//apple_ref/doc/uid/TP40013257-CH2-SW1

此外,有些postbuild议可以使用经典的bleutooth,而不是“低能量”: 如何使用蓝牙经典而不是“乐”但它也有限制(post是关于“MFi附件”!MFi是为“为iPhone“?!?!?!)

从上面的post可以看出:“非LE蓝牙设备需要经过MFiauthentication才能与外部附件框架一起使用(它需要使用特定的Apple芯片和专有通信协议),您将无法构build应用程序来访问这个设备,除非它使用更开放的蓝牙LE,或者使用这个芯片作为标准蓝牙,可能有办法通过越狱来做到这一点,但几乎所有我知道的人已经转移到蓝牙LE。 !

更多文章: 从iOS连接到蓝牙设备,没有MFi

问候。