2013-01-22 178 views
2

我在做什麼: 我正在研究一個應用程序,該應用程序將使用SPP使用藍牙從生物識別設備獲取數據。爲此,我有一些命令(以字節和HEX格式)和生物識別設備製造商提供的步驟。Android藍牙插座

我的問題: 我必須按照2個步驟獲取數據,即一個接一個地發送兩個命令。生物識別設備在接收到第二個命令時返回數據。我已成功建立與設備的連接並執行第一條命令,但是當我向設備發送第二條命令時,應用程序卡住了,並且經過一段時間生物特徵識別設備終止連接並收到IO異常:套接字已關閉,不明白第二條命令上發生了什麼。

我做: 我已經在Android SDK中提供的樣品例如Bluetooth Chat根據我的要求,即我送這個函數命令使用BluetoothChatService.class和修改ConnectThread線程的run函數。並使用「00001101-0000-1000-8000-00805F9B34FB」UUID。用於連接到插座我曾嘗試以下代碼:

if (Build.VERSION.SDK_INT > 9) { 
       tmp = device.createInsecureRfcommSocketToServiceRecord(MY_UUID); 
      } 
      else { 
       tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
      } 

而且

Method m = device.getClass().getMethod("createRfcommSocket", 
        new Class[] { int.class }); 
      tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 

而且

tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 

任何一個知道我在哪裏錯了?

預先感謝您。 但其中一個可以解決我的問題。

編輯 我已經解決了這個問題。這是方法我是誰建立socket連接

if (Build.VERSION.SDK_INT < 10){ 
Method m = device.getClass().getMethod("createRfcommSocket",new Class[] { int.class }); 
tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 

}

其他{ TMP = device.createRfcommSocketToServiceRecord(MY_UUID); }

回答

0

這可能是生物識別設備要求安全嗎? 如果沒有執行藍牙安全過程,它可能會斷開連接。 幾個問題: 您正在使用哪個Android版本? 您是否知道設備的SPP連接要求(安全要求)? 還分享藍牙logcat跟蹤確認問題

+1

我有檢查提供的文件,它沒有指定和安全要求。我正在測試這個HTC慾望,HTC慾望高清和三星Galaxy Tab 10.1。 –