summaryrefslogtreecommitdiff
path: root/packages/CompanionDeviceManager/src
diff options
context:
space:
mode:
authorEugene Susla <eugenesusla@google.com>2018-02-27 14:32:21 -0800
committerEugene Susla <eugenesusla@google.com>2018-02-27 16:53:44 -0800
commit158d5e7f788d9b4d6d8876d38118250979c35e37 (patch)
tree9ca7b1c97f5fb5193ab48e90e1f2ec7349011b78 /packages/CompanionDeviceManager/src
parent0fc64594ff57f822767ad6ef7a7275d2d67c148a (diff)
[Companion] Stop scanning after 20sec timeout
Fixes: 73888630 Test: using toy app ensure the UI reflects scanning being stopped after 20s Change-Id: I6f2b6027c0c72e312b6b7de722646f7379dcbeb0
Diffstat (limited to 'packages/CompanionDeviceManager/src')
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java6
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java21
2 files changed, 25 insertions, 2 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java
index 7e23ee152ed9..16ef59f201f1 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java
@@ -41,7 +41,8 @@ public class DeviceChooserActivity extends Activity {
private static final boolean DEBUG = false;
private static final String LOG_TAG = "DeviceChooserActivity";
- private ListView mDeviceListView;
+ View mLoadingIndicator = null;
+ ListView mDeviceListView;
private View mPairButton;
private View mCancelButton;
@@ -80,8 +81,9 @@ public class DeviceChooserActivity extends Activity {
onSelectionUpdate();
}
});
- mDeviceListView.addFooterView(getProgressBar(), null, false);
+ mDeviceListView.addFooterView(mLoadingIndicator = getProgressBar(), null, false);
}
+ getService().mActivity = this;
mCancelButton = findViewById(R.id.button_cancel);
mCancelButton.setOnClickListener(v -> cancel());
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
index 1e262314284d..a5f0f24363a5 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java
@@ -22,6 +22,7 @@ import static android.companion.BluetoothDeviceFilterUtils.getDeviceMacAddress;
import static com.android.internal.util.ArrayUtils.isEmpty;
import static com.android.internal.util.CollectionUtils.emptyIfNull;
import static com.android.internal.util.CollectionUtils.size;
+import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -50,6 +51,7 @@ import android.content.IntentFilter;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.wifi.WifiManager;
+import android.os.Handler;
import android.os.IBinder;
import android.os.Parcelable;
import android.os.RemoteException;
@@ -63,7 +65,9 @@ import android.widget.TextView;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.Preconditions;
+import com.android.internal.util.function.pooled.PooledLambda;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -73,6 +77,8 @@ public class DeviceDiscoveryService extends Service {
private static final boolean DEBUG = false;
private static final String LOG_TAG = "DeviceDiscoveryService";
+ private static final long SCAN_TIMEOUT = 20000;
+
static DeviceDiscoveryService sInstance;
private BluetoothAdapter mBluetoothAdapter;
@@ -93,6 +99,8 @@ public class DeviceDiscoveryService extends Service {
IFindDeviceCallback mFindCallback;
ICompanionDeviceDiscoveryServiceCallback mServiceCallback;
+ boolean mIsScanning = false;
+ @Nullable DeviceChooserActivity mActivity = null;
private final ICompanionDeviceDiscoveryService mBinder =
new ICompanionDeviceDiscoveryService.Stub() {
@@ -196,6 +204,10 @@ public class DeviceDiscoveryService extends Service {
new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.startScan();
}
+ mIsScanning = true;
+ Handler.getMain().sendMessageDelayed(
+ obtainMessage(DeviceDiscoveryService::stopScan, this),
+ SCAN_TIMEOUT);
}
private boolean shouldScan(List<? extends DeviceFilter> mediumSpecificFilters) {
@@ -219,6 +231,15 @@ public class DeviceDiscoveryService extends Service {
private void stopScan() {
if (DEBUG) Log.i(LOG_TAG, "stopScan()");
+ if (!mIsScanning) return;
+ mIsScanning = false;
+
+ DeviceChooserActivity activity = mActivity;
+ if (activity != null) {
+ activity.mDeviceListView.removeFooterView(activity.mLoadingIndicator);
+ mActivity = null;
+ }
+
mBluetoothAdapter.cancelDiscovery();
if (mBluetoothBroadcastReceiver != null) {
unregisterReceiver(mBluetoothBroadcastReceiver);