Merge "[Companion] Stop scanning after 20sec timeout"
This commit is contained in:
committed by
Android (Google) Code Review
commit
893ef8db21
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user