diff options
| author | Brian Stack <bstack@google.com> | 2020-11-09 18:12:05 -0800 |
|---|---|---|
| committer | Brian Stack <bstack@google.com> | 2020-12-01 20:10:01 -0800 |
| commit | 7d47f2c4d872f6f97cf72e08939746008bc6098a (patch) | |
| tree | 6d8a7dcf90df8eaad91271d12cc1cca7e8769672 /core/java/android | |
| parent | 28ed7b9c1ea9a7d6222840f34e16f35525b52e79 (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.java | 9 | ||||
| -rw-r--r-- | core/java/android/content/Context.java | 10 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 9 | ||||
| -rw-r--r-- | core/java/android/uwb/UwbManager.java | 32 |
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}. |
