diff options
author | Vinit Deshpande <vinitd@google.com> | 2014-09-03 15:34:59 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-03 15:34:59 +0000 |
commit | 3df10a64b92be8150d005ec5c578fe9cee677f78 (patch) | |
tree | 11b3e082fbd6bbeced9689658418f2048271e464 /wifi/java/android/net/wifi/WifiManager.java | |
parent | 057e9e6be0cbbec2a8df667e1655bb37fc50ecfc (diff) | |
parent | f0f4058c6a1d1b41f90e94593ebf306f9e2b8b89 (diff) | |
download | frameworks_base-3df10a64b92be8150d005ec5c578fe9cee677f78.zip frameworks_base-3df10a64b92be8150d005ec5c578fe9cee677f78.tar.gz frameworks_base-3df10a64b92be8150d005ec5c578fe9cee677f78.tar.bz2 |
am 21790061: am f4b970e5: am 2705b859: Merge "Address API Council feedback for WifiAdapter/WPS APIs" into lmp-dev
* commit '217900618fedda7ddc447b2fb861d0458cf8ed0e':
Address API Council feedback for WifiAdapter/WPS APIs
Diffstat (limited to 'wifi/java/android/net/wifi/WifiManager.java')
-rw-r--r-- | wifi/java/android/net/wifi/WifiManager.java | 239 |
1 files changed, 209 insertions, 30 deletions
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index fea0735..5fc2397 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -598,22 +598,6 @@ public class WifiManager { } /** - * Retrieve all wifi adapters available on this device - * @return list of adapters - */ - public List<WifiAdapter> getAdapters() { - try { - List<WifiAdapter> adapterList = mService.getAdaptors(); - for (WifiAdapter a : adapterList) { - a.mService = mService; - } - return adapterList; - } catch (RemoteException e) { - return null; - } - } - - /** * Return a list of all the networks configured in the supplicant. * Not all fields of WifiConfiguration are returned. Only the following * fields are filled in: @@ -846,6 +830,182 @@ public class WifiManager { } } + /* Keep this list in sync with wifi_hal.h */ + /** @hide */ + public static final int WIFI_FEATURE_INFRA = 0x0001; // Basic infrastructure mode + /** @hide */ + public static final int WIFI_FEATURE_INFRA_5G = 0x0002; // Support for 5 GHz Band + /** @hide */ + public static final int WIFI_FEATURE_PASSPOINT = 0x0004; // Support for GAS/ANQP + /** @hide */ + public static final int WIFI_FEATURE_P2P = 0x0008; // Wifi-Direct + /** @hide */ + public static final int WIFI_FEATURE_MOBILE_HOTSPOT = 0x0010; // Soft AP + /** @hide */ + public static final int WIFI_FEATURE_SCANNER = 0x0020; // WifiScanner APIs + /** @hide */ + public static final int WIFI_FEATURE_NAN = 0x0040; // Neighbor Awareness Networking + /** @hide */ + public static final int WIFI_FEATURE_D2D_RTT = 0x0080; // Device-to-device RTT + /** @hide */ + public static final int WIFI_FEATURE_D2AP_RTT = 0x0100; // Device-to-AP RTT + /** @hide */ + public static final int WIFI_FEATURE_BATCH_SCAN = 0x0200; // Batched Scan (deprecated) + /** @hide */ + public static final int WIFI_FEATURE_PNO = 0x0400; // Preferred network offload + /** @hide */ + public static final int WIFI_FEATURE_ADDITIONAL_STA = 0x0800; // Support for two STAs + /** @hide */ + public static final int WIFI_FEATURE_TDLS = 0x1000; // Tunnel directed link setup + /** @hide */ + public static final int WIFI_FEATURE_TDLS_OFFCHANNEL = 0x2000; // Support for TDLS off channel + /** @hide */ + public static final int WIFI_FEATURE_EPR = 0x4000; // Enhanced power reporting + + private int getSupportedFeatures() { + try { + return mService.getSupportedFeatures(); + } catch (RemoteException e) { + return 0; + } + } + + private boolean isFeatureSupported(int feature) { + return (getSupportedFeatures() & feature) == feature; + } + /** + * @return true if this adapter supports 5 GHz band + */ + public boolean is5GHzBandSupported() { + return isFeatureSupported(WIFI_FEATURE_INFRA_5G); + } + + /** + * @return true if this adapter supports passpoint + * @hide + */ + public boolean isPasspointSupported() { + return isFeatureSupported(WIFI_FEATURE_PASSPOINT); + } + + /** + * @return true if this adapter supports WifiP2pManager (Wi-Fi Direct) + */ + public boolean isP2pSupported() { + return isFeatureSupported(WIFI_FEATURE_P2P); + } + + /** + * @return true if this adapter supports portable Wi-Fi hotspot + * @hide + */ + @SystemApi + public boolean isPortableHotspotSupported() { + return isFeatureSupported(WIFI_FEATURE_MOBILE_HOTSPOT); + } + + /** + * @return true if this adapter supports WifiScanner APIs + * @hide + */ + @SystemApi + public boolean isWifiScannerSupported() { + return isFeatureSupported(WIFI_FEATURE_SCANNER); + } + + /** + * @return true if this adapter supports Neighbour Awareness Network APIs + * @hide + */ + public boolean isNanSupported() { + return isFeatureSupported(WIFI_FEATURE_NAN); + } + + /** + * @return true if this adapter supports Device-to-device RTT + * @hide + */ + @SystemApi + public boolean isDeviceToDeviceRttSupported() { + return isFeatureSupported(WIFI_FEATURE_D2D_RTT); + } + + /** + * @return true if this adapter supports Device-to-AP RTT + */ + @SystemApi + public boolean isDeviceToApRttSupported() { + return isFeatureSupported(WIFI_FEATURE_D2AP_RTT); + } + + /** + * @return true if this adapter supports offloaded connectivity scan + */ + public boolean isPreferredNetworkOffloadSupported() { + return isFeatureSupported(WIFI_FEATURE_PNO); + } + + /** + * @return true if this adapter supports multiple simultaneous connections + * @hide + */ + public boolean isAdditionalStaSupported() { + return isFeatureSupported(WIFI_FEATURE_ADDITIONAL_STA); + } + + /** + * @return true if this adapter supports Tunnel Directed Link Setup + */ + public boolean isTdlsSupported() { + return isFeatureSupported(WIFI_FEATURE_TDLS); + } + + /** + * @return true if this adapter supports Off Channel Tunnel Directed Link Setup + * @hide + */ + public boolean isOffChannelTdlsSupported() { + return isFeatureSupported(WIFI_FEATURE_TDLS_OFFCHANNEL); + } + + /** + * @return true if this adapter supports advanced power/performance counters + */ + public boolean isEnhancedPowerReportingSupported() { + return isFeatureSupported(WIFI_FEATURE_EPR); + } + + /** + * Return the record of {@link WifiActivityEnergyInfo} object that + * has the activity and energy info. This can be used to ascertain what + * the controller has been up to, since the last sample. + * @param updateType Type of info, cached vs refreshed. + * + * @return a record with {@link WifiActivityEnergyInfo} or null if + * report is unavailable or unsupported + * @hide + */ + public WifiActivityEnergyInfo getControllerActivityEnergyInfo(int updateType) { + if (mService == null) return null; + try { + WifiActivityEnergyInfo record; + if (!isEnhancedPowerReportingSupported()) { + return null; + } + synchronized(this) { + record = mService.reportActivityInfo(); + if (record.isValid()) { + return record; + } else { + return null; + } + } + } catch (RemoteException e) { + Log.e(TAG, "getControllerActivityEnergyInfo: " + e); + } + return null; + } + /** * Request a scan for access points. Returns immediately. The availability * of the results is made known later by means of an asynchronous event sent @@ -1479,12 +1639,14 @@ public class WifiManager { /** * Passed with {@link ActionListener#onFailure}. * Indicates that the operation failed due to an internal error. + * @hide */ public static final int ERROR = 0; /** * Passed with {@link ActionListener#onFailure}. * Indicates that the operation is already in progress + * @hide */ public static final int IN_PROGRESS = 1; @@ -1492,6 +1654,7 @@ public class WifiManager { * Passed with {@link ActionListener#onFailure}. * Indicates that the operation failed because the framework is busy and * unable to service the request + * @hide */ public static final int BUSY = 2; @@ -1510,18 +1673,21 @@ public class WifiManager { /** * Passed with {@link ActionListener#onFailure}. * Indicates that the operation failed due to invalid inputs + * @hide */ public static final int INVALID_ARGS = 8; /** * Passed with {@link ActionListener#onFailure}. * Indicates that the operation failed due to user permissions. - * * @hide */ public static final int NOT_AUTHORIZED = 9; - /** Interface for callback invocation on an application action */ + /** + * Interface for callback invocation on an application action + * @hide + */ public interface ActionListener { /** The operation succeeded */ public void onSuccess(); @@ -1534,19 +1700,21 @@ public class WifiManager { } /** Interface for callback invocation on a start WPS action */ - public interface WpsListener { + public static abstract class WpsCallback { /** WPS start succeeded */ - public void onStartSuccess(String pin); + public abstract void onStarted(String pin); /** WPS operation completed succesfully */ - public void onCompletion(); + public abstract void onSucceeded(); /** * WPS operation failed * @param reason The reason for failure could be one of - * {@link #IN_PROGRESS}, {@link #WPS_OVERLAP_ERROR},{@link #ERROR} or {@link #BUSY} + * {@link #WPS_TKIP_ONLY_PROHIBITED}, {@link #WPS_OVERLAP_ERROR}, + * {@link #WPS_WEP_PROHIBITED}, {@link #WPS_TIMED_OUT} or {@link #WPS_AUTH_FAILURE} + * and some generic errors. */ - public void onFailure(int reason); + public abstract void onFailed(int reason); } /** Interface for callback invocation on a TX packet count poll action {@hide} */ @@ -1598,7 +1766,6 @@ public class WifiManager { case WifiManager.CONNECT_NETWORK_FAILED: case WifiManager.FORGET_NETWORK_FAILED: case WifiManager.SAVE_NETWORK_FAILED: - case WifiManager.CANCEL_WPS_FAILED: case WifiManager.DISABLE_NETWORK_FAILED: if (listener != null) { ((ActionListener) listener).onFailure(message.arg1); @@ -1608,7 +1775,6 @@ public class WifiManager { case WifiManager.CONNECT_NETWORK_SUCCEEDED: case WifiManager.FORGET_NETWORK_SUCCEEDED: case WifiManager.SAVE_NETWORK_SUCCEEDED: - case WifiManager.CANCEL_WPS_SUCCEDED: case WifiManager.DISABLE_NETWORK_SUCCEEDED: if (listener != null) { ((ActionListener) listener).onSuccess(); @@ -1617,7 +1783,7 @@ public class WifiManager { case WifiManager.START_WPS_SUCCEEDED: if (listener != null) { WpsResult result = (WpsResult) message.obj; - ((WpsListener) listener).onStartSuccess(result.pin); + ((WpsCallback) listener).onStarted(result.pin); //Listener needs to stay until completion or failure synchronized(sListenerMapLock) { sListenerMap.put(message.arg2, listener); @@ -1626,12 +1792,22 @@ public class WifiManager { break; case WifiManager.WPS_COMPLETED: if (listener != null) { - ((WpsListener) listener).onCompletion(); + ((WpsCallback) listener).onSucceeded(); } break; case WifiManager.WPS_FAILED: if (listener != null) { - ((WpsListener) listener).onFailure(message.arg1); + ((WpsCallback) listener).onFailed(message.arg1); + } + break; + case WifiManager.CANCEL_WPS_SUCCEDED: + if (listener != null) { + ((WpsCallback) listener).onSucceeded(); + } + break; + case WifiManager.CANCEL_WPS_FAILED: + if (listener != null) { + ((WpsCallback) listener).onFailed(message.arg1); } break; case WifiManager.RSSI_PKTCNT_FETCH_SUCCEEDED: @@ -1816,7 +1992,7 @@ public class WifiManager { * @throws IllegalStateException if the WifiManager instance needs to be * initialized again */ - public void startWps(WpsInfo config, WpsListener listener) { + public void startWps(WpsInfo config, WpsCallback listener) { if (config == null) throw new IllegalArgumentException("config cannot be null"); validateChannel(); sAsyncChannel.sendMessage(START_WPS, 0, putListener(listener), config); @@ -1829,7 +2005,7 @@ public class WifiManager { * @throws IllegalStateException if the WifiManager instance needs to be * initialized again */ - public void cancelWps(ActionListener listener) { + public void cancelWps(WpsCallback listener) { validateChannel(); sAsyncChannel.sendMessage(CANCEL_WPS, 0, putListener(listener)); } @@ -2374,4 +2550,7 @@ public class WifiManager { return 0; } } + + + } |