gpt4 book ai didi

android - 检测与 WiFi 接入点的断开连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:37 25 4
gpt4 key购买 nike

我正在尝试使用 BroadcastReceiver 来检测手机何时与 WiFi 接入点断开连接。为此,我在 list 中注册了我的 BroadcastReceiver:

<receiver android:name="com.eshayne.android.WiFiBroadcastReceiver">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>

在我的 WiFiBroadcastReceiver 类中,我正在检查 NETWORK_STATE_CHANGED_ACTION 操作并查看 NetworkInfo 的详细状态:

if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info = (NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
android.util.Log.d("com.eshayne.android.WiFiBroadcastReceiver", "network state change - detailedState=" + info.getDetailedState() + ": " + info.toString());
if (info.getDetailedState() == DetailedState.DISCONNECTED) {
...
}
else if (info.getDetailedState() == DetailedState.CONNECTED) {
...
}

我看到的问题是,当手机离开 WiFi 接入点的范围时,我的“断开连接”回调会被调用 6 次 - 非常有规律,大约每 15 秒一次 - 在它停止之前。到目前为止,我还没有找到每个回调的 NetworkInfo 之间的任何区别特征。每个写入日志的 NetworkInfo 对象如下所示:

02-18 10:16:51.918 D/com.eshayne.android.WiFiBroadcastReceiver( 1511): network state change - detailedState=DISCONNECTED: NetworkInfo: type: WIFI[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true

这也不是手机在 WiFi 范围内外徘徊的问题,因为我的“已连接”回调不会在“断开”回调之间调用。两者之间也不会触发任何其他状态。只是一系列快速的 6 个回调,每个回调的详细状态为 DISCONNECTED。

我有没有更好的方法来检测手机何时失去其 WiFi 连接,以便每次断开连接时我的回调只被调用一次?或者有什么方法可以检测我看到的 6 个回调中的哪一个是“最终”回调?

最佳答案

您说这是“6 个断开连接的回调的快速系列”,但您的 if/else-if 仅检查 DISCONNECTED 和 CONNECTED,看起来没有默认 block 来处理所有其他情况。来自 NetworkInfo.DetailedState api 页面,NetworkInfo.getDetailedState() 可以返回 10 种可能的状态,包括“正在连接”、“扫描”、“断开连接”,对于刚刚从网络断开连接的手机来说,所有这些都是合理的行为。

抛出一个默认情况,提醒您任何 wifi 状态的变化,而不仅仅是“已连接”和“已断开”。您可能会发现手机在几种不同的状态之间旋转,而不仅仅是向您射击同一个状态六次。希望从那里开始,如何继续编写代码会更清楚一些。

关于android - 检测与 WiFi 接入点的断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com