비비디바비비부
프로그래밍저장소
비비디바비비부
전체 방문자
오늘
어제
  • 프로그래밍 (72)
    • 안드로이드 (5)
      • 잡다한 지식 (40)
      • Compose (2)
      • Design (3)
      • Project (6)
    • 리액트 (4)
      • 프로젝트 (1)
      • 잡다한 지식 (1)
    • 알고리즘 (3)
      • 알고리즘 문제 (3)
    • AI (4)
      • 딥러닝 (4)
    • CS (2)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
비비디바비비부

프로그래밍저장소

[안드로이드] WifiManager에서 Deprecated된 기능들
안드로이드/잡다한 지식

[안드로이드] WifiManager에서 Deprecated된 기능들

2023. 5. 22. 15:22

Wifi 관련 개발을 하는 중 Android 8,9,12 차이가 존재하는 것을 알게 되어서 정보 공유를 위해 포스팅합니다.

 

1. startScane()

startScane의 Deprecated된 사진

먼저 WifiManager 중 startScane이 Android 9에서부터 Deprecated 되었다.

개발자는 아래와 같은 이유로 Deprecated했다고 한다.

 

"우리는 앱이 네트워크 성능을 개선하고 배터리 수명을 개선하기 위해 요청할 수 있는 스캔 수를 추가로 제한하고 있습니다.
WifiManager.startScan() 사용은 다음으로 제한됩니다.  각 포그라운드 앱은 2분마다 4번 스캔으로 제한됩니다.  결합된 모든 백그라운드 앱은 30분마다 한 번 스캔으로 제한됩니다. "

더보기

"We are further limiting the number of scans apps can request to improve network performance and improve battery life. The WifiManager.startScan() usage is limited to: - Each foreground app is restricted to 4 scans every 2 minutes. - All background apps combined are restricted to one scan every 30 minutes."

결론은 배터리 수명 및 네트워크 성능에 문제가 있어서 Deprecated했다고 한다.

 

출처 - WIFI 검색 정보 제한사항

2. getConnectionInfo()

getConnectionInfo가 deprecated된 사진

getConnectionInfo는 안드로이드 12에서 deprecated되었다. 이유를 찾아보았지만, 자세한 이유는 나오지 않았고 추측만 할 수 있었다.

공식 문서에서는 이 API를 계속 사용할 수 있지만, WifiInfo에서 위치에 민감한 데이터를 마스킹하는 기능과 같은 최신 기능은 이 API를 통해 지원되지 않는다. 라고 적혀있다.

더보기

"Apps can continue using this API, however newer features such as ability to mask out location sensitive data in WifiInfo will not be supported via this API."

getConnectionInfo()는 최신 기능을 사용하지 못하는 API인 것 같고 추후에는 새로운 API를 사용해야할 것 같다.

출처 - wifimanger, getConnectionInfo()

 

코드 예시


        val manager = requireContext().getSystemService(Context.WIFI_SERVICE) as WifiManager
        val scanResults: List<ScanResult> = manager.scanResults

        // 지금 연결된 wifi ssid 얻기
        val request = NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .build()
        val networkCallback = object : ConnectivityManager.NetworkCallback(
            FLAG_INCLUDE_LOCATION_INFO
        ) {
            override fun onCapabilitiesChanged(
                network: Network,
                networkCapabilities: NetworkCapabilities
            ) {
                super.onCapabilitiesChanged(network, networkCapabilities)
                val wifiInfo = networkCapabilities.transportInfo as WifiInfo
                val ssid = wifiInfo.ssid
            }
        }
        val connectivityManager = this.requireContext()
            .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        connectivityManager.registerNetworkCallback(request, networkCallback)

        // 와이파이 검색 후 ssid 같은 거 찾기
        for (scanResult in scanResults) {
            if (scanResult.wifiSsid.toString() == "MY_SSID") {
                val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
                    .setSsid(scanResult.wifiSsid.toString())
                    .setWpa2Passphrase("password")
                    .build()
                val networkRequest = NetworkRequest.Builder()
                    .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                    .setNetworkSpecifier(wifiNetworkSpecifier)
                    .build()

                connectivityManager.requestNetwork(
                    networkRequest,
                    ConnectivityManager.NetworkCallback()
                )
            }
        }
저작자표시 비영리 동일조건 (새창열림)

'안드로이드 > 잡다한 지식' 카테고리의 다른 글

[안드로이드] DroidKnight 2023  (0) 2023.08.16
[안드로이드] 안드로이드 14 베타 1 알아보기 - 1  (2) 2023.05.26
[안드로이드] AsyncTask가 Deprecated된 이유  (0) 2023.05.19
[kotlin] 데이터 클래스 활용법  (0) 2023.05.18
[안드로이드] Compose Pager에서 swipe시 렉  (0) 2023.05.06
    '안드로이드/잡다한 지식' 카테고리의 다른 글
    • [안드로이드] DroidKnight 2023
    • [안드로이드] 안드로이드 14 베타 1 알아보기 - 1
    • [안드로이드] AsyncTask가 Deprecated된 이유
    • [kotlin] 데이터 클래스 활용법
    비비디바비비부
    비비디바비비부
    안드로이드 기술 블로그, 코딩 공부, 프로그래머

    티스토리툴바