首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以检测用户何时改变了设备上的时钟时间?

是否有一种方法可以检测用户何时改变了设备上的时钟时间?
EN

Stack Overflow用户
提问于 2013-03-21 10:30:59
回答 5查看 35.3K关注 0票数 49

有没有一种方法可以检测安卓系统时钟何时被安卓用户的重置

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-18 17:40:31

是的,有。当设备时间改变时, Intent将被广播,当检测到此意图时,您可以使用一种方法来触发。

这个意图从API级别1开始就在Android中存在,所以它应该可以在任何需要兼容的平台上工作。

你需要用BroadcastReceiver来处理广播

代码语言:javascript
复制
public class TimeChangedReceiver extends BroadcastReceiver {

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

}

您还需要在清单中添加这样的内容:

代码语言:javascript
复制
<receiver android:name=".TimeChangedReceiver">
  <intent-filter>
    <action android:name="android.intent.action.TIME_SET" />
  </intent-filter>
</receiver>

这将让Android知道,当检测到这种意图时,会触发您的接收器。

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

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

您可以使用ConnectivityManager跟踪电话是否有连接,并且可以基于此更改行为(即,只要存在网络连接,并且时间是自动/网络时间,忽略时间更改或其他什么),但我无法找到任何关于丢失/恢复网络连接的意图,因此您可能必须使用轮询方法。

票数 65
EN

Stack Overflow用户

发布于 2013-03-21 11:06:00

如果用户调整了时钟,系统时间(System.currentTimeMillis())就会发生变化,但自引导(SystemClock.elapsedRealtime())以来的运行时间(SystemClock.elapsedRealtime())有望不会改变。通过跟踪这两者之间的差异,就可以检测到用户对系统时钟的重大更改。

重要的是不要跟踪可能由于网络更新系统时钟而引起的小变化。我将假设,就我的目的而言,任何半小时以下的更改都是不相关的;在Locale国家的变化中,系统时间不应该改变,但这也是值得消除的。

经过的实时时间显然会在引导时重置,因此我应该包括一个BroadcastReceiver,以便在接收android.intent.action.BOOT_COMPLETED时重置差异。

票数 22
EN

Stack Overflow用户

发布于 2013-07-15 09:31:42

请注意matt5784的回答:我发现在Android4.1.2上没有意图行动,不知道这是否适用于所有安卓版本,还是只适用于我的版本。而不是

代码语言:javascript
复制
     "android.intent.action.ACTION_TIME_CHANGED"

使用

代码语言:javascript
复制
     "android.intent.action.TIME_SET"
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15544996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档