diff options
author | Eugene Susla <eugenesusla@google.com> | 2018-02-27 14:32:21 -0800 |
---|---|---|
committer | Eugene Susla <eugenesusla@google.com> | 2018-02-27 16:53:44 -0800 |
commit | 158d5e7f788d9b4d6d8876d38118250979c35e37 (patch) | |
tree | 9ca7b1c97f5fb5193ab48e90e1f2ec7349011b78 /packages/CompanionDeviceManager | |
parent | 0fc64594ff57f822767ad6ef7a7275d2d67c148a (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')
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); |