Hello,
I'm working on a project in android that uses Bluetooth low energy (BLE).
I have a DeviceScanFragment that shows a list of all BLE devices. When I
select a device to connect, it should go to another fragment (
ScanProfessionalFingerprintFragment ), start the BluetoothLeService and
connect.
The problem is that sometimes it doesn't connect. The BluetoothGattCallback
on the BluetoothLeService receives status 133.
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback()
{
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int
newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
Log.i(TAG, "Connected to GATT server.");
// Attempts to discover services after successful connection.
Log.i(TAG, "Attempting to start service discovery:" +
mBluetoothGatt.discoverServices());
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
Log.i(TAG, "Disconnected from GATT server.");
broadcastUpdate(intentAction);
}
}
After that I receive ACTION_GATT_DISCONNECTED in the BroadcastReceiver on
the ScanProfessionalFingerprintFragment and it doesn't connects.
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
mConnected = true;
updateConnectionState(R.string.connected, mConnected);
getActivity().invalidateOptionsMenu();
} else if (BluetoothLeService.ACTION_GATT_DISCONNECTED.equals(action)) {
mConnected = false;
updateConnectionState(R.string.disconnected, mConnected);
getActivity().invalidateOptionsMenu();
} else if
(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.equals(action)) {
// Show all the supported services and characteristics on the user
interface.
displayGattServices(mBluetoothLeService.getSupportedGattServices());
if(mGattCharacteristics != null && mGattCharacteristics.get(0) !=
null && mGattCharacteristics.get(0).get(0) != null) {
mBluetoothLeService.writeCharacteristic(
prepareCharacteristic(), Constants.REQUEST_CONNECTION_CODE_1);
mBluetoothLeService.readCharacteristic(
prepareCharacteristic());
}
} else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)) {
displayData( intent.getBooleanExtra("receivedProfessional", false));
}
}
};
What could it be?
Thanks,
--
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/android-developers/4814b4a4-dc4d-43bb-87e5-a46f27a8dcb8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.