Merge "Move setScanMode to background thread to avoid ANR" into main
This commit is contained in:
@@ -24,6 +24,8 @@ import android.content.IntentFilter;
|
|||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
/** Helper class, intended to be used by an Activity, to keep the local Bluetooth adapter in
|
/** Helper class, intended to be used by an Activity, to keep the local Bluetooth adapter in
|
||||||
* discoverable mode indefinitely. By default setting the scan mode to
|
* discoverable mode indefinitely. By default setting the scan mode to
|
||||||
* BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE will time out after some time, but some
|
* BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE will time out after some time, but some
|
||||||
@@ -55,10 +57,12 @@ public class AlwaysDiscoverable extends BroadcastReceiver {
|
|||||||
mContext.registerReceiver(this, mIntentFilter,
|
mContext.registerReceiver(this, mIntentFilter,
|
||||||
Context.RECEIVER_EXPORTED_UNAUDITED);
|
Context.RECEIVER_EXPORTED_UNAUDITED);
|
||||||
mStarted = true;
|
mStarted = true;
|
||||||
if (mBluetoothAdapter.getScanMode()
|
ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
!= BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
|
if (mBluetoothAdapter.getScanMode()
|
||||||
mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
!= BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
|
||||||
}
|
mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
@@ -67,7 +71,8 @@ public class AlwaysDiscoverable extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
mContext.unregisterReceiver(this);
|
mContext.unregisterReceiver(this);
|
||||||
mStarted = false;
|
mStarted = false;
|
||||||
mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
|
ThreadUtils.postOnBackgroundThread(
|
||||||
|
() -> mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,9 +81,11 @@ public class AlwaysDiscoverable extends BroadcastReceiver {
|
|||||||
if (action != BluetoothAdapter.ACTION_SCAN_MODE_CHANGED) {
|
if (action != BluetoothAdapter.ACTION_SCAN_MODE_CHANGED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mBluetoothAdapter.getScanMode()
|
ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
!= BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
|
if (mBluetoothAdapter.getScanMode()
|
||||||
mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
!= BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
|
||||||
}
|
mBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user