diff options
author | Prerepa Viswanadham <dham@google.com> | 2014-08-07 09:44:20 -0700 |
---|---|---|
committer | Prerepa Viswanadham <dham@google.com> | 2014-08-07 19:51:59 +0000 |
commit | d5324e4183c97ae7271b6eda4204d9f0dc003023 (patch) | |
tree | ac70c881e87a83edf2a468b6e2ba9ed3be895a47 /core/java/android/bluetooth | |
parent | bcc48b6cb09fda744b64d15b02f6e5c5fcfc9b7d (diff) | |
download | frameworks_base-d5324e4183c97ae7271b6eda4204d9f0dc003023.zip frameworks_base-d5324e4183c97ae7271b6eda4204d9f0dc003023.tar.gz frameworks_base-d5324e4183c97ae7271b6eda4204d9f0dc003023.tar.bz2 |
OnLost/OnFound integration - onfound match is done in framework,
whereas hw signal is used to report onlost.
Bug 16733710
Change-Id: I7b177b7afd730341c336818857436c095735b53b
Diffstat (limited to 'core/java/android/bluetooth')
3 files changed, 20 insertions, 17 deletions
diff --git a/core/java/android/bluetooth/BluetoothGattCallbackWrapper.java b/core/java/android/bluetooth/BluetoothGattCallbackWrapper.java index 0eb9d21..da992f5 100644 --- a/core/java/android/bluetooth/BluetoothGattCallbackWrapper.java +++ b/core/java/android/bluetooth/BluetoothGattCallbackWrapper.java @@ -124,8 +124,7 @@ public class BluetoothGattCallbackWrapper extends IBluetoothGattCallback.Stub { } @Override - public void onFoundOrLost(boolean onFound, String address, int rssi, byte[] advData) - throws RemoteException { + public void onFoundOrLost(boolean onFound, ScanResult scanResult) throws RemoteException { } } diff --git a/core/java/android/bluetooth/IBluetoothGattCallback.aidl b/core/java/android/bluetooth/IBluetoothGattCallback.aidl index f14cce0..00b6b1b 100644 --- a/core/java/android/bluetooth/IBluetoothGattCallback.aidl +++ b/core/java/android/bluetooth/IBluetoothGattCallback.aidl @@ -69,6 +69,5 @@ oneway interface IBluetoothGattCallback { in AdvertiseSettings advertiseSettings); void onConfigureMTU(in String address, in int mtu, in int status); void onConnectionCongested(in String address, in boolean congested); - void onFoundOrLost(in boolean onFound, in String address, in int rssi, - in byte[] advData); + void onFoundOrLost(in boolean onFound, in ScanResult scanResult); } diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java index 45e466f..6667cc4 100644 --- a/core/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java @@ -322,22 +322,27 @@ public final class BluetoothLeScanner { } @Override - public void onFoundOrLost(boolean onFound, String address, int rssi, - byte[] advData) { + public void onFoundOrLost(final boolean onFound, final ScanResult scanResult) { if (DBG) { - Log.d(TAG, "onFoundOrLost() - Device=" + address); + Log.d(TAG, "onFoundOrLost() - onFound = " + onFound + + " " + scanResult.toString()); } - // ToDo: Fix issue with underlying reporting from chipset - BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice( - address); - long scanNanos = SystemClock.elapsedRealtimeNanos(); - ScanResult result = new ScanResult(device, ScanRecord.parseFromBytes(advData), rssi, - scanNanos); - if (onFound) { - mScanCallback.onScanResult(ScanSettings.CALLBACK_TYPE_FIRST_MATCH, result); - } else { - mScanCallback.onScanResult(ScanSettings.CALLBACK_TYPE_MATCH_LOST, result); + + // Check null in case the scan has been stopped + synchronized (this) { + if (mClientIf <= 0) return; } + Handler handler = new Handler(Looper.getMainLooper()); + handler.post(new Runnable() { + @Override + public void run() { + if (onFound) { + mScanCallback.onScanResult(ScanSettings.CALLBACK_TYPE_FIRST_MATCH, scanResult); + } else { + mScanCallback.onScanResult(ScanSettings.CALLBACK_TYPE_MATCH_LOST, scanResult); + } + } + }); } } |