我已经编写了一个可连接蓝牙键盘的Android应用。它通过BT套接字连接到键盘,并获取套接字的输入流。
InputStream inStrm = socket.getInputStream();
接下来,我尝试读取输入流,但是它说没有字节可用。
int nBytesAvail = inStrm.available(); // always gives me 0
或者
int dataByte = inStrm.read(); // always generates IOException
异常显示:软件导致连接中断
如果尝试写入流,则会出现另一个异常:传输端点未连接。
可能发生两件事之一。
我想第三种可能性是,我只是在击键时就错过了它们。我不知道从HID传入的BT数据对Java有多少缓冲作用,但是如果建立了套接字连接,数据应该出现在输入流中,不是吗?
如果我完全以错误的方式进行操作(请参阅#1),或者注定要失败(请参阅#2),我不愿意花更多时间。
最佳答案
所有普通的蓝牙键盘都实现HID配置文件,该配置文件需要L2CAP连接。到目前为止,Android仅提供使用RFCOMM连接的功能。您将需要使用 native 开发套件,并使用C编写键盘代码以使用bluez来实现您的目标。看看使用Nintendo WiiMote的应用程序。 WiiMote还实现了HID配置文件。