我已經編寫了一個連接到藍牙鍵盤的Android應用程序。它通過BT套接字連接到鍵盤並獲取套接字的輸入流。如何與藍牙鍵盤通話?
InputStream inStrm = socket.getInputStream();
接下來我嘗試讀取輸入流,但它說沒有可用的字節。
int nBytesAvail = inStrm.available(); // always gives me 0
或者
int dataByte = inStrm.read(); // always generates IOException
異常說:軟件導致連接中止
如果我嘗試寫流,我得到另一個異常:運輸端點沒有連接。
有兩件事情可以發生。
我的第一個擔心的是,沒有要講給鍵盤HID協議,直到我說出正確的咒語也不會泄露自己的祕密。那是對的嗎?還是應該由BT套接字堆棧自動照顧?套接字流似乎是一個標準的串行流,我不確定這是否正確。我的第二個擔心是,因爲這是一個Galaxy Tab,我的問題可能只是三星已經刪除了該操作系統的特定部分(但是我仍然會從套接字連接中獲得有效的輸入流嗎?) 。據廣泛報道,雖然BT文件傳輸確實工作正常,但美國版本的Tab無法使用標準Android BT實用程序連接到任何BT HID。
我想第三種可能性是,我只是在發生鍵盤輸入時丟失了鍵盤。我不知道從HID傳入的Java數據是如何緩衝Java的,但是如果套接字連接成功,數據應該出現在輸入流中,不是嗎?
我不願意把更多的時間放在這裏,以防萬一我以完全錯誤的方式去討論它(見#1),或者它註定要失敗(見#2)。
你也可以使用反射和java代碼,就像我在上面發佈的例子。 – radhoo 2012-01-12 20:29:56