diff options
author | Brian Stack <bstack@google.com> | 2021-01-23 00:09:02 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-01-23 00:09:02 +0000 |
commit | 94f23cd4c55e722f180e439b0f6e39db38dea7ca (patch) | |
tree | 62e7d935dff6310e921e74dfe3b0b833680f17c7 /core | |
parent | 29a92ff8e814fbf0f99a08160d9a54eaf4c3383c (diff) | |
parent | 4b2df3970cf089655db0a72d4446992133a73fe5 (diff) |
Merge "Add UWB APIs to SystemApi"
Diffstat (limited to 'core')
-rw-r--r-- | core/api/system-current.txt | 158 | ||||
-rw-r--r-- | core/java/android/uwb/AngleMeasurement.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/AngleOfArrivalMeasurement.java | 20 | ||||
-rw-r--r-- | core/java/android/uwb/DistanceMeasurement.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/RangingMeasurement.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/RangingReport.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/RangingSession.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/UwbAddress.java | 2 | ||||
-rw-r--r-- | core/java/android/uwb/UwbManager.java | 2 | ||||
-rw-r--r-- | core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java | 8 | ||||
-rw-r--r-- | core/tests/uwbtests/src/android/uwb/UwbTestUtils.java | 4 |
11 files changed, 188 insertions, 16 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index de0ac0fd7b85..9f651e70f780 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -12316,6 +12316,164 @@ package android.util { } +package android.uwb { + + public final class AngleMeasurement implements android.os.Parcelable { + method public int describeContents(); + method @FloatRange(from=0.0, to=1.0) public double getConfidenceLevel(); + method @FloatRange(from=0.0, to=3.141592653589793) public double getErrorRadians(); + method @FloatRange(from=-3.141592653589793, to=3.141592653589793) public double getRadians(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.AngleMeasurement> CREATOR; + } + + public static final class AngleMeasurement.Builder { + ctor public AngleMeasurement.Builder(); + method @NonNull public android.uwb.AngleMeasurement build(); + method @NonNull public android.uwb.AngleMeasurement.Builder setConfidenceLevel(double); + method @NonNull public android.uwb.AngleMeasurement.Builder setErrorRadians(double); + method @NonNull public android.uwb.AngleMeasurement.Builder setRadians(double); + } + + public final class AngleOfArrivalMeasurement implements android.os.Parcelable { + method public int describeContents(); + method @Nullable public android.uwb.AngleMeasurement getAltitude(); + method @NonNull public android.uwb.AngleMeasurement getAzimuth(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.AngleOfArrivalMeasurement> CREATOR; + } + + public static final class AngleOfArrivalMeasurement.Builder { + ctor public AngleOfArrivalMeasurement.Builder(); + method @NonNull public android.uwb.AngleOfArrivalMeasurement build(); + method @NonNull public android.uwb.AngleOfArrivalMeasurement.Builder setAltitude(@NonNull android.uwb.AngleMeasurement); + method @NonNull public android.uwb.AngleOfArrivalMeasurement.Builder setAzimuth(@NonNull android.uwb.AngleMeasurement); + } + + public final class DistanceMeasurement implements android.os.Parcelable { + method public int describeContents(); + method @FloatRange(from=0.0, to=1.0) public double getConfidenceLevel(); + method public double getErrorMeters(); + method public double getMeters(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.DistanceMeasurement> CREATOR; + } + + public static final class DistanceMeasurement.Builder { + ctor public DistanceMeasurement.Builder(); + method @NonNull public android.uwb.DistanceMeasurement build(); + method @NonNull public android.uwb.DistanceMeasurement.Builder setConfidenceLevel(double); + method @NonNull public android.uwb.DistanceMeasurement.Builder setErrorMeters(double); + method @NonNull public android.uwb.DistanceMeasurement.Builder setMeters(double); + } + + public final class RangingMeasurement implements android.os.Parcelable { + method public int describeContents(); + method @Nullable public android.uwb.AngleOfArrivalMeasurement getAngleOfArrivalMeasurement(); + method @Nullable public android.uwb.DistanceMeasurement getDistanceMeasurement(); + method public long getElapsedRealtimeNanos(); + method @NonNull public android.uwb.UwbAddress getRemoteDeviceAddress(); + method public int getStatus(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.RangingMeasurement> CREATOR; + field public static final int RANGING_STATUS_FAILURE_OUT_OF_RANGE = 1; // 0x1 + field public static final int RANGING_STATUS_FAILURE_UNKNOWN_ERROR = -1; // 0xffffffff + field public static final int RANGING_STATUS_SUCCESS = 0; // 0x0 + } + + public static final class RangingMeasurement.Builder { + ctor public RangingMeasurement.Builder(); + method @NonNull public android.uwb.RangingMeasurement build(); + method @NonNull public android.uwb.RangingMeasurement.Builder setAngleOfArrivalMeasurement(@NonNull android.uwb.AngleOfArrivalMeasurement); + method @NonNull public android.uwb.RangingMeasurement.Builder setDistanceMeasurement(@NonNull android.uwb.DistanceMeasurement); + method @NonNull public android.uwb.RangingMeasurement.Builder setElapsedRealtimeNanos(long); + method @NonNull public android.uwb.RangingMeasurement.Builder setRemoteDeviceAddress(@NonNull android.uwb.UwbAddress); + method @NonNull public android.uwb.RangingMeasurement.Builder setStatus(int); + } + + public final class RangingReport implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public java.util.List<android.uwb.RangingMeasurement> getMeasurements(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.RangingReport> CREATOR; + } + + public static final class RangingReport.Builder { + ctor public RangingReport.Builder(); + method @NonNull public android.uwb.RangingReport.Builder addMeasurement(@NonNull android.uwb.RangingMeasurement); + method @NonNull public android.uwb.RangingReport.Builder addMeasurements(@NonNull java.util.List<android.uwb.RangingMeasurement>); + method @NonNull public android.uwb.RangingReport build(); + } + + public final class RangingSession implements java.lang.AutoCloseable { + method public void close(); + method public void reconfigure(@NonNull android.os.PersistableBundle); + method public void start(@NonNull android.os.PersistableBundle); + method public void stop(); + } + + public static interface RangingSession.Callback { + method public void onClosed(int, @NonNull android.os.PersistableBundle); + method public void onOpenFailed(int, @NonNull android.os.PersistableBundle); + method public void onOpened(@NonNull android.uwb.RangingSession); + method public void onReconfigureFailed(int, @NonNull android.os.PersistableBundle); + method public void onReconfigured(@NonNull android.os.PersistableBundle); + method public void onReportReceived(@NonNull android.uwb.RangingReport); + method public void onStartFailed(int, @NonNull android.os.PersistableBundle); + method public void onStarted(@NonNull android.os.PersistableBundle); + method public void onStopFailed(int, @NonNull android.os.PersistableBundle); + method public void onStopped(); + field public static final int REASON_BAD_PARAMETERS = 3; // 0x3 + field public static final int REASON_GENERIC_ERROR = 4; // 0x4 + field public static final int REASON_LOCAL_REQUEST = 1; // 0x1 + field public static final int REASON_MAX_SESSIONS_REACHED = 5; // 0x5 + field public static final int REASON_PROTOCOL_SPECIFIC_ERROR = 7; // 0x7 + field public static final int REASON_REMOTE_REQUEST = 2; // 0x2 + field public static final int REASON_SYSTEM_POLICY = 6; // 0x6 + field public static final int REASON_UNKNOWN = 0; // 0x0 + } + + public final class UwbAddress implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public static android.uwb.UwbAddress fromBytes(@NonNull byte[]); + method public int size(); + method @NonNull public byte[] toBytes(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.uwb.UwbAddress> CREATOR; + field public static final int EXTENDED_ADDRESS_BYTE_LENGTH = 8; // 0x8 + field public static final int SHORT_ADDRESS_BYTE_LENGTH = 2; // 0x2 + } + + public final class UwbManager { + method public long elapsedRealtimeResolutionNanos(); + method public int getAngleOfArrivalSupport(); + method public int getMaxRemoteDevicesPerInitiatorSession(); + method public int getMaxRemoteDevicesPerResponderSession(); + method public int getMaxSimultaneousSessions(); + method @NonNull public android.os.PersistableBundle getSpecificationInfo(); + method @NonNull public java.util.List<java.lang.Integer> getSupportedChannelNumbers(); + method @NonNull public java.util.Set<java.lang.Integer> getSupportedPreambleCodeIndices(); + method public boolean isRangingSupported(); + method @NonNull public AutoCloseable openRangingSession(@NonNull android.os.PersistableBundle, @NonNull java.util.concurrent.Executor, @NonNull android.uwb.RangingSession.Callback); + method public void registerAdapterStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.uwb.UwbManager.AdapterStateCallback); + method public void unregisterAdapterStateCallback(@NonNull android.uwb.UwbManager.AdapterStateCallback); + field public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_2D = 2; // 0x2 + field public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_HEMISPHERICAL = 3; // 0x3 + field public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_SPHERICAL = 4; // 0x4 + field public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_NONE = 1; // 0x1 + } + + public static interface UwbManager.AdapterStateCallback { + method public void onStateChanged(boolean, int); + field public static final int STATE_CHANGED_REASON_ALL_SESSIONS_CLOSED = 1; // 0x1 + field public static final int STATE_CHANGED_REASON_ERROR_UNKNOWN = 4; // 0x4 + field public static final int STATE_CHANGED_REASON_SESSION_STARTED = 0; // 0x0 + field public static final int STATE_CHANGED_REASON_SYSTEM_BOOT = 3; // 0x3 + field public static final int STATE_CHANGED_REASON_SYSTEM_POLICY = 2; // 0x2 + } + +} + package android.view { public abstract class Window { diff --git a/core/java/android/uwb/AngleMeasurement.java b/core/java/android/uwb/AngleMeasurement.java index 93b5fd4cd4b6..9df213b2092f 100644 --- a/core/java/android/uwb/AngleMeasurement.java +++ b/core/java/android/uwb/AngleMeasurement.java @@ -18,6 +18,7 @@ package android.uwb; import android.annotation.FloatRange; import android.annotation.NonNull; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -31,6 +32,7 @@ import java.util.Objects; * * @hide */ +@SystemApi public final class AngleMeasurement implements Parcelable { private final double mRadians; private final double mErrorRadians; diff --git a/core/java/android/uwb/AngleOfArrivalMeasurement.java b/core/java/android/uwb/AngleOfArrivalMeasurement.java index 20a1c7aa72d0..3d8626b98bed 100644 --- a/core/java/android/uwb/AngleOfArrivalMeasurement.java +++ b/core/java/android/uwb/AngleOfArrivalMeasurement.java @@ -18,6 +18,7 @@ package android.uwb; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -28,6 +29,7 @@ import java.util.Objects; * * @hide */ +@SystemApi public final class AngleOfArrivalMeasurement implements Parcelable { private final AngleMeasurement mAzimuthAngleMeasurement; private final AngleMeasurement mAltitudeAngleMeasurement; @@ -53,7 +55,7 @@ public final class AngleOfArrivalMeasurement implements Parcelable { * @return the azimuth {@link AngleMeasurement} */ @NonNull - public AngleMeasurement getAzimuthAngleMeasurement() { + public AngleMeasurement getAzimuth() { return mAzimuthAngleMeasurement; } @@ -70,7 +72,7 @@ public final class AngleOfArrivalMeasurement implements Parcelable { * @return altitude {@link AngleMeasurement} or null when this is not available */ @Nullable - public AngleMeasurement getAltitudeAngleMeasurement() { + public AngleMeasurement getAltitude() { return mAltitudeAngleMeasurement; } @@ -85,8 +87,8 @@ public final class AngleOfArrivalMeasurement implements Parcelable { if (obj instanceof AngleOfArrivalMeasurement) { AngleOfArrivalMeasurement other = (AngleOfArrivalMeasurement) obj; - return mAzimuthAngleMeasurement.equals(other.getAzimuthAngleMeasurement()) - && mAltitudeAngleMeasurement.equals(other.getAltitudeAngleMeasurement()); + return mAzimuthAngleMeasurement.equals(other.getAzimuth()) + && mAltitudeAngleMeasurement.equals(other.getAltitude()); } return false; } @@ -116,11 +118,9 @@ public final class AngleOfArrivalMeasurement implements Parcelable { public AngleOfArrivalMeasurement createFromParcel(Parcel in) { Builder builder = new Builder(); - builder.setAzimuthAngleMeasurement( - in.readParcelable(AngleMeasurement.class.getClassLoader())); + builder.setAzimuth(in.readParcelable(AngleMeasurement.class.getClassLoader())); - builder.setAltitudeAngleMeasurement( - in.readParcelable(AngleMeasurement.class.getClassLoader())); + builder.setAltitude(in.readParcelable(AngleMeasurement.class.getClassLoader())); return builder.build(); } @@ -144,7 +144,7 @@ public final class AngleOfArrivalMeasurement implements Parcelable { * @param azimuthAngle azimuth angle */ @NonNull - public Builder setAzimuthAngleMeasurement(@NonNull AngleMeasurement azimuthAngle) { + public Builder setAzimuth(@NonNull AngleMeasurement azimuthAngle) { mAzimuthAngleMeasurement = azimuthAngle; return this; } @@ -155,7 +155,7 @@ public final class AngleOfArrivalMeasurement implements Parcelable { * @param altitudeAngle altitude angle */ @NonNull - public Builder setAltitudeAngleMeasurement(@NonNull AngleMeasurement altitudeAngle) { + public Builder setAltitude(@NonNull AngleMeasurement altitudeAngle) { mAltitudeAngleMeasurement = altitudeAngle; return this; } diff --git a/core/java/android/uwb/DistanceMeasurement.java b/core/java/android/uwb/DistanceMeasurement.java index 10c2172d5a6b..2a9bbdf3ec5d 100644 --- a/core/java/android/uwb/DistanceMeasurement.java +++ b/core/java/android/uwb/DistanceMeasurement.java @@ -19,6 +19,7 @@ package android.uwb; import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -32,6 +33,7 @@ import java.util.Objects; * * @hide */ +@SystemApi public final class DistanceMeasurement implements Parcelable { private final double mMeters; private final double mErrorMeters; diff --git a/core/java/android/uwb/RangingMeasurement.java b/core/java/android/uwb/RangingMeasurement.java index 50e5f0d8d554..249e2b746d0d 100644 --- a/core/java/android/uwb/RangingMeasurement.java +++ b/core/java/android/uwb/RangingMeasurement.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; @@ -33,6 +34,7 @@ import java.util.Objects; * * @hide */ +@SystemApi public final class RangingMeasurement implements Parcelable { private final UwbAddress mRemoteDeviceAddress; private final @Status int mStatus; diff --git a/core/java/android/uwb/RangingReport.java b/core/java/android/uwb/RangingReport.java index 5b5f084914ab..7a2df8617700 100644 --- a/core/java/android/uwb/RangingReport.java +++ b/core/java/android/uwb/RangingReport.java @@ -18,6 +18,7 @@ package android.uwb; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -30,6 +31,7 @@ import java.util.Objects; * * @hide */ +@SystemApi public final class RangingReport implements Parcelable { private final List<RangingMeasurement> mRangingMeasurements; diff --git a/core/java/android/uwb/RangingSession.java b/core/java/android/uwb/RangingSession.java index 0f87af415825..bfa8bf21ec6a 100644 --- a/core/java/android/uwb/RangingSession.java +++ b/core/java/android/uwb/RangingSession.java @@ -18,6 +18,7 @@ package android.uwb; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.SystemApi; import android.os.Binder; import android.os.PersistableBundle; import android.os.RemoteException; @@ -42,6 +43,7 @@ import java.util.concurrent.Executor; * * @hide */ +@SystemApi public final class RangingSession implements AutoCloseable { private static final String TAG = "Uwb.RangingSession"; private final SessionHandle mSessionHandle; diff --git a/core/java/android/uwb/UwbAddress.java b/core/java/android/uwb/UwbAddress.java index b9523a307c42..22883be88760 100644 --- a/core/java/android/uwb/UwbAddress.java +++ b/core/java/android/uwb/UwbAddress.java @@ -18,6 +18,7 @@ package android.uwb; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -28,6 +29,7 @@ import java.util.Arrays; * * @hide */ +@SystemApi public final class UwbAddress implements Parcelable { public static final int SHORT_ADDRESS_BYTE_LENGTH = 2; public static final int EXTENDED_ADDRESS_BYTE_LENGTH = 8; diff --git a/core/java/android/uwb/UwbManager.java b/core/java/android/uwb/UwbManager.java index 15ee5b5f22eb..8adfe0601b14 100644 --- a/core/java/android/uwb/UwbManager.java +++ b/core/java/android/uwb/UwbManager.java @@ -20,6 +20,7 @@ import android.annotation.CallbackExecutor; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SuppressLint; +import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; import android.os.IBinder; @@ -44,6 +45,7 @@ import java.util.concurrent.Executor; * * @hide */ +@SystemApi @SystemService(Context.UWB_SERVICE) public final class UwbManager { private IUwbAdapter mUwbAdapter; diff --git a/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java b/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java index e0884e3e1c28..9394dec7f46f 100644 --- a/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java +++ b/core/tests/uwbtests/src/android/uwb/AngleOfArrivalMeasurementTest.java @@ -42,14 +42,14 @@ public class AngleOfArrivalMeasurementTest { AngleOfArrivalMeasurement.Builder builder = new AngleOfArrivalMeasurement.Builder(); tryBuild(builder, false); - builder.setAltitudeAngleMeasurement(altitude); + builder.setAltitude(altitude); tryBuild(builder, false); - builder.setAzimuthAngleMeasurement(azimuth); + builder.setAzimuth(azimuth); AngleOfArrivalMeasurement measurement = tryBuild(builder, true); - assertEquals(azimuth, measurement.getAzimuthAngleMeasurement()); - assertEquals(altitude, measurement.getAltitudeAngleMeasurement()); + assertEquals(azimuth, measurement.getAzimuth()); + assertEquals(altitude, measurement.getAltitude()); } private AngleMeasurement getAngleMeasurement(double radian, double error, double confidence) { diff --git a/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java b/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java index b4b2e303443e..8e7f7c562ade 100644 --- a/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java +++ b/core/tests/uwbtests/src/android/uwb/UwbTestUtils.java @@ -42,8 +42,8 @@ public class UwbTestUtils { public static AngleOfArrivalMeasurement getAngleOfArrivalMeasurement() { return new AngleOfArrivalMeasurement.Builder() - .setAltitudeAngleMeasurement(getAngleMeasurement()) - .setAzimuthAngleMeasurement(getAngleMeasurement()) + .setAltitude(getAngleMeasurement()) + .setAzimuth(getAngleMeasurement()) .build(); } |