summaryrefslogtreecommitdiff
path: root/services/uwb
diff options
context:
space:
mode:
authorJoy Babafemi <jbabs@google.com>2021-09-23 21:08:58 +0000
committerJoy Babafemi <jbabs@google.com>2021-09-24 16:45:16 +0000
commitbd74ef8918ec3520ed21622c1b51b14841c7d4a7 (patch)
tree8a902a1ada2c632942f5b433449cda03854042ae /services/uwb
parente97b0e8fbbe9cef1e3c737be52c5e422af8a8ada (diff)
DO NOT MERGE: Disable UWB in airplane mode.
Bug: 199933856 Test: Manual Change-Id: I13c5986e28e7a1a9277518ca96da9a22c5e1c21e
Diffstat (limited to 'services/uwb')
-rw-r--r--services/uwb/java/com/android/server/uwb/UwbInjector.java6
-rw-r--r--services/uwb/java/com/android/server/uwb/UwbServiceImpl.java29
2 files changed, 33 insertions, 2 deletions
diff --git a/services/uwb/java/com/android/server/uwb/UwbInjector.java b/services/uwb/java/com/android/server/uwb/UwbInjector.java
index 379a2ff9411e..a7a0500483c2 100644
--- a/services/uwb/java/com/android/server/uwb/UwbInjector.java
+++ b/services/uwb/java/com/android/server/uwb/UwbInjector.java
@@ -96,4 +96,10 @@ public class UwbInjector {
return true;
}
}
+
+ /** Returns true if airplane mode is turned on. */
+ public boolean isAirplaneModeOn() {
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
+ }
}
diff --git a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
index 8d2c80a5677b..70d6aab542a2 100644
--- a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
+++ b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java
@@ -18,8 +18,11 @@ package com.android.server.uwb;
import android.annotation.NonNull;
import android.content.AttributionSource;
+import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Binder;
import android.os.IBinder;
import android.os.PersistableBundle;
@@ -238,7 +241,7 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec
Log.i(TAG, "Retrieved vendor service");
long token = Binder.clearCallingIdentity();
try {
- mVendorUwbAdapter.setEnabled(mUwbInjector.isPersistedUwbStateEnabled());
+ mVendorUwbAdapter.setEnabled(isEnabled());
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -249,6 +252,7 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec
UwbServiceImpl(@NonNull Context context, @NonNull UwbInjector uwbInjector) {
mContext = context;
mUwbInjector = uwbInjector;
+ registerAirplaneModeReceiver();
}
private void enforceUwbPrivilegedPermission() {
@@ -331,7 +335,7 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec
@Override
public synchronized void setEnabled(boolean enabled) throws RemoteException {
persistUwbState(enabled);
- getVendorUwbAdapter().setEnabled(enabled);
+ getVendorUwbAdapter().setEnabled(isEnabled());
}
private void persistUwbState(boolean enabled) {
@@ -339,4 +343,25 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec
int state = enabled ? AdapterState.STATE_ENABLED_ACTIVE : AdapterState.STATE_DISABLED;
Settings.Global.putInt(cr, Settings.Global.UWB_ENABLED, state);
}
+
+ private void registerAirplaneModeReceiver() {
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ handleAirplaneModeEvent();
+ }
+ }, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));
+ }
+
+ private void handleAirplaneModeEvent() {
+ try {
+ getVendorUwbAdapter().setEnabled(isEnabled());
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to set UWB Adapter state.", e);
+ }
+ }
+
+ private boolean isEnabled() {
+ return mUwbInjector.isPersistedUwbStateEnabled() && !mUwbInjector.isAirplaneModeOn();
+ }
}