2011-12-08 56 views
0

我正在開發一個應用程序,用於在發送生物識別設備發送數據的請求時使用藍牙從生物識別設備讀取數據,生物識別設備顯示更新其顯示屏幕的響應,但當我爲讀取輸入調用函數時流得到響應函數in_stream.available()返回0.我無法找出問題的根源。我有測試相同的生物識別設備與其他一些應用程序工作正常。 幫助我,如果任何人有關於這個問題的想法。 在此先感謝。在Android中讀取藍牙輸入流

回答

3

請勿使用available()方法。它在大多數實現中被破壞。你應該經常用read()或read(byte [])讀取數據。如果協議讓你知道預期數據的大小(即某些第一個字節告訴後面有多少數據),那麼你可以讀取這些數據量。

如果數據量未知,或者您期望異步數據通訊,那麼您應該管理在單獨線程中寫入/讀取流/來自流的數據。這不僅適用於藍牙,也適用於任何基本的流處理(網絡,文件等)。

+1

哎呀。其他人則說inputstream.read()在Android上被破壞 - 當套接字關閉時它不會釋放 - 所以在調用Android上的讀取之前,您應該始終檢查可用。 – Tom