... | @@ -634,7 +634,7 @@ The network names and passwords of these access points could be distributed via |
... | @@ -634,7 +634,7 @@ The network names and passwords of these access points could be distributed via |
|
|
|
|
|
The `wifi-client-request-network` branch uses three different techniques for requesting a connection to a specific Wi-Fi network:
|
|
The `wifi-client-request-network` branch uses three different techniques for requesting a connection to a specific Wi-Fi network:
|
|
|
|
|
|
##### 1. `WifiNetworkSpecifier`
|
|
**1. `WifiNetworkSpecifier`**
|
|
|
|
|
|
<https://developer.android.com/guide/topics/connectivity/wifi-bootstrap>
|
|
<https://developer.android.com/guide/topics/connectivity/wifi-bootstrap>
|
|
|
|
|
... | @@ -662,7 +662,7 @@ There doesn't seem to be a way to disconnect from the requested network without |
... | @@ -662,7 +662,7 @@ There doesn't seem to be a way to disconnect from the requested network without |
|
If the access point is stopped and restarted, thus forcing the client to disconnect, the system asks for user confirmation again when reconnecting, even if the same `NetworkRequest` and `NetworkCallback` instances are used.
|
|
If the access point is stopped and restarted, thus forcing the client to disconnect, the system asks for user confirmation again when reconnecting, even if the same `NetworkRequest` and `NetworkCallback` instances are used.
|
|
The system asks for user confirmation even if it's currently connected to the requested network.
|
|
The system asks for user confirmation even if it's currently connected to the requested network.
|
|
|
|
|
|
##### 2. `WifiManager#enableNetwork()`
|
|
**2. `WifiManager#enableNetwork()`**
|
|
|
|
|
|
This method is available on Android versions 9 and earlier (API level <= 28) and was tested on the LGE Nexus 5X, Moto G 4G, Honor 8A, Huawei P8 Lite 2015, Alcatel A3 XL and Moto Play E6.
|
|
This method is available on Android versions 9 and earlier (API level <= 28) and was tested on the LGE Nexus 5X, Moto G 4G, Honor 8A, Huawei P8 Lite 2015, Alcatel A3 XL and Moto Play E6.
|
|
|
|
|
... | @@ -680,7 +680,7 @@ The app can disconnect from the requested network and remove the saved configura |
... | @@ -680,7 +680,7 @@ The app can disconnect from the requested network and remove the saved configura |
|
|
|
|
|
TCP connection attempts from the client devices to the device providing the access point (Nokia 1.3) can take several seconds to connect, which is unexpected on a LAN.
|
|
TCP connection attempts from the client devices to the device providing the access point (Nokia 1.3) can take several seconds to connect, which is unexpected on a LAN.
|
|
|
|
|
|
##### 3. `WifiManager#connect()`
|
|
**3. `WifiManager#connect()`**
|
|
|
|
|
|
This method is available on Android versions 9 and earlier (API level <= 28) and was tested on the LGE Nexus 5X, Moto G 4G, Honor 8A, Huawei P8 Lite 2015, Alcatel A3 XL and Moto Play E6.
|
|
This method is available on Android versions 9 and earlier (API level <= 28) and was tested on the LGE Nexus 5X, Moto G 4G, Honor 8A, Huawei P8 Lite 2015, Alcatel A3 XL and Moto Play E6.
|
|
|
|
|
... | @@ -790,7 +790,7 @@ The password would only exist to meet the transport layer's requirement that a p |
... | @@ -790,7 +790,7 @@ The password would only exist to meet the transport layer's requirement that a p |
|
|
|
|
|
To test whether this idea was feasible, we investigated the following questions:
|
|
To test whether this idea was feasible, we investigated the following questions:
|
|
|
|
|
|
##### 1. Can we request a connection to a network that's not currently in range? If so, do we connect automatically when the network comes into range?
|
|
**1. Can we request a connection to a network that's not currently in range? If so, do we connect automatically when the network comes into range?**
|
|
|
|
|
|
On Android versions 9 and earlier (API level <= 28), an app can use the `WifiManager` API to request a connection to a network that's not currently in range.
|
|
On Android versions 9 and earlier (API level <= 28), an app can use the `WifiManager` API to request a connection to a network that's not currently in range.
|
|
If the network later comes into range, the device will connect to it even if the screen is off at the time (tested on the Moto E6 Play and Honor 8A).
|
|
If the network later comes into range, the device will connect to it even if the screen is off at the time (tested on the Moto E6 Play and Honor 8A).
|
... | @@ -806,7 +806,7 @@ On both devices, the connection attempt receives an immediate success callback r |
... | @@ -806,7 +806,7 @@ On both devices, the connection attempt receives an immediate success callback r |
|
If the network comes into range quickly enough then the group info is received.
|
|
If the network comes into range quickly enough then the group info is received.
|
|
If not, there's a `CONNECTION_STATE_CHANGE` broadcast about 10 to 15 seconds after the connection attempt that may indicate that the attempt has timed out.
|
|
If not, there's a `CONNECTION_STATE_CHANGE` broadcast about 10 to 15 seconds after the connection attempt that may indicate that the attempt has timed out.
|
|
|
|
|
|
##### 2. If two or more devices are providing access points with the same network name and password, can a client roam from one to the other?
|
|
**2. If two or more devices are providing access points with the same network name and password, can a client roam from one to the other?**
|
|
|
|
|
|
On Android versions 9 and earlier (API level <= 28) the behaviour depends on whether another network with internet access is available.
|
|
On Android versions 9 and earlier (API level <= 28) the behaviour depends on whether another network with internet access is available.
|
|
|
|
|
... | | ... | |