【问题标题】:Detect Bluetooth answer/end-call button on iPhone检测 iPhone 上的蓝牙接听/结束通话按钮
【发布时间】:2011-11-04 19:52:16
【问题描述】:

是否可以检测并响应来自 iOS 上的 HFP 蓝牙设备的接听/挂断按钮按下?有人见过这个吗?我应该在哪里寻找答案?我知道如果您注册设备制造商 (MFI) 计划,可以访问较低级别的蓝牙,但我希望我不必深入研究。我也知道您可以响应 AVRCP 命令,但我不想使用此选项。有人可以帮忙吗?

【问题讨论】:

  • Cliff:你能找到什么吗?
  • 不幸的是,没有。我尝试了许多不同的方法,但都没有可靠的方法。我仍然想了解有关可行选项的更多信息。
  • Cliff:到目前为止运气好吗?我需要同样的东西。到目前为止,我发现的唯一选项是(-remoteControlReceivedWithEvent:如下面的答案),它仅适用于播放/停止/暂停/等。事件。我有一个蓝牙扬声器,它有播放/暂停/跳过/音量,最后是通话按钮。我只能拦截播放/暂停/跳过事件:(

标签: iphone ios bluetooth mfi


【解决方案1】:

遗憾的是,没有可供开发人员使用的蓝牙公共 API,因此无法以传统方式获得该访问权限。

【讨论】:

    【解决方案2】:

    UIResponder 有一个-remoteControlReceivedWithEvent: 方法,您可以使用它来接收来自外部设备的事件,可能包括蓝牙耳机。来自文档:

    远程控制事件源自外部配件(包括耳机)的命令。应用程序通过控制呈现给用户的音频或视频媒体来响应这些命令。接收响应者对象应检查事件的子类型以确定预期的命令——例如,播放 (UIEventSubtypeRemoteControlPlay)——然后进行相应的处理。

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

    目前尚不清楚耳机上的接听/结束按钮是否等同于耳塞遥控器上的播放/暂停按钮,但这可能值得一试。

    【讨论】:

      【解决方案3】:

      根据我的研究,有些人通过“remoteControlReceivedWithEvent”从他们的蓝牙设备收到了一些事件,但不是全部!有些人没有收到!而且很少有人会全部收到!

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

      此外,一些帖子表明可以使用经典蓝牙而不是“低能量”: How to use bluetooth classic instead of le 但它也有局限性(这篇文章是关于“MFi 配件”的!MFi 是为“iphone 制造”吗?!?!?!)

      来自上面的帖子: “非 LE 蓝牙设备需要经过 MFi 批准才能与外部附件框架一起使用(它需要使用特定的 Apple 芯片和专有通信协议)。您将无法构建应用程序来访问此设备“除非它使用更开放的蓝牙 LE,或者在其中包含用于标准蓝牙的芯片。可能有办法通过越狱来做到这一点,但我认识的几乎每个人都已经转向了蓝牙 LE。” !

      更多帖子:Connecting to a Bluetooth device from iOS, no MFi

      问候。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        相关资源
        最近更新 更多