![](/img/trans.png)
[英]Prompted for Bluetooth PIN when connecting to already paired device on Android
[英]Connecting to a already paired Bluetooth device
最近我試圖讓一個配對過程以編程方式工作,我成功了。 但我最近發現我的應用程序的用戶可以連接到幾個“有趣”的設備。 所以我必須提示用戶選擇要連接的設備
所以我必須將用戶連接到已經配對的藍牙設備。 但我的努力都沒有奏效。 我嘗試使用以下命令再次運行配對過程:
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
還有以下內容:
Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);
這是我已經實現的方法,也是將手機與嵌入式藍牙設備配對的唯一有效方法
所以我的問題是:
恐怕我不完全確定你的問題是什么。 是您無法為已配對的藍牙設備創建套接字嗎?
首先,如果設備已經配對,則無需再次運行配對過程。 您只需要創建用於通信的套接字,如果設備無法與之通信,它將失敗。 我最近一直在做一些事情,我使用了以下代碼,這對我來說效果很好:
try {
Method m = device.getClass().getMethod("createRfcommSocket",
new Class[] { int.class });
BluetoothSocket mySocket = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
} catch (<VARIOUS EXCEPTIONS>) {
//Do stuff
}
為了提示用戶 select 是哪個設備,可以通過藍牙適配器查詢所有當前配對的設備,如下:
Set<BluetoothDevice> bondedDevices = BluetoothAdapter
.getDefaultAdapter().getBondedDevices();
最后,可以同時創建到多個設備的連接 - 看看這里: Android 藍牙 API 連接到多個設備
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.