2011-12-07 36 views
0

我要檢查的BluetoothSocket是否是開放的操作或不..... 這裏是我做的:安卓的BluetoothSocket和InputStream.available()

首先,我得到一個InputStream我BluetoothSocket,我想用InputStream執行一些操作,如果發生IOException,我的程序可以確定套接字已斷開.....並且在確認套接字已連接後,我想從中讀取一些數據。

爲確保我打電話給available(),默認情況下返回0或多個字節....如果返回值爲0,則讀取操作會拋出IOException。

這是我的問題。

  1. available()是否阻止I/O調用或異步?

  2. 只有當我連接時從設備輸入一些輸入時,返回值> 0,但情況並非總是如此。如果有0個可用字節,我是否可以讀取任何錯誤?如何避免這種情況?

回答

0

首先你必須連接藍牙服務器。使用connect()進行連接,此方法將阻塞,直到建立連接或連接失敗(導致異常)。所以一定要在單獨的線程上運行它。

public void run() { 
    try { 

     socket.connect(); 

        InputStream in = socket.getInputStream(); 
        //socket connected, inputStream can be used 
        //Bluetooth 
    } catch (IOException e) { 
     //Socket is refused connection with the server. 
    } 
} 
+0

檢查的問題再次..........嘗試閱讀和理解正確...... – Prasham

+2

如果您socket.connect()成功藍牙插座是準備好讀和發送字節。要讀取字節你必須從服務器發送一些字節,我不認爲你在做什麼。如果您在不發送任何可用字節()的情況下調用available()將返回0.發佈您在此獲得的異常。 – Harminder