Merge "[Companion] Stop scanning after 20sec timeout"

This commit is contained in:
TreeHugger Robot
2018-02-28 21:18:55 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 2 deletions

View File

@@ -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());

View File

@@ -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);