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 android-developers+unsubscr...@googlegroups.com.
To post to this group, send email to android-developers@googlegroups.com.
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.

Reply via email to