Support sending BT toggle state to the Context Hub
Bug: 215574482 Test: Compile, manually validate toggle states are sent correctly to the HAL Change-Id: I3d3c8b44e1effaa760bc66a11302a9aa30b61445
This commit is contained in:
@@ -20,6 +20,7 @@ import android.annotation.IntDef;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -154,6 +155,10 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
private boolean mIsWifiScanningEnabled = false;
|
||||
private boolean mIsWifiMainEnabled = false;
|
||||
|
||||
// True if BT is available for the Context Hub
|
||||
private boolean mIsBtScanningEnabled = false;
|
||||
private boolean mIsBtMainEnabled = false;
|
||||
|
||||
// A hashmap used to record if a contexthub is waiting for daily query
|
||||
private Set<Integer> mMetricQueryPendingContextHubIds =
|
||||
Collections.newSetFromMap(new ConcurrentHashMap<Integer, Boolean>());
|
||||
@@ -333,6 +338,25 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
|
||||
}
|
||||
|
||||
if (mContextHubWrapper.supportsBtSettingNotifications()) {
|
||||
sendBtSettingUpdate(true /* forceUpdate */);
|
||||
|
||||
BroadcastReceiver btReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())
|
||||
|| BluetoothAdapter.ACTION_BLE_STATE_CHANGED.equals(
|
||||
intent.getAction())) {
|
||||
sendBtSettingUpdate(false /* forceUpdate */);
|
||||
}
|
||||
}
|
||||
};
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
|
||||
filter.addAction(BluetoothAdapter.ACTION_BLE_STATE_CHANGED);
|
||||
mContext.registerReceiver(btReceiver, filter);
|
||||
}
|
||||
|
||||
scheduleDailyMetricSnapshot();
|
||||
}
|
||||
|
||||
@@ -735,6 +759,7 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
sendWifiSettingUpdate(true /* forceUpdate */);
|
||||
sendAirplaneModeSettingUpdate();
|
||||
sendMicrophoneDisableSettingUpdateForCurrentUser();
|
||||
sendBtSettingUpdate(true /* forceUpdate */);
|
||||
|
||||
mTransactionManager.onHubReset();
|
||||
queryNanoAppsInternal(contextHubId);
|
||||
@@ -1132,6 +1157,39 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains the latest BT availability setting value and notifies the Context Hub.
|
||||
*
|
||||
* @param forceUpdate True to force send update to the Context Hub, otherwise only send the
|
||||
* update when the BT availability changes.
|
||||
*/
|
||||
private void sendBtSettingUpdate(boolean forceUpdate) {
|
||||
final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
|
||||
// Adapter may be null if BT is not supported.
|
||||
if (adapter != null) {
|
||||
boolean btEnabled = adapter.isEnabled();
|
||||
boolean btScanEnabled = adapter.isBleScanAlwaysAvailable();
|
||||
if (forceUpdate || mIsBtScanningEnabled != btScanEnabled) {
|
||||
mIsBtScanningEnabled = btScanEnabled;
|
||||
mContextHubWrapper.onBtScanningSettingChanged(btScanEnabled);
|
||||
}
|
||||
if (forceUpdate || mIsBtMainEnabled != btEnabled) {
|
||||
mIsBtMainEnabled = btEnabled;
|
||||
mContextHubWrapper.onBtMainSettingChanged(btEnabled);
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "BT adapter not available. Defaulting to disabled");
|
||||
if (mIsBtMainEnabled) {
|
||||
mIsBtMainEnabled = false;
|
||||
mContextHubWrapper.onBtMainSettingChanged(mIsBtMainEnabled);
|
||||
}
|
||||
if (mIsBtScanningEnabled) {
|
||||
mIsBtScanningEnabled = false;
|
||||
mContextHubWrapper.onBtScanningSettingChanged(mIsBtScanningEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains the latest airplane mode setting value and notifies the Context Hub.
|
||||
*/
|
||||
|
||||
@@ -242,6 +242,22 @@ public abstract class IContextHubWrapper {
|
||||
*/
|
||||
public abstract void onMicrophoneSettingChanged(boolean enabled);
|
||||
|
||||
/**
|
||||
* @return True if this version of the Contexthub HAL supports BT availability setting
|
||||
* notifications.
|
||||
*/
|
||||
public abstract boolean supportsBtSettingNotifications();
|
||||
|
||||
/**
|
||||
* Notifies the Contexthub implementation of a BT main setting change.
|
||||
*/
|
||||
public abstract void onBtMainSettingChanged(boolean enabled);
|
||||
|
||||
/**
|
||||
* Notifies the Contexthub implementation of a BT scanning setting change.
|
||||
*/
|
||||
public abstract void onBtScanningSettingChanged(boolean enabled);
|
||||
|
||||
/**
|
||||
* Invoked whenever a host client connects with the framework.
|
||||
*
|
||||
@@ -409,6 +425,10 @@ public abstract class IContextHubWrapper {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean supportsBtSettingNotifications() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onLocationSettingChanged(boolean enabled) {
|
||||
onSettingChanged(android.hardware.contexthub.Setting.LOCATION, enabled);
|
||||
}
|
||||
@@ -432,6 +452,14 @@ public abstract class IContextHubWrapper {
|
||||
onSettingChanged(android.hardware.contexthub.Setting.WIFI_SCANNING, enabled);
|
||||
}
|
||||
|
||||
public void onBtMainSettingChanged(boolean enabled) {
|
||||
onSettingChanged(android.hardware.contexthub.Setting.BT_MAIN, enabled);
|
||||
}
|
||||
|
||||
public void onBtScanningSettingChanged(boolean enabled) {
|
||||
onSettingChanged(android.hardware.contexthub.Setting.BT_SCANNING, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHostEndpointConnected(HostEndpointInfo info) {
|
||||
try {
|
||||
@@ -662,8 +690,14 @@ public abstract class IContextHubWrapper {
|
||||
mHub.registerCallback(contextHubId, mHidlCallbackMap.get(contextHubId));
|
||||
}
|
||||
|
||||
public boolean supportsBtSettingNotifications() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onWifiMainSettingChanged(boolean enabled) {}
|
||||
public void onWifiScanningSettingChanged(boolean enabled) {}
|
||||
public void onBtMainSettingChanged(boolean enabled) {}
|
||||
public void onBtScanningSettingChanged(boolean enabled) {}
|
||||
}
|
||||
|
||||
private static class ContextHubWrapperV1_0 extends ContextHubWrapperHidl {
|
||||
|
||||
Reference in New Issue
Block a user