我正在尝试编写一个通过蓝牙连接到另一台设备,通过新的BluetoothHidDevice
将自己标识为键盘的应用程序,然后将文本和/或单个字符作为键盘输入发送到目标设备。 / p>
到目前为止,除了建立从华为P10到Windows 10笔记本电脑的蓝牙连接之外,我一切正常。当我在接收端用Galaxy S8 +测试另一台Android设备时,它似乎工作正常,当我尝试建立连接时,P10被正确检测为物理键盘,并且可以将键盘输入发送到S8 + < / p>
我还尝试了两台不同的笔记本电脑,一台带有内置蓝牙适配器,另一台带有外部USB适配器,在两种情况下都无法建立连接。
我的代码主要基于Google的https://github.com/ginkage/wearmouse,我在寻找自己问题的解决方案时发现了另一个question。
问题是调用BluetoothHidDevice#connect
后没有建立连接,该连接按预期返回true
,但似乎只是超时。
观察日志时,我只看到状态在1(连接)和0(断开)之间切换:
D/BluetoothHidDevCallback: onConnectionStateChanged: device=[redacted MAC] state=1
D/BluetoothHidDevCallback: onConnectionStateChanged: device=[redacted MAC] state=0
...
我设置了一个android studio项目,您只需要在TARGET_DEVICE_NAME
内将MainActivity.java
更改为目标设备名称,它就应该立即可用(需要Android 9 Pie):{{ 3}}
您的设备需要预先配对,因为它将检查您配对的设备中的TARGET_DEVICE_NAME
并在您按下按钮时尝试连接到它。如果连接成功,则按钮会将字符串"TestMessage"
发送到目标设备。
如果您自己运行应用程序并在Logcat中跟踪BluetoothHidDevCallback
,则应该看到它尝试连接(状态= 1),断开连接(状态= 0)并重复。它应该更改为状态2,它表示已连接,这是我希望像尝试P10-> S8 +连接时所做的那样。
如果您没有Windows PC,请随时尝试连接到macOS设备,因为我想知道这是否仅是Windows问题。