Android Bluetooth Accept() / Connect() With Already Paired Devices
I am having trouble connecting two Android devices via Bluetooth, which happens only when they have been paired before. I am running one as the server and the other as the client.
Solution 1:
In the client when I attempt to make a connection to a bonded device, I simply called it on the BluetoothDevice I found in BluetoothAdapter.getBondedDevices()
. This does NOT work.
In order to properly establish the Bluetooth connection, I had to do something similar to the pseudocode below:
BluetoothDevicebonded= a device from BluetoothAdapter.getBondedDevices();
BluetoothDeviceactual= BluetoothAdapter.getRemoteDevice(bonded.getAddress());
BluetoothSocketsocket= actual.createRfcommSocketToServiceRecord(SOME_UUID);
socket.connect();
I arrived this answer by following exactly the Bluetooth chat example: Bluetooth Chat Service. Why it doesn't work on the device from getBondedDevices()
is beyond me. Maybe someone with more intimate knowledge of Android can answer that.
Solution 2:
Check out this example: http://developer.android.com/resources/samples/BluetoothChat/index.html.
this could explain how the bluetooth device connected and trans informations.
Solution 3:
privatestatic BluetoothSocket mSocket;
BluetoothDeviceselectDevice=null;
voidconnectDevice(){
if(mSocket == null) {
//Log.d(TAG, "Socket is null");
UUID SPP_UUID = UUID
.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");
Set<BluetoothDevice> bondedDevices = BluetoothAdapter
.getDefaultAdapter().getBondedDevices();
//Log.d(TAG, "Size: " + bondedDevices.size());/**
* Select your divice form paired devices
*/for (BluetoothDevice bluetoothDevice : bondedDevices) {
selectDevice = bluetoothDevice;
//Log.d(TAG, bluetoothDevice.getName()+" "+bluetoothDevice.getAddress());
}
if(selectDevice.getBondState() == selectDevice.BOND_BONDED) {
//Log.d(TAG, selectDevice.getName());try {
mSocket = selectDevice.createInsecureRfcommSocketToServiceRecord(SPP_UUID);
} catch (IOException e1) {
// TODO Auto-generated catch block//Log.d(TAG, "socket not created");
e1.printStackTrace();
}
try {
mSocket.connect();
} catch (IOException e) {
try {
mSocket.close();
//Log.d(TAG, "Cannot connect");
} catch (IOException e1) {
//Log.d(TAG, "Socket not closed");
e1.printStackTrace();
}
}
}
Post a Comment for "Android Bluetooth Accept() / Connect() With Already Paired Devices"