summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorBrian Stack <bstack@google.com>2020-11-09 18:12:05 -0800
committerBrian Stack <bstack@google.com>2020-12-01 20:10:01 -0800
commit7d47f2c4d872f6f97cf72e08939746008bc6098a (patch)
tree6d8a7dcf90df8eaad91271d12cc1cca7e8769672 /core/java/android
parent28ed7b9c1ea9a7d6222840f34e16f35525b52e79 (diff)
Expose UwbManager through Context.getSystemService
Bug: 170323306 Test: atest UwbManagerTests Change-Id: I04c1263a191fcfeee5824be5d6d1944354819d02
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/SystemServiceRegistry.java9
-rw-r--r--core/java/android/content/Context.java10
-rw-r--r--core/java/android/content/pm/PackageManager.java9
-rw-r--r--core/java/android/uwb/UwbManager.java32
4 files changed, 58 insertions, 2 deletions
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 7287acdd0241..392d6fbe53d6 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -194,6 +194,7 @@ import android.telephony.TelephonyRegistryManager;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Slog;
+import android.uwb.UwbManager;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.WindowManager;
@@ -732,6 +733,14 @@ public final class SystemServiceRegistry {
return new SerialManager(ctx, ISerialManager.Stub.asInterface(b));
}});
+ registerService(Context.UWB_SERVICE, UwbManager.class,
+ new CachedServiceFetcher<UwbManager>() {
+ @Override
+ public UwbManager createService(ContextImpl ctx) {
+ return UwbManager.getInstance();
+ }
+ });
+
registerService(Context.VIBRATOR_SERVICE, Vibrator.class,
new CachedServiceFetcher<Vibrator>() {
@Override
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 8f92bf1e3253..d920fb3e97e6 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -3544,6 +3544,7 @@ public abstract class Context {
LIGHTS_SERVICE,
//@hide: PEOPLE_SERVICE,
//@hide: DEVICE_STATE_SERVICE,
+ UWB_SERVICE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ServiceName {}
@@ -5260,6 +5261,15 @@ public abstract class Context {
/**
* Use with {@link #getSystemService(String)} to retrieve a
+ * {@link android.uwb.UwbManager}.
+ *
+ * @see #getSystemService(String)
+ * @hide
+ */
+ public static final String UWB_SERVICE = "uwb";
+
+ /**
+ * Use with {@link #getSystemService(String)} to retrieve a
* {@link android.app.DreamManager} for controlling Dream states.
*
* @see #getSystemService(String)
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 044b3b2e8284..f566f050b616 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2810,6 +2810,15 @@ public abstract class PackageManager {
/**
* Feature for {@link #getSystemAvailableFeatures} and
+ * {@link #hasSystemFeature}: The device is capable of communicating with
+ * other devices via ultra wideband.
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_UWB = "android.hardware.uwb";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature}: The device supports connecting to USB devices
* as the USB host.
*/
diff --git a/core/java/android/uwb/UwbManager.java b/core/java/android/uwb/UwbManager.java
index 2f1e2ded26ac..6488490b8863 100644
--- a/core/java/android/uwb/UwbManager.java
+++ b/core/java/android/uwb/UwbManager.java
@@ -19,7 +19,11 @@ package android.uwb;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SuppressLint;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.IBinder;
import android.os.PersistableBundle;
+import android.os.ServiceManager;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -36,7 +40,11 @@ import java.util.concurrent.Executor;
*
* @hide
*/
+@SystemService(Context.UWB_SERVICE)
public final class UwbManager {
+ private IUwbAdapter mUwbAdapter;
+ private static final String SERVICE_NAME = "uwb";
+
/**
* Interface for receiving UWB adapter state changes
*/
@@ -96,10 +104,30 @@ public final class UwbManager {
/**
* Use <code>Context.getSystemService(UwbManager.class)</code> to get an instance.
+ *
+ * @param adapter an instance of an {@link android.uwb.IUwbAdapter}
*/
- private UwbManager() {
- throw new UnsupportedOperationException();
+ private UwbManager(IUwbAdapter adapter) {
+ mUwbAdapter = adapter;
+ }
+
+ /**
+ * @hide
+ */
+ public static UwbManager getInstance() {
+ IBinder b = ServiceManager.getService(SERVICE_NAME);
+ if (b == null) {
+ return null;
+ }
+
+ IUwbAdapter adapter = IUwbAdapter.Stub.asInterface(b);
+ if (adapter == null) {
+ return null;
+ }
+
+ return new UwbManager(adapter);
}
+
/**
* Register an {@link AdapterStateCallback} to listen for UWB adapter state changes
* <p>The provided callback will be invoked by the given {@link Executor}.