Android,蓝牙,捕捉来自BT设备的特殊命令



我们如何从我们的应用程序中侦听特殊的BT设备命令,如拨号?现在,我只能听唯一的一个-播放/暂停/开始/结束呼叫按钮(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)。android.intent.action.MEDIA_BUTTON"没有帮助。使用BluetoothSocket的解决方案,BluetoothServerSocket也不会有帮助,因为它需要我们的代码在BT设备端调用。在重拨按钮测试期间,我在日志中看到下一行:

01-20 05:52:30.486 942-1060/com.android。蓝牙E/bt-rfcomm: PORT_DataInd, p_port:0x5526c200, p_data_co_callback is null

看起来好像有什么东西从BT设备发送事件到android设备。但我们如何在应用端捕获它,我们应该使用什么?顺便说一下,我在一些系统应用程序上工作,理论上可以做非常具体的,低级的和系统的事情,所以也许会有一些解决方案。

很遗憾,这是不可能的…

我一直致力于自定义处理BT耳机键,如VOL UP, DOWN,最终ANSWER/DISCONNECT/dial。甚至提出了丰富的问题,但没有一个答案或评论…

经过一些研究(几天,几周…)和挖掘Android源代码,我发现这些按钮正在发送一些AT命令。我还发现了检查这些AT命令的方法,如果系统能够响应/处理它们,那么它就会尝试这样做,并且不会将任何事件传递给任何应用程序/套接字/rfcomm/任何东西…例如,在VOL UP按钮下,我们有一些众所周知的AT命令,系统可以处理它,所以尝试这样做,即使我们已经将音量设置为最大。任何应用程序都不会注意到这个发生了…

顺便说一句。我不认为这个logcat线发布的问题是严格相关的按钮按下(但可能是间接的),但你有bt-rfcomm关键字在那里,所以你可以尝试建立一些RFCOMM连接与蓝牙设备,也许你会得到一些运气在这个话题上…(我个人已经放弃……)

最新更新