如何在Android Pie中使用Bluetooth HID设备配置文件?

时间:2018-11-30 09:54:22

标签: android android-bluetooth hid

我正在尝试使用Bluetooth HID设备配置文件服务编写用于Android P的应用程序,以用作Bluetooth键盘。根据{{​​3}},我应该使用方法BluetoothAdapter.getProfileProxy(Context, BluetoothProfile.ServiceListener, int)来获取BluetoothHidDevice代理对象。

在我的Android Pie设备(诺基亚7 plus)上调试期间,服务监听器从未被调用(onServiceConnected),并且在Logcat中收到以下错误:

Could not bind to Bluetooth HID Device Service with Intent { act=android.bluetooth.IBluetoothHidDevice }

如果我将上述通话中的最后一个参数从 HID_DEVICE 更改为其他蓝牙配置文件,例如 A2DP ,服务侦听器将收到回调onServiceConnected,并且不会显示错误。

  1. 有人在Android Pie上创建了有效的HID_DEVICE吗?
  2. 可以使用BluetoothHidDevice在Android上创建隐藏设备 派电话?
  3. 有什么我可以看的工作代码吗?
  4. 是否有某些功能(getPackageManager().hasSystemFeature) 我的手机不见了吗?
  5. 上面的错误可能是什么原因?

任何提示将不胜感激:)

这似乎是第三方问题。诺基亚未在Android Pie中启用隐藏配置文件。我还尝试了Mototorola G7播放,它也被禁用了,我想现在该是像素了……

3 个答案:

答案 0 :(得分:0)

您可以看一下 https://github.com/kshoji/BLE-HID-Peripheral-for-Android。 我因此可以构建一个蓝牙键盘。

答案 1 :(得分:0)

当前在像素上启用了HID设备配置文件。据我所知,诺基亚,moto(如上所述)以及One Plus 5T和6不支持此配置文件。

我们创建了一个应用程序,您可以通过此HID设备配置文件将手机用作蓝牙鼠标和键盘。 https://play.google.com/store/apps/details?id=com.github.roarappstudio.btkontroller

该代码在https://github.com/raghavk92/Kontroller上开源。如果有人想帮助改进或为代码做贡献,那就欢迎他们。

您还可以通过应用https://play.google.com/store/apps/details?id=com.rkaneapplabs.bluetooth_hid.bluetoothproxy检查手机是否支持Bluetooth HID设备配置文件,并让设备制造商知道他们是否不支持您的设备,因为它是android pie的一部分,应该得到支持。

答案 2 :(得分:0)

这里有一个半官方的示例代码:https://github.com/ginkage/wearmouse —实际上是由Google自己提供的(请参阅https://opensource.google.com/projects/wearmouse)。

它旨在用于Wear OS手表,但也具有您在手机上使用它所需的一切:配置文件的代理类,回调类,HID描述符示例,QoS,用于电池电量查询等情况的回调来自主机等。

该应用程序本身可在Google Play上找到:https://play.google.com/store/apps/details?id=com.ginkage.wearmouse(顺便说一句,该应用程序也支持Android 8,但仅适用于手表,不适用于手机)。