WifiNetworkSpecifier는 Android10(API 레벨 29) 이상 기기에서 새롭게 사용할 수 있는 API이다. 폰에서 구글 크롬캐스트나 구글 홈과 같은 기기의 Wi-Fi Network로 연결하여 통신하는데 사용할 수 있다.
연결할 기기를 찾기 위해서 SSID, SSID pattern, BSSID, BSSID pattern 등을 조합하여 연결할 지 결정할 수 있다.
필요 permission Manifest.permission.ACCESS_NETWORK_STATE
1. 기본 예제
: WPA2 보안설정을 가진 Wi-Fi 네트워크에 연결한다.
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid("Device1234") //SSID 이름
.setWpa2Passphrase("12345678") //비밀번호, 보안설정 WPA2
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) //연결 Type
.setNetworkSpecifier(wifiNetworkSpecifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.requestNetwork(networkRequest, networkCallback);
NetworkCallback
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
Log.d(tag, "onAvailable");
}
@Override
public void onUnavailable() {
Log.d(tag, "onUnavailable");
}
};
unregisterNetworkCallback
: 등록된 NetworkCallback을 등록해제하고 연결된 network 연결을 해제한다.
connectivityManager.unregisterNetworkCallback(networkCallback);
2. 보안설정
Enhanced Open(OWE) network
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setIsEnhancedOpen(true)
.build();
WPA3
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid("Device1234")
.setWpa3Passphrase("12345678")
.build();
3. 관련 API
WifiNetworkSpecifier: Local Wi-Fi 네트워크를 요청하는데 사용되는 개체
NetworkRequest: 네트워크 요청을 정의
ConnectivityManager: 네트워크 연결에 관한 것을 관리하는 Manager
WifiNetworkSuggestion을 통한 Wi-Fi 연결은 아래 포스팅에서 볼 수 있다.
반응형
'Android' 카테고리의 다른 글
Android adb command list (0) | 2021.09.07 |
---|---|
Android Annotation Summary (0) | 2021.09.07 |
List up Android version, SDK version, API level (0) | 2021.09.03 |
WifiNetworkSuggestion Example (0) | 2021.09.02 |
Android 버전, SDK 버전, API 수준 정리 (0) | 2020.07.27 |
Android adb 명령어 정리 (0) | 2020.05.19 |
Android Annotation 정리 (0) | 2020.04.23 |
WifiNetworkSuggestion 구현 예제 (0) | 2020.04.20 |