2013-07-30 61 views
1

我想通過藍牙從我的Nexus S發送一個字符串到另一個Android設備。 代碼如下:例外通過藍牙發送文本字符串

public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) 
    item.getMenuInfo(); 
    if(item.getItemId() == 0) 
    { 
    BluetoothDevice selDev = pairedDevices.get(info.position); 
    TelephonyManager tman = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    byte[] toSend = "a text".getBytes(); 
      try 
      { 
       BluetoothSocket socket = selDev.createInsecureRfcommSocketToServiceRecord(
         UUID.fromString("00001105-0000-1000-8000-00805F9B34FB")); 
       OutputStream out = socket.getOutputStream(); 
       out.write(toSend); 

       return true; 
      } 
      catch (Exception ex) { 
       ex.printStackTrace(); 
       return false; 
      } 
    } 
    return true; 
} 

,但我總是得到這個IO異常:產生java.io.IOException:運輸端點沒有連接

有什麼不對?

+0

你有沒有第一次與其他藍牙設備連接? –

+0

我有一個列表視圖與配對/有界的設備,比我必須發送一個字符串到其中之一 –

+0

你需要調用'selDev .connect()'這實際上創建了套接字連接。但是我的問題是在那裏失敗了,我不知道爲什麼。 – ppumkin

回答

0

我發現使用安全連接解決了我的問題。但在你的情況下,你需要撥打connect()來啓動連接。

//Just in case cancel any discovery as this slows everything down 
selDev.CancelDiscovery(); 

//Try the secure method too. I found that worked for me. 
BluetoothSocket socket = selDev.createInsecureRfcommSocketToServiceRecord(
         UUID.fromString("00001105-0000-1000-8000-00805F9B34FB")); 

socket.Connect(); 

OutputStream out = socket.getOutputStream();