List of usage examples for android.bluetooth BluetoothDevice EXTRA_PREVIOUS_BOND_STATE
String EXTRA_PREVIOUS_BOND_STATE
To view the source code for android.bluetooth BluetoothDevice EXTRA_PREVIOUS_BOND_STATE.
Click Source Link
From source file:com.wolkabout.hexiwear.service.BluetoothService.java
@Receiver(actions = BluetoothDevice.ACTION_BOND_STATE_CHANGED) void onBondStateChanged(Intent intent) { final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); final int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1); final int previousBondState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, -1); Log.d(TAG, "Bond state changed for: " + device.getAddress() + " new state: " + bondState + " previous: " + previousBondState);// w w w . ja va 2 s .co m if (bondState == BluetoothDevice.BOND_BONDED) { Log.i(TAG, "Bonded"); createGATT(device); } else if (bondState == BluetoothDevice.BOND_NONE) { device.createBond(); } }
From source file:com.wolkabout.hexiwear.activity.MainActivity.java
@Receiver(actions = BluetoothDevice.ACTION_BOND_STATE_CHANGED) void onBondStateChanged(Intent intent) { final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); final int previousBondState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, -1); final int newBondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1); Log.d(TAG, device.getName() + "(" + device.getAddress() + ") changed state: " + previousBondState + " -> " + newBondState);/*from www . j ava2s. co m*/ adapter.notifyDataSetChanged(); if (newBondState == BluetoothDevice.BOND_BONDED) { onBonded(device); } else if (previousBondState == BluetoothDevice.BOND_BONDING && newBondState == BluetoothDevice.BOND_NONE) { device.createBond(); } }
From source file:is.hello.buruberi.bluetooth.stacks.android.NativeGattPeripheral.java
@NonNull @Override// ww w. j ava 2s . c o m @RequiresPermission(allOf = { Manifest.permission.BLUETOOTH, Manifest.permission.BLUETOOTH_ADMIN, }) public Observable<GattPeripheral> createBond() { return createObservable(new Observable.OnSubscribe<GattPeripheral>() { @Override public void call(final Subscriber<? super GattPeripheral> subscriber) { if (getBondStatus() == BOND_BONDED) { logger.info(GattPeripheral.LOG_TAG, "Device already bonded, skipping."); subscriber.onNext(NativeGattPeripheral.this); subscriber.onCompleted(); return; } final Subscription subscription = createBondReceiver().subscribe(new Subscriber<Intent>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { subscriber.onError(e); } @Override public void onNext(Intent intent) { final int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); final int previousState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.ERROR); logger.info(GattPeripheral.LOG_TAG, "Bond status changed from " + BondException.getBondStateString(previousState) + " to " + BondException.getBondStateString(state)); if (state == BluetoothDevice.BOND_BONDED) { logger.info(LOG_TAG, "Bonding succeeded."); subscriber.onNext(NativeGattPeripheral.this); subscriber.onCompleted(); unsubscribe(); } else if (state == BluetoothDevice.ERROR || state == BOND_NONE && previousState == BOND_CHANGING) { final int reason = intent.getIntExtra(BondException.EXTRA_REASON, BondException.REASON_UNKNOWN_FAILURE); logger.error(LOG_TAG, "Bonding failed for reason " + BondException.getReasonString(reason), null); subscriber.onError(new BondException(reason)); unsubscribe(); } } }); if (!BluetoothDeviceCompat.createBond(bluetoothDevice)) { subscription.unsubscribe(); subscriber.onError(new BondException(BondException.REASON_ANDROID_API_CHANGED)); } } }); }
From source file:is.hello.buruberi.bluetooth.stacks.android.NativeGattPeripheral.java
@NonNull @Override/* www. j a v a 2s . c o m*/ @RequiresPermission(allOf = { Manifest.permission.BLUETOOTH, Manifest.permission.BLUETOOTH_ADMIN, }) public Observable<GattPeripheral> removeBond(final @NonNull OperationTimeout timeout) { return createObservable(new Observable.OnSubscribe<GattPeripheral>() { @Override public void call(final Subscriber<? super GattPeripheral> subscriber) { if (getBondStatus() != BOND_BONDED) { logger.info(GattPeripheral.LOG_TAG, "Device not bonded, skipping."); subscriber.onNext(NativeGattPeripheral.this); subscriber.onCompleted(); return; } final Subscription subscription = createBondReceiver().subscribe(new Subscriber<Intent>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { subscriber.onError(e); } @Override public void onNext(Intent intent) { timeout.reschedule(); final int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); final int previousState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.ERROR); logger.info(GattPeripheral.LOG_TAG, "Bond status changed from " + BondException.getBondStateString(previousState) + " to " + BondException.getBondStateString(state)); if (state == BluetoothDevice.BOND_NONE) { logger.info(LOG_TAG, "Removing bond succeeded."); timeout.unschedule(); subscriber.onNext(NativeGattPeripheral.this); subscriber.onCompleted(); unsubscribe(); } else if (state == BluetoothDevice.ERROR) { timeout.unschedule(); final int reason = intent.getIntExtra(BondException.EXTRA_REASON, BondException.REASON_UNKNOWN_FAILURE); logger.error(LOG_TAG, "Removing bond failed for reason " + BondException.getReasonString(reason), null); subscriber.onError(new BondException(reason)); unsubscribe(); } } }); timeout.setTimeoutAction(new Action0() { @Override public void call() { subscription.unsubscribe(); // This can happen in Lollipop if (getBondStatus() == BOND_NONE) { subscriber.onNext(NativeGattPeripheral.this); subscriber.onCompleted(); } else { subscriber.onError(new OperationTimeoutException(Operation.REMOVE_BOND)); } } }, stack.getScheduler()); if (!BluetoothDeviceCompat.removeBond(bluetoothDevice)) { subscription.unsubscribe(); subscriber.onError(new BondException(BondException.REASON_ANDROID_API_CHANGED)); } else { timeout.schedule(); } } }); }