Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 893ef8db authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents aec69501 158d5e7f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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());
+21 −0
Original line number Diff line number Diff line
@@ -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);