【问题标题】:How to get device independent local date and time Android如何获取设备独立的本地日期和时间Android
【发布时间】:2014-08-13 09:46:59
【问题描述】:
我的应用程序是时间相关的,我不希望设备日期和时间的更改影响我的应用程序,例如如果用户故意将设备日期设置为任何以前的日期。当用户连接到移动网络或 WiFi 我不想使用 GPS 时,有什么方法可以获取当前日期和时间。
【问题讨论】:
标签:
android
android-networking
android-date
【解决方案1】:
SystemClock 类的 Javadoc 描述了针对各种场景和条件计算经过时间的不同方法。
在你的情况下,你必须使用
long time = SystemClock.elapsedRealtime();
返回系统启动后的时间,包括深度睡眠。
这个时钟保证是单调的,甚至会继续滴答作响
当 CPU 处于省电模式时,推荐的依据是
通用间隔计时。
当您想开始跟踪 Network 的使用时第一次调用它(我假设您已经知道如何做)并存储该值。
当你收到关于用户不再使用网络的事件时,再次调用相同的方法并计算花费的时间。
long elapsed = time - SystemClock.elapsedRealtime();
接下来您可以将毫秒转换为字符串,例如:
String formattedElapsedTime = DateUtils.formatElapsedTime(elapsed/1000);//note that this method takes second as arguments so we have to divide it by 1000
【解决方案2】:
您应该调用 webservice 并获取服务器的当前日期和时间。然后服务器将负责实际的日期/时间。最好的方法是构建自己的 Web 服务,因为它比使用第三方提供更多的控制权。