summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorPrerepa Viswanadham <dham@google.com>2014-08-07 09:44:20 -0700
committerPrerepa Viswanadham <dham@google.com>2014-08-07 19:51:59 +0000
commitd5324e4183c97ae7271b6eda4204d9f0dc003023 (patch)
treeac70c881e87a83edf2a468b6e2ba9ed3be895a47 /core/java/android/bluetooth
parentbcc48b6cb09fda744b64d15b02f6e5c5fcfc9b7d (diff)
downloadframeworks_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')
-rw-r--r--core/java/android/bluetooth/BluetoothGattCallbackWrapper.java3
-rw-r--r--core/java/android/bluetooth/IBluetoothGattCallback.aidl3
-rw-r--r--core/java/android/bluetooth/le/BluetoothLeScanner.java31
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);
+ }
+ }
+ });
}
}