Implements settings logic for Context Hub AIDL

Bug: 194285834
Test: Load on device
Change-Id: Ib787f791f323f97babc0e2872fb2461ea7d6afec
This commit is contained in:
Arthur Ishiguro
2021-09-09 15:10:40 -07:00
parent 46a8fc712a
commit b8815ef9ef
2 changed files with 56 additions and 9 deletions

View File

@@ -137,6 +137,8 @@ public class ContextHubService extends IContextHubService.Stub {
// True if WiFi is available for the Context Hub
private boolean mIsWifiAvailable = false;
private boolean mIsWifiScanningEnabled = false;
private boolean mIsWifiMainEnabled = false;
// Lock object for sendWifiSettingUpdate()
private final Object mSendWifiSettingUpdateLock = new Object();
@@ -1064,10 +1066,20 @@ public class ContextHubService extends IContextHubService.Stub {
private void sendWifiSettingUpdate(boolean forceUpdate) {
synchronized (mSendWifiSettingUpdateLock) {
WifiManager wifiManager = mContext.getSystemService(WifiManager.class);
boolean enabled = wifiManager.isWifiEnabled() || wifiManager.isScanAlwaysAvailable();
if (forceUpdate || mIsWifiAvailable != enabled) {
mIsWifiAvailable = enabled;
mContextHubWrapper.onWifiSettingChanged(enabled);
boolean wifiEnabled = wifiManager.isWifiEnabled();
boolean wifiScanEnabled = wifiManager.isScanAlwaysAvailable();
boolean wifiAvailable = wifiEnabled || wifiScanEnabled;
if (forceUpdate || mIsWifiAvailable != wifiAvailable) {
mIsWifiAvailable = wifiAvailable;
mContextHubWrapper.onWifiSettingChanged(wifiAvailable);
}
if (forceUpdate || mIsWifiScanningEnabled != wifiScanEnabled) {
mIsWifiScanningEnabled = wifiScanEnabled;
mContextHubWrapper.onWifiScanningSettingChanged(wifiScanEnabled);
}
if (forceUpdate || mIsWifiMainEnabled != wifiEnabled) {
mIsWifiMainEnabled = wifiEnabled;
mContextHubWrapper.onWifiMainSettingChanged(wifiEnabled);
}
}
}

View File

@@ -197,6 +197,20 @@ public abstract class IContextHubWrapper {
*/
public abstract void onWifiSettingChanged(boolean enabled);
/**
* Notifies the Contexthub implementation of a user WiFi main setting change.
*
* @param enabled true if the WiFi main setting has been enabled.
*/
public abstract void onWifiMainSettingChanged(boolean enabled);
/**
* Notifies the Contexthub implementation of a user WiFi scanning setting change.
*
* @param enabled true if the WiFi scanning setting has been enabled.
*/
public abstract void onWifiScanningSettingChanged(boolean enabled);
/**
* @return True if this version of the Contexthub HAL supports airplane mode setting
* notifications.
@@ -335,33 +349,43 @@ public abstract class IContextHubWrapper {
return new Pair(hubInfoList, new ArrayList<String>(supportedPermissions));
}
// TODO(b/194285834): Implement settings logic
public boolean supportsLocationSettingNotifications() {
return false;
return true;
}
public boolean supportsWifiSettingNotifications() {
return false;
return true;
}
public boolean supportsAirplaneModeSettingNotifications() {
return false;
return true;
}
public boolean supportsMicrophoneDisableSettingNotifications() {
return false;
return true;
}
public void onLocationSettingChanged(boolean enabled) {
onSettingChanged(android.hardware.contexthub.Setting.LOCATION, enabled);
}
public void onWifiSettingChanged(boolean enabled) {
}
public void onAirplaneModeSettingChanged(boolean enabled) {
onSettingChanged(android.hardware.contexthub.Setting.AIRPLANE_MODE, enabled);
}
public void onMicrophoneDisableSettingChanged(boolean enabled) {
onSettingChanged(android.hardware.contexthub.Setting.MICROPHONE, enabled);
}
public void onWifiMainSettingChanged(boolean enabled) {
onSettingChanged(android.hardware.contexthub.Setting.WIFI_MAIN, enabled);
}
public void onWifiScanningSettingChanged(boolean enabled) {
onSettingChanged(android.hardware.contexthub.Setting.WIFI_SCANNING, enabled);
}
@ContextHubTransaction.Result
@@ -414,6 +438,14 @@ public abstract class IContextHubWrapper {
return success ? ContextHubTransaction.RESULT_SUCCESS
: ContextHubTransaction.RESULT_FAILED_UNKNOWN;
}
private void onSettingChanged(byte setting, boolean enabled) {
try {
mHub.onSettingChanged(setting, enabled);
} catch (RemoteException e) {
Log.e(TAG, "RemoteException while sending setting update");
}
}
}
/**
@@ -531,6 +563,9 @@ public abstract class IContextHubWrapper {
mCallback = callback;
mHub.registerCallback(contextHubId, mHidlCallback);
}
public void onWifiMainSettingChanged(boolean enabled) {}
public void onWifiScanningSettingChanged(boolean enabled) {}
}
private static class ContextHubWrapperV1_0 extends ContextHubWrapperHidl {