我想将蓝牙与来自另一方的确认配对..但我实现了一个代码,这里没有确认消息发送到另一方..所以现在如何在通过蓝牙配对两个设备之前向其他人发送确认消息。
我使用下面的代码:
private class AcceptThread extends Thread {
// The local server socket
private final BluetoothServerSocket mmServerSocket;
public AcceptThread() {
BluetoothServerSocket tmp = null;
// Create a new listening server socket
try {
tmp = mAdapter
.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
} catch (IOException e) {
Log.e(TAG, "listen() failed", e);
}
mmServerSocket = tmp;
}
private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
public ConnectThread(BluetoothDevice device) {
mmDevice = device;
BluetoothSocket tmp = null;
// Get a BluetoothSocket for a connection with the given
// BluetoothDevice
try {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(TAG, "create() failed", e);
}
mmSocket = tmp;
}
@Override
public void run() {
Log.i(TAG, "BEGIN mConnectThread");
setName("ConnectThread");
// Always cancel discovery because it will slow down a connection
mAdapter.cancelDiscovery();
// Make a connection to the BluetoothSocket
try {
// This is a blocking call and will only return on a
// successful connection or an exception
mmSocket.connect();
} catch (IOException e) {
connectionFailed();
// Close the socket
try {
mmSocket.close();
} catch (IOException e2) {
Log.e(TAG,"unable to close() socket during connection failure",
e2);
}
// Start the service over to restart listening mode
BluetoothChatService.this.start();
return;
}
所以请看我的代码,请告诉我如何在从远程端进行身份验证时配对2台设备......我正在使用api level 7
答案 0 :(得分:1)
只要两个设备未配对,就无法向其他设备发送消息,因为您需要一个BluetoothSocket,除非您拥有设备的MAC地址,否则无法获取。 但配对请求有什么问题?它将仅在第一次显示,然后您始终可以在配对设备中找到该设备(mBluetoothAdapter.getBondedDevices())。
Buuut,如果您绝对有必要摆脱两个部分开头显示的配对请求对话框,那么您可以尝试使用不安全的通道(使用listenUsingInsecureRfcommWithServiceRecord创建服务器套接字,使用createInsecureRfcommSocketToServiceRecord创建客户端套接字) 。这里的问题是,每次需要连接设备时都必须执行扫描,因为设备没有配对。
希望它适合你,祝你好运。