From c2e4110e99e23f750c969cc09f172ad63108b0c8 Mon Sep 17 00:00:00 2001 From: Nate Jiang Date: Wed, 2 Sep 2020 10:27:52 -0700 Subject: [PATCH] [Aware] API to indicate aware already attached Provide an API for apps to indicate aware is attached and NDIs are creadted. Bug: 167580676 Test: atest android.net.wifi Change-Id: I9a4c3dc6ec4096e9968c4780935f05451fb78a41 --- api/current.txt | 1 + wifi/api/current.txt | 1 + .../net/wifi/aware/IWifiAwareManager.aidl | 1 + .../android/net/wifi/aware/WifiAwareManager.java | 16 ++++++++++++++++ .../net/wifi/aware/WifiAwareManagerTest.java | 9 +++++++++ 5 files changed, 28 insertions(+) diff --git a/api/current.txt b/api/current.txt index a1629f1a937e5..9794ffb880cec 100644 --- a/api/current.txt +++ b/api/current.txt @@ -31812,6 +31812,7 @@ package android.net.wifi.aware { method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @NonNull android.net.wifi.aware.IdentityChangedListener, @Nullable android.os.Handler); method public android.net.wifi.aware.Characteristics getCharacteristics(); method public boolean isAvailable(); + method public boolean isDeviceAttached(); field public static final String ACTION_WIFI_AWARE_STATE_CHANGED = "android.net.wifi.aware.action.WIFI_AWARE_STATE_CHANGED"; field public static final int WIFI_AWARE_DATA_PATH_ROLE_INITIATOR = 0; // 0x0 field public static final int WIFI_AWARE_DATA_PATH_ROLE_RESPONDER = 1; // 0x1 diff --git a/wifi/api/current.txt b/wifi/api/current.txt index b104decab73cb..f3f5a3839aea8 100644 --- a/wifi/api/current.txt +++ b/wifi/api/current.txt @@ -654,6 +654,7 @@ package android.net.wifi.aware { method public void attach(@NonNull android.net.wifi.aware.AttachCallback, @NonNull android.net.wifi.aware.IdentityChangedListener, @Nullable android.os.Handler); method public android.net.wifi.aware.Characteristics getCharacteristics(); method public boolean isAvailable(); + method public boolean isDeviceAttached(); field public static final String ACTION_WIFI_AWARE_STATE_CHANGED = "android.net.wifi.aware.action.WIFI_AWARE_STATE_CHANGED"; field public static final int WIFI_AWARE_DATA_PATH_ROLE_INITIATOR = 0; // 0x0 field public static final int WIFI_AWARE_DATA_PATH_ROLE_RESPONDER = 1; // 0x1 diff --git a/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl b/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl index 88f95ad4d4956..f5b1edce1d695 100644 --- a/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl +++ b/wifi/java/android/net/wifi/aware/IWifiAwareManager.aidl @@ -36,6 +36,7 @@ interface IWifiAwareManager // Aware API boolean isUsageEnabled(); Characteristics getCharacteristics(); + boolean isDeviceAttached(); // client API void connect(in IBinder binder, in String callingPackage, in String callingFeatureId, diff --git a/wifi/java/android/net/wifi/aware/WifiAwareManager.java b/wifi/java/android/net/wifi/aware/WifiAwareManager.java index c2ae17c4bdeba..ac2078cd6ef4d 100644 --- a/wifi/java/android/net/wifi/aware/WifiAwareManager.java +++ b/wifi/java/android/net/wifi/aware/WifiAwareManager.java @@ -178,6 +178,22 @@ public class WifiAwareManager { } } + /** + * Return the current status of the Aware service: whether ot not the device is already attached + * to an Aware cluster. To attach to an Aware cluster, please use + * {@link #attach(AttachCallback, Handler)} or + * {@link #attach(AttachCallback, IdentityChangedListener, Handler)}. + * @return A boolean indicating whether the device is attached to a cluster at this time (true) + * or not (false). + */ + public boolean isDeviceAttached() { + try { + return mService.isDeviceAttached(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Returns the characteristics of the Wi-Fi Aware interface: a set of parameters which specify * limitations on configurations, e.g. the maximum service name length. diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java index 43d728bf593ea..b2597a51fad13 100644 --- a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java +++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java @@ -146,6 +146,15 @@ public class WifiAwareManagerTest { verify(mockAwareService).getCharacteristics(); } + /** + * Validate pass-through of isDeviceAttached() API. + */ + @Test + public void testIsAttached() throws Exception { + mDut.isDeviceAttached(); + verify(mockAwareService).isDeviceAttached(); + } + /* * WifiAwareEventCallbackProxy Tests */