Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -547,6 +547,7 @@ java_library { "telephony/java/com/android/internal/telephony/euicc/ISetDefaultSmdpAddressCallback.aidl", "telephony/java/com/android/internal/telephony/euicc/ISetNicknameCallback.aidl", "telephony/java/com/android/internal/telephony/euicc/ISwitchToProfileCallback.aidl", "wifi/java/android/net/wifi/ISoftApCallback.aidl", "wifi/java/android/net/wifi/IWifiManager.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareEventCallback.aidl", Loading wifi/java/android/net/wifi/ISoftApCallback.aidl 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.net.wifi; /** * Interface for Soft AP callback. * * @hide */ oneway interface ISoftApCallback { /** * Service to manager callback providing current soft AP state. The possible * parameter values listed are defined in WifiManager.java * * @param state new AP state. One of WIFI_AP_STATE_DISABLED, * WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_ENABLED, * WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_FAILED * @param failureReason reason when in failed state. One of * SAP_START_FAILURE_GENERAL, SAP_START_FAILURE_NO_CHANNEL */ void onStateChanged(int state, int failureReason); /** * Service to manager callback providing number of connected clients. * * @param numClients number of connected clients */ void onNumClientsChanged(int numClients); } wifi/java/android/net/wifi/IWifiManager.aidl +9 −7 Original line number Diff line number Diff line Loading @@ -23,15 +23,15 @@ import android.net.wifi.hotspot2.OsuProvider; import android.net.wifi.hotspot2.PasspointConfiguration; import android.net.wifi.hotspot2.IProvisioningCallback; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.ScanSettings; import android.net.wifi.ScanResult; import android.net.DhcpInfo; import android.net.Network; import android.net.wifi.ISoftApCallback; import android.net.wifi.PasspointManagementObjectDefinition; import android.net.wifi.ScanResult; import android.net.wifi.ScanSettings; import android.net.wifi.WifiActivityEnergyInfo; import android.net.Network; import android.net.DhcpInfo; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Messenger; import android.os.ResultReceiver; Loading Loading @@ -178,5 +178,7 @@ interface IWifiManager void restoreSupplicantBackupData(in byte[] supplicantData, in byte[] ipConfigData); void startSubscriptionProvisioning(in OsuProvider provider, in IProvisioningCallback callback); void registerSoftApCallback(in IBinder binder, in ISoftApCallback callback); } wifi/java/android/net/wifi/WifiManager.java +112 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.net.wifi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; Loading Loading @@ -55,6 +56,8 @@ import com.android.server.net.NetworkPinner; import dalvik.system.CloseGuard; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.net.InetAddress; import java.util.Collections; Loading Loading @@ -432,6 +435,17 @@ public class WifiManager { */ public static final String EXTRA_WIFI_AP_MODE = "wifi_ap_mode"; /** @hide */ @IntDef(flag = false, prefix = { "WIFI_AP_STATE_" }, value = { WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED, }) @Retention(RetentionPolicy.SOURCE) public @interface WifiApState {} /** * Wi-Fi AP is currently being disabled. The state will change to * {@link #WIFI_AP_STATE_DISABLED} if it finishes successfully. Loading Loading @@ -486,6 +500,14 @@ public class WifiManager { @SystemApi public static final int WIFI_AP_STATE_FAILED = 14; /** @hide */ @IntDef(flag = false, prefix = { "SAP_START_FAILURE_" }, value = { SAP_START_FAILURE_GENERAL, SAP_START_FAILURE_NO_CHANNEL, }) @Retention(RetentionPolicy.SOURCE) public @interface SapStartFailure {} /** * If WIFI AP start failed, this reason code means there is no legal channel exists on * user selected band by regulatory Loading Loading @@ -2323,6 +2345,96 @@ public class WifiManager { public void onFailure(int reason); } /** * Base class for soft AP callback. Should be extended by applications and set when calling * {@link WifiManager#registerSoftApCallback(SoftApCallback, Handler)}. * * @hide */ public interface SoftApCallback { /** * Called when soft AP state changes. * * @param state new new AP state. One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED}, * {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED} * @param failureReason reason when in failed state. One of * {@link #SAP_START_FAILURE_GENERAL}, {@link #SAP_START_FAILURE_NO_CHANNEL} */ public abstract void onStateChanged(@WifiApState int state, @SapStartFailure int failureReason); /** * Called when number of connected clients to soft AP changes. * * @param numClients number of connected clients */ public abstract void onNumClientsChanged(int numClients); } /** * Callback proxy for SoftApCallback objects. * * @hide */ private static class SoftApCallbackProxy extends ISoftApCallback.Stub { private final Handler mHandler; private final SoftApCallback mCallback; SoftApCallbackProxy(Looper looper, SoftApCallback callback) { mHandler = new Handler(looper); mCallback = callback; } @Override public void onStateChanged(int state, int failureReason) throws RemoteException { Log.v(TAG, "SoftApCallbackProxy: onStateChanged: state=" + state + ", failureReason=" + failureReason); mHandler.post(() -> { mCallback.onStateChanged(state, failureReason); }); } @Override public void onNumClientsChanged(int numClients) throws RemoteException { Log.v(TAG, "SoftApCallbackProxy: onNumClientsChanged: numClients=" + numClients); mHandler.post(() -> { mCallback.onNumClientsChanged(numClients); }); } } /** * Registers a callback for Soft AP. See {@link SoftApCallback}. Caller will receive the current * soft AP state and number of connected devices immediately after a successful call to this API * via callback. Note that receiving an immediate WIFI_AP_STATE_FAILED value for soft AP state * indicates that the latest attempt to start soft AP has failed. Only one registered callback * is allowed for each process, and multiple calls to this API from the same process will simply * replace the previously registered callback with the new one. * * @param callback A callback for the number of connected clients. * @param handler The Handler on whose thread to execute the callbacks of the {@code * callback} object. If a null is provided then the application's main thread * will be used. * * @hide */ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull SoftApCallback callback, @Nullable Handler handler) { if (callback == null) throw new IllegalArgumentException("callback cannot be null"); Log.v(TAG, "registerSoftApCallback: callback=" + callback + ", handler=" + handler); Looper looper = (handler == null) ? mContext.getMainLooper() : handler.getLooper(); Binder binder = new Binder(); try { mService.registerSoftApCallback(binder, new SoftApCallbackProxy(looper, callback)); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * LocalOnlyHotspotReservation that contains the {@link WifiConfiguration} for the active * LocalOnlyHotspot request. Loading Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -547,6 +547,7 @@ java_library { "telephony/java/com/android/internal/telephony/euicc/ISetDefaultSmdpAddressCallback.aidl", "telephony/java/com/android/internal/telephony/euicc/ISetNicknameCallback.aidl", "telephony/java/com/android/internal/telephony/euicc/ISwitchToProfileCallback.aidl", "wifi/java/android/net/wifi/ISoftApCallback.aidl", "wifi/java/android/net/wifi/IWifiManager.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareDiscoverySessionCallback.aidl", "wifi/java/android/net/wifi/aware/IWifiAwareEventCallback.aidl", Loading
wifi/java/android/net/wifi/ISoftApCallback.aidl 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.net.wifi; /** * Interface for Soft AP callback. * * @hide */ oneway interface ISoftApCallback { /** * Service to manager callback providing current soft AP state. The possible * parameter values listed are defined in WifiManager.java * * @param state new AP state. One of WIFI_AP_STATE_DISABLED, * WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_ENABLED, * WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_FAILED * @param failureReason reason when in failed state. One of * SAP_START_FAILURE_GENERAL, SAP_START_FAILURE_NO_CHANNEL */ void onStateChanged(int state, int failureReason); /** * Service to manager callback providing number of connected clients. * * @param numClients number of connected clients */ void onNumClientsChanged(int numClients); }
wifi/java/android/net/wifi/IWifiManager.aidl +9 −7 Original line number Diff line number Diff line Loading @@ -23,15 +23,15 @@ import android.net.wifi.hotspot2.OsuProvider; import android.net.wifi.hotspot2.PasspointConfiguration; import android.net.wifi.hotspot2.IProvisioningCallback; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.ScanSettings; import android.net.wifi.ScanResult; import android.net.DhcpInfo; import android.net.Network; import android.net.wifi.ISoftApCallback; import android.net.wifi.PasspointManagementObjectDefinition; import android.net.wifi.ScanResult; import android.net.wifi.ScanSettings; import android.net.wifi.WifiActivityEnergyInfo; import android.net.Network; import android.net.DhcpInfo; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Messenger; import android.os.ResultReceiver; Loading Loading @@ -178,5 +178,7 @@ interface IWifiManager void restoreSupplicantBackupData(in byte[] supplicantData, in byte[] ipConfigData); void startSubscriptionProvisioning(in OsuProvider provider, in IProvisioningCallback callback); void registerSoftApCallback(in IBinder binder, in ISoftApCallback callback); }
wifi/java/android/net/wifi/WifiManager.java +112 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.net.wifi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; Loading Loading @@ -55,6 +56,8 @@ import com.android.server.net.NetworkPinner; import dalvik.system.CloseGuard; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.net.InetAddress; import java.util.Collections; Loading Loading @@ -432,6 +435,17 @@ public class WifiManager { */ public static final String EXTRA_WIFI_AP_MODE = "wifi_ap_mode"; /** @hide */ @IntDef(flag = false, prefix = { "WIFI_AP_STATE_" }, value = { WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED, }) @Retention(RetentionPolicy.SOURCE) public @interface WifiApState {} /** * Wi-Fi AP is currently being disabled. The state will change to * {@link #WIFI_AP_STATE_DISABLED} if it finishes successfully. Loading Loading @@ -486,6 +500,14 @@ public class WifiManager { @SystemApi public static final int WIFI_AP_STATE_FAILED = 14; /** @hide */ @IntDef(flag = false, prefix = { "SAP_START_FAILURE_" }, value = { SAP_START_FAILURE_GENERAL, SAP_START_FAILURE_NO_CHANNEL, }) @Retention(RetentionPolicy.SOURCE) public @interface SapStartFailure {} /** * If WIFI AP start failed, this reason code means there is no legal channel exists on * user selected band by regulatory Loading Loading @@ -2323,6 +2345,96 @@ public class WifiManager { public void onFailure(int reason); } /** * Base class for soft AP callback. Should be extended by applications and set when calling * {@link WifiManager#registerSoftApCallback(SoftApCallback, Handler)}. * * @hide */ public interface SoftApCallback { /** * Called when soft AP state changes. * * @param state new new AP state. One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED}, * {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED} * @param failureReason reason when in failed state. One of * {@link #SAP_START_FAILURE_GENERAL}, {@link #SAP_START_FAILURE_NO_CHANNEL} */ public abstract void onStateChanged(@WifiApState int state, @SapStartFailure int failureReason); /** * Called when number of connected clients to soft AP changes. * * @param numClients number of connected clients */ public abstract void onNumClientsChanged(int numClients); } /** * Callback proxy for SoftApCallback objects. * * @hide */ private static class SoftApCallbackProxy extends ISoftApCallback.Stub { private final Handler mHandler; private final SoftApCallback mCallback; SoftApCallbackProxy(Looper looper, SoftApCallback callback) { mHandler = new Handler(looper); mCallback = callback; } @Override public void onStateChanged(int state, int failureReason) throws RemoteException { Log.v(TAG, "SoftApCallbackProxy: onStateChanged: state=" + state + ", failureReason=" + failureReason); mHandler.post(() -> { mCallback.onStateChanged(state, failureReason); }); } @Override public void onNumClientsChanged(int numClients) throws RemoteException { Log.v(TAG, "SoftApCallbackProxy: onNumClientsChanged: numClients=" + numClients); mHandler.post(() -> { mCallback.onNumClientsChanged(numClients); }); } } /** * Registers a callback for Soft AP. See {@link SoftApCallback}. Caller will receive the current * soft AP state and number of connected devices immediately after a successful call to this API * via callback. Note that receiving an immediate WIFI_AP_STATE_FAILED value for soft AP state * indicates that the latest attempt to start soft AP has failed. Only one registered callback * is allowed for each process, and multiple calls to this API from the same process will simply * replace the previously registered callback with the new one. * * @param callback A callback for the number of connected clients. * @param handler The Handler on whose thread to execute the callbacks of the {@code * callback} object. If a null is provided then the application's main thread * will be used. * * @hide */ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull SoftApCallback callback, @Nullable Handler handler) { if (callback == null) throw new IllegalArgumentException("callback cannot be null"); Log.v(TAG, "registerSoftApCallback: callback=" + callback + ", handler=" + handler); Looper looper = (handler == null) ? mContext.getMainLooper() : handler.getLooper(); Binder binder = new Binder(); try { mService.registerSoftApCallback(binder, new SoftApCallbackProxy(looper, callback)); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * LocalOnlyHotspotReservation that contains the {@link WifiConfiguration} for the active * LocalOnlyHotspot request. Loading