gpt4 book ai didi

android - 有没有办法检测用户何时更改了设备上的时钟时间?

转载 作者:IT王子 更新时间:2023-10-29 00:10:54 24 4
gpt4 key购买 nike

有没有办法在 Android 中检测 Android 系统时钟何时被用户重置?

我正在设计一个应用程序,它使用系统时间来确定用户何时在某个时间到达某个地点,并且我不想依赖那时的网络可用性。显然,最好知道用户何时更改了系统时钟,这样他们就不能“作弊”。

最佳答案

是的,有。 ACTION_TIME_CHANGED Intent当设备时间改变时广播,你可以有一个方法在检测到这个 Intent 时触发。

此 Intent 自 API 级别 1 起就已在 Android 中使用,因此它应该适用于您可能需要兼容的任何平台。

您需要使用 BroadcastReceiver 处理广播:

public class TimeChangedReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
//Do whatever you need to
}

}

您还需要在 list 中添加类似的内容:

<receiver android:name=".TimeChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
</receiver>

这将使 Android 知道在检测到此类 Intent 时触发您的接收器。

这似乎与谁编辑时间无关,但也不会在您与网络同步时触发自动调整。但是,如果您丢失网络并重新获得它,这可能会触发,因为您的时间会略有不同(假设您使用的是自动网络时间)。

然而,根据我的经验,虽然手机上的时钟不是特别准确(因为它们通常依赖于与接收到的时间信号同步),但它们绝对不应该超过大约 30 秒或每小时分钟,绝对最大值,所以如果时间变化很小,你也许可以假设它是自动的。添加闰秒时,也可能会产生时间更改消息,尽管这些显然很小且不常见。

您可以使用 ConnectivityManager跟踪手机是否有连接,您可以根据它更改行为(即只要有网络连接,并且时间是自动/网络时间,忽略时间变化或其他东西),但我可以'找不到有关丢失/恢复网络连接的任何 Intent ,因此您可能必须使用轮询方法。

关于android - 有没有办法检测用户何时更改了设备上的时钟时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15544996/

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