【问题标题】:How to set wi-fi in lock mode in API 29?如何在 API 29 中将 Wi-Fi 设置为锁定模式?
【发布时间】:2022-01-17 00:21:56
【问题描述】:

我正在使用 Google 的 mediaPlayer 指南。要锁定 wi-fi 以防止被禁用,建议在通过 wi-fi 播放媒体时将其锁定:

val wifiManager = getSystemService(Context.WIFI_SERVICE) as WifiManager
val wifiLock: WifiManager.WifiLock =
    wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL, "mylock")

但由于 API 29 WIFI_MODE_FULL 已弃用。那么如何在 API 29 及更高版本上锁定 wi-fi?

附:我们还应该锁定移动互联网连接还是它始终可用?

【问题讨论】:

    标签: android kotlin android-wifi


    【解决方案1】:

    Api 29 关于Wi-Fi 性能模式有一些变化。根据Android 10 highlights documentation

    应用现在可以通过启用高性能和低延迟模式来请求自适应 Wi-Fi。在低延迟对用户体验很重要的情况下,例如实时游戏、主动语音通话和类似的用例,这些可能是一个很大的好处。该平台与设备固件配合使用,以最低功耗满足要求。要使用新的性能模式,请使用 WIFI_MODE_FULL_LOW_LATENCY 或 WIFI_MODE_FULL_HIGH_PERF 调用 WifiManager.WifiLock.createWifiLock()。在这些模式下,平台与设备固件一起工作,以最低功耗满足要求。

    要支持 Api 29,您现在可以使用 WIFI_MODE_FULL_LOW_LATENCYWIFI_MODE_FULL_HIGH_PERF 常量:

    val wifiManager = getSystemService(Context.WIFI_SERVICE) as WifiManager
    val wifiLock: WifiManager.WifiLock = wifiManager.createWifiLock(
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) WifiManager.WIFI_MODE_FULL_LOW_LATENCY 
        else WifiManager.WIFI_MODE_FULL, 
        "mylock"
    )
    

    【讨论】:

    • 谢谢。我可以将它用于早期的 API 版本吗?
    • 对于早期的 API 版本,您可以使用 WifiManager.WIFI_MODE_FULLWifiManager.WIFI_MODE_FULL_HIGH_PERF
    • 那么我们可以同时使用WifiManager.WIFI_MODE_FULL_HIGH_PERF 吗?低延迟和高性能之间有什么区别吗?
    • WIFI_MODE_FULL_LOW_LATENCY锁在应用程序在前台运行且屏幕打开时生效,而WIFI_MODE_FULL_HIGH_PERF锁在其他情况下生效。
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2016-12-30
    • 2014-01-10
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多