aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAng Li <angli@google.com>2018-05-21 19:47:16 -0700
committerGitHub <noreply@github.com>2018-05-21 19:47:16 -0700
commitaad933736764c6eafb942524214266d50c123453 (patch)
tree19be78bc6a864f1b31b0ae7a3288b39da45eba0d /src/main/java
parentec285eb13b6a2b690a9711b1c55c51af824ccaee (diff)
downloadmobly-bundled-snippets-aad933736764c6eafb942524214266d50c123453.tar.gz
Add bt cancel discovery. (#98)
`btCancelDiscovery` synchronous Rpc.
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/android/mobly/snippet/bundled/bluetooth/BluetoothAdapterSnippet.java32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/bluetooth/BluetoothAdapterSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/bluetooth/BluetoothAdapterSnippet.java
index ffaf1af..37e7c5f 100644
--- a/src/main/java/com/google/android/mobly/snippet/bundled/bluetooth/BluetoothAdapterSnippet.java
+++ b/src/main/java/com/google/android/mobly/snippet/bundled/bluetooth/BluetoothAdapterSnippet.java
@@ -52,7 +52,7 @@ public class BluetoothAdapterSnippet implements Snippet {
private final JsonSerializer mJsonSerializer = new JsonSerializer();
private static final ConcurrentHashMap<String, BluetoothDevice> mDiscoveryResults =
new ConcurrentHashMap<>();
- private volatile boolean mIsScanResultAvailable = false;
+ private volatile boolean mIsDiscoveryFinished = false;
public BluetoothAdapterSnippet() {
mContext = InstrumentationRegistry.getContext();
@@ -180,7 +180,7 @@ public class BluetoothAdapterSnippet implements Snippet {
mBluetoothAdapter.cancelDiscovery();
}
mDiscoveryResults.clear();
- mIsScanResultAvailable = false;
+ mIsDiscoveryFinished = false;
BroadcastReceiver receiver = new BluetoothScanReceiver();
mContext.registerReceiver(receiver, filter);
try {
@@ -188,7 +188,7 @@ public class BluetoothAdapterSnippet implements Snippet {
throw new BluetoothAdapterSnippetException(
"Failed to initiate Bluetooth Discovery.");
}
- if (!Utils.waitUntil(() -> mIsScanResultAvailable, 120)) {
+ if (!Utils.waitUntil(() -> mIsDiscoveryFinished, 120)) {
throw new BluetoothAdapterSnippetException(
"Failed to get discovery results after 2 mins, timeout!");
}
@@ -214,6 +214,30 @@ public class BluetoothAdapterSnippet implements Snippet {
}
}
+ @Rpc(description = "Cancel ongoing bluetooth discovery.")
+ public void btCancelDiscovery() throws BluetoothAdapterSnippetException {
+ if (!mBluetoothAdapter.isDiscovering()) {
+ Log.d("No ongoing bluetooth discovery.");
+ return;
+ }
+ IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
+ mIsDiscoveryFinished = false;
+ BroadcastReceiver receiver = new BluetoothScanReceiver();
+ mContext.registerReceiver(receiver, filter);
+ try {
+ if (!mBluetoothAdapter.cancelDiscovery()) {
+ throw new BluetoothAdapterSnippetException(
+ "Failed to initiate to cancel bluetooth discovery.");
+ }
+ if (!Utils.waitUntil(() -> mIsDiscoveryFinished, 120)) {
+ throw new BluetoothAdapterSnippetException(
+ "Failed to get discovery results after 2 mins, timeout!");
+ }
+ } finally {
+ mContext.unregisterReceiver(receiver);
+ }
+ }
+
@Rpc(description = "Stop being discoverable in Bluetooth.")
public void btStopBeingDiscoverable() throws Throwable {
if (!(boolean)
@@ -290,7 +314,7 @@ public class BluetoothAdapterSnippet implements Snippet {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
- mIsScanResultAvailable = true;
+ mIsDiscoveryFinished = true;
} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device =
(BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);