簡體   English   中英

使用安全的rfcomm套接字拒絕藍牙連接(與不安全一起使用)

[英]Bluetooth connection refused with secure rfcomm socket (works with insecure)

現在我正在創建一個Android應用程序,通過藍牙與一些醫療設備通信,以便在智能手機上顯示檢查結果,我有這個奇怪的問題:

createRfcommSocketToServiceRecord(uuid)工作並將手機連接到Android 2.1 - 3.x(Galaxy SI,Galaxy SII和其他平板電腦)上的設備,但它不適用於android 4.x(Galaxy SIII,Galaxy Trend)。 我收到連接拒絕錯誤。 但是,不安全的連接createInsecureRfcommSocketToServiceRecord(uuid)適用於所有這些版本,當然除了2.1之外,因為在API級別10中引入了不安全的連接。

任何人都知道為什么會這樣發生? 是硬件/驅動程序相關還是我只是做錯了什么。 是的,我必須支持android 2.1。

谷歌用Android 4.2中的不同版本取代了Android的藍牙代碼。 這取消了對L2CAP套接字和其他功能的支持。 這可能是你看到差異的原因。 我在所有版本的Android(2.3及以上版本)上使用createInsurecureRfcommSocket (),它似乎工作正常。 我沒有基於服務記錄進行連接,而是在配對設備列表中搜索特定的藍牙設備名稱,然后在通道1上連接到該地址。

這是代碼的簡化視圖(不顯示try / catches):

 BluetoothDevice btDevice = mBluetoothAdapter.getRemoteDevice(btTargetAddress);
 m = btDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[] { int.class });
 mSocket = (BluetoothSocket)m.invoke(btDevice, 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM