Wifi를 연결하기 위해서 기존에는 WifiManager를 통해 리스트를 스캔해서 뿌려주었습니다
해당 스캔 방법은 이전 포스팅에서 확인하실 수 있습니다
2022.09.20 - [안드로이드] - [Android] Wifi 스캔하기
안드로이드 12로 OS가 업데이트되면서 기존에 Wifi 스캔을 통한 연결방법은 더 이상
시스템에서 동작하지 않게 되었으며 WifiManager를 통해 스캔 리스트를 가져와서
다시 또 리스트뷰에 넣고 하는 일련의 작업들이 전부 필요 없게 되었습니다
어떻게 보면 리스트뷰를 자기 입맛대로 디자인하고 싶은 개발자에게는 좋지 않은 소식이지만
전체 개발 양만 놓고 본다면 현재 변경된 방식이 훨씬 간편해졌습니다
변경된 방식은 intent를 통해서 Wifi Setting창을 열어주는 것인데 기존에 전화를 걸거나
할 때 App에서 못하고 intent를 통해 시스템에 요청하면 시스템이 요청을 처리해서
해당 페이지를 열어주는 방식과 동일합니다
그런데 기존에는 페이지 자체가 열리다 보니 App이 백그라운드로 전환되는 문제가 있었는데
Wifi Setting창은 Dialog 형태로 띄워주기 때문에 App 내부에서 동작하는 것처럼 구현이 됩니다
즉 이제부터는 App에서 Wifi 연결에 대한 부분은 신경 쓰지 않고 상관도 안 하는 대신
Dialog를 띄워서 사용자에게 직접 선택을 하도록 유도하게 되었습니다
기존 방식
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = "\"" + SSID + "\"";
wifiConfig.preSharedKey = "\"" + PASS +"\"";
WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
int netId = wifiNanager.addNetwork(wifiConfig);
wifiNanager.disconnect();
wifiManager.enableNetwork(netId,true);
wifiNanager.reconnect();
기존 방식은 WifiConfiguration을 통해 연결할 Wifi 모듈의 정보를 구성하고
WifiManager를 통해 Network를 추가한 다음 기존 연결을 해제한 뒤에 설정한
네트워크로 다시 연결하도록 하는 방식이었습니다
변경된 방식
startActivity(new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY));
위의 일련의 과정이 전부 필요 없이 연결이 필요한 곳에서 위 코드만 실행해주면 끝입니다
개발자 입장에서는 복잡한 설정 필요없이 Wifi연결 창을 Dialog로 호출하기 때문에
개발 소스가 현저하게 줄어들게 되었습니다
해당 코드를 통해 현재 연결된 Wifi가 IOTDEV가 아니라면 안내문구를 띄우는 예제를 만들어 보겠습니다
mainBinding.wifiSet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY));
}
});
manager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mainBinding.settingBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WifiInfo info = manager.getConnectionInfo();
if(info.getSSID().contains("IOTDEV")) {
//실행할 소스코드
}else{
Toast.makeText(getApplicationContext(),"먼저 WIFI를 IOT Device와 연결해주세요",Toast.LENGTH_SHORT).show();
}
}
});
WifiInfo를 통해 현재 연결된 Wifi가 무엇인지 확인하고
연결할 Wifi 디바이스인 IOTDEV가 아니면 안내문구를 띄워줍니다
만약 현재 연결된 Wifi가 IOTDEV이면 다음 코드를 실행합니다
'안드로이드' 카테고리의 다른 글
[Android] this and base files have different roots 에러해결 (1) | 2022.09.23 |
---|---|
[Android] REST API GET 통신하기 (2) | 2022.09.22 |
[Android] Wifi 스캔하기 (4) | 2022.09.20 |
[Android] REST API 통신하기 (10) | 2022.09.16 |
[Android] View Binding (3) | 2022.09.15 |
댓글