Return CancellationSignal when opening UWB session

Returns a CancellationSignal instead of an AutoCloseable when calling
UwbManager#openRangingSession per API feedback.

Bug: 180396069
Test: atest UwbManagerTests CtsUwbTestCases
Change-Id: I74482c56d1a3686b570c90e7d3c11e45ec2f0adc
Merged-In: I74482c56d1a3686b570c90e7d3c11e45ec2f0adc
This commit is contained in:
Brian Stack
2021-02-18 17:01:06 -08:00
parent 78bce9af5b
commit 23d41b8f0f
3 changed files with 12 additions and 6 deletions

View File

@@ -12415,7 +12415,7 @@ package android.uwb {
public final class UwbManager { public final class UwbManager {
method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public long elapsedRealtimeResolutionNanos(); method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public long elapsedRealtimeResolutionNanos();
method @NonNull @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public android.os.PersistableBundle getSpecificationInfo(); method @NonNull @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public android.os.PersistableBundle getSpecificationInfo();
method @NonNull @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public AutoCloseable openRangingSession(@NonNull android.os.PersistableBundle, @NonNull java.util.concurrent.Executor, @NonNull android.uwb.RangingSession.Callback); method @NonNull @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public android.os.CancellationSignal openRangingSession(@NonNull android.os.PersistableBundle, @NonNull java.util.concurrent.Executor, @NonNull android.uwb.RangingSession.Callback);
method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public void registerAdapterStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.uwb.UwbManager.AdapterStateCallback); method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public void registerAdapterStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.uwb.UwbManager.AdapterStateCallback);
method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public void unregisterAdapterStateCallback(@NonNull android.uwb.UwbManager.AdapterStateCallback); method @RequiresPermission(android.Manifest.permission.UWB_PRIVILEGED) public void unregisterAdapterStateCallback(@NonNull android.uwb.UwbManager.AdapterStateCallback);
} }

View File

@@ -17,6 +17,7 @@
package android.uwb; package android.uwb;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.os.CancellationSignal;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Log; import android.util.Log;
@@ -44,9 +45,11 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub {
* @param executor {@link Executor} to run callbacks * @param executor {@link Executor} to run callbacks
* @param callbacks {@link RangingSession.Callback} to associate with the {@link RangingSession} * @param callbacks {@link RangingSession.Callback} to associate with the {@link RangingSession}
* that is being opened. * that is being opened.
* @return a new {@link RangingSession} * @return a {@link CancellationSignal} that may be used to cancel the opening of the
* {@link RangingSession}.
*/ */
public RangingSession openSession(@NonNull PersistableBundle params, @NonNull Executor executor, public CancellationSignal openSession(@NonNull PersistableBundle params,
@NonNull Executor executor,
@NonNull RangingSession.Callback callbacks) { @NonNull RangingSession.Callback callbacks) {
SessionHandle sessionHandle; SessionHandle sessionHandle;
try { try {
@@ -66,7 +69,9 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub {
RangingSession session = RangingSession session =
new RangingSession(executor, callbacks, mAdapter, sessionHandle); new RangingSession(executor, callbacks, mAdapter, sessionHandle);
mRangingSessionTable.put(sessionHandle, session); mRangingSessionTable.put(sessionHandle, session);
return session; CancellationSignal cancellationSignal = new CancellationSignal();
cancellationSignal.setOnCancelListener(() -> session.close());
return cancellationSignal;
} }
} }

View File

@@ -25,6 +25,7 @@ import android.annotation.SuppressLint;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.SystemService; import android.annotation.SystemService;
import android.content.Context; import android.content.Context;
import android.os.CancellationSignal;
import android.os.IBinder; import android.os.IBinder;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.RemoteException; import android.os.RemoteException;
@@ -228,14 +229,14 @@ public final class UwbManager {
* @param callbacks {@link RangingSession.Callback} to associate with the * @param callbacks {@link RangingSession.Callback} to associate with the
* {@link RangingSession} that is being opened. * {@link RangingSession} that is being opened.
* *
* @return an {@link AutoCloseable} that is able to be used to close or cancel the opening of a * @return an {@link CancellationSignal} that is able to be used to cancel the opening of a
* {@link RangingSession} that has been requested through {@link #openRangingSession} * {@link RangingSession} that has been requested through {@link #openRangingSession}
* but has not yet been made available by * but has not yet been made available by
* {@link RangingSession.Callback#onOpened(RangingSession)}. * {@link RangingSession.Callback#onOpened(RangingSession)}.
*/ */
@NonNull @NonNull
@RequiresPermission(Manifest.permission.UWB_PRIVILEGED) @RequiresPermission(Manifest.permission.UWB_PRIVILEGED)
public AutoCloseable openRangingSession(@NonNull PersistableBundle parameters, public CancellationSignal openRangingSession(@NonNull PersistableBundle parameters,
@NonNull @CallbackExecutor Executor executor, @NonNull @CallbackExecutor Executor executor,
@NonNull RangingSession.Callback callbacks) { @NonNull RangingSession.Callback callbacks) {
return mRangingManager.openSession(parameters, executor, callbacks); return mRangingManager.openSession(parameters, executor, callbacks);