Merge "DO NOT MERGE ANYWHERE Allow the Bluetooth MAC address to be updated asynchronously (2/3)" into cw-f-dev

This commit is contained in:
Tyler Freeman
2017-08-01 01:10:44 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 0 deletions

View File

@@ -447,6 +447,30 @@ public final class BluetoothAdapter {
public static final String ACTION_BLE_STATE_CHANGED =
"android.bluetooth.adapter.action.BLE_STATE_CHANGED";
/**
* Intent used to broadcast the change in the Bluetooth address
* of the local Bluetooth adapter.
* <p>Always contains the extra field {@link
* #EXTRA_BLUETOOTH_ADDRESS} containing the Bluetooth address.
*
* Note: only system level processes are allowed to send this
* defined broadcast.
*
* @hide
*/
public static final String ACTION_BLUETOOTH_ADDRESS_CHANGED =
"android.bluetooth.adapter.action.BLUETOOTH_ADDRESS_CHANGED";
/**
* Used as a String extra field in {@link
* #ACTION_BLUETOOTH_ADDRESS_CHANGED} intent to store the local
* Bluetooth address.
*
* @hide
*/
public static final String EXTRA_BLUETOOTH_ADDRESS =
"android.bluetooth.adapter.extra.BLUETOOTH_ADDRESS";
/**
* Broadcast Action: The notifys Bluetooth ACL connected event. This will be
* by BLE Always on enabled application to know the ACL_CONNECTED event

View File

@@ -121,6 +121,7 @@
<protected-broadcast android:name="android.bluetooth.adapter.action.DISCOVERY_STARTED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.DISCOVERY_FINISHED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.LOCAL_NAME_CHANGED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.BLUETOOTH_ADDRESS_CHANGED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
<protected-broadcast android:name="android.bluetooth.device.action.UUID" />
<protected-broadcast android:name="android.bluetooth.device.action.MAS_INSTANCE" />

View File

@@ -187,6 +187,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
if (newName != null) {
storeNameAndAddress(newName, null);
}
} else if (BluetoothAdapter.ACTION_BLUETOOTH_ADDRESS_CHANGED.equals(action)) {
String newAddress = intent.getStringExtra(BluetoothAdapter.EXTRA_BLUETOOTH_ADDRESS);
if (newAddress != null) {
if (DBG) Slog.d(TAG, "Bluetooth Adapter address changed to " + newAddress);
storeNameAndAddress(null, newAddress);
} else {
if (DBG) Slog.e(TAG, "No Bluetooth Adapter address parameter found");
}
} else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) {
synchronized(mReceiver) {
if (isBluetoothPersistedStateOn()) {
@@ -275,6 +283,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
registerForAirplaneMode(filter);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiver(mReceiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_BLUETOOTH_ADDRESS_CHANGED);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiver(mReceiver, filter);
loadStoredNameAndAddress();
if (isBluetoothPersistedStateOn()) {
if (DBG) Slog.d(TAG, "Startup: Bluetooth persisted state is ON.");