⑴ 技术层面上,安卓系统如何获取正确的时间
安卓系统获取正确时间有多种途径。即使在断网且系统自带时间不准确,或设备管理员策略限制了自动校正与更改时区时,仍可通过以下方法获取精确时间。
首先,android系统自带API,如java.util.Date或java.time.LocalDateTime等,可用于获取当前日期与时间。这些API的时间来源通常与硬件时钟同步,不依赖网络连接。
其次,NTP(Network Time Protocol)协议在无网络情况下仍能通过本地时间服务器同步时间。利用NTP客户端库,如TrueTime或Java NTP,可实现这一功能。
此外,应用程序可以通过在本地存储中保存时间戳来获取当前时间。安装时获取当前时间戳并存储在本地数据库或文件中,需要时间时读取时间戳加上设备时间偏移量计算当前时间。
对于“今日水印相机”应用,它使用上述方法之一获取时间戳和地理位置信息。应用获取相机拍摄时间与位置信息,存储于照片中。照片上传其他设备时,应用验证时间戳与地理位置,通过网络验证照片有效性。
⑵ 如何用android开发otp
otp从技术来分有三种形式, 时间同步、事件同步、挑战/应答。
(1) 时间同步
原理是基于 动态令牌和 动态口令验证服务器的时间比对,基于 时间同步的 令牌,一般每60秒产生一个新口令,要求服务器能够十分精确的保持正确的时钟,同时对其令牌的晶振频率有严格的要求,这种技术对应的终端是硬件令牌。
(2)事件同步
基于事件同步的令牌,其原理是通过某一特定的事件次序及相同的种子值作为输入,通过HASH算法中运算出一致的密码。
(3)挑战/应答
常用于的网上业务,在网站/应答上输入 服务端下发的 挑战码, 动态令牌输入该挑战码,通过内置的算法上生成一个6/8位的随机数字,口令一次有效,这种技术目前应用最为普遍,包括刮刮卡、短信密码、动态令牌也有挑战/应答形式。
主流的动态令牌技术是时间同步和挑战/应答两种形式。
项目采用:
https://code.google.com/p/androidtoken/ 实现TOTP动态口令登录
android token 该项目支持HOTP (事件令牌)和TOTP (时间令牌)规范
配置令牌支持:KeyUriFormat和QR码,以及手动创建;
项目实现:
我这里采用添加方便的qr码,也就是常见的二维码来实现用户通过手机来绑定一个token;
首先,需要有的就是服务器端和客户端都共有的一个seed。
private final static String NUM_CHAR = "0123456789";
private static int charLen = NUM_CHAR.length();
/**
* 根据系统时间获得指定位数的随机数
* @param randomNumberDigit 随机数的位数
* @return 获得的随机数
*/
public static String getRandomNumber(int randomNumberDigit) {
long seed = System.currentTimeMillis();// 获得系统时间,作为生成随机数的种子
StringBuffer sb = new StringBuffer();// 装载生成的随机数
Random random = new Random(seed);// 调用种子生成随机数
for (int i = 0; i < randomNumberDigit; i++) {
sb.append(NUM_CHAR.charAt(random.nextInt(charLen)));
}
return sb.toString();
}
⑶ 安卓手机怎样使下载的时间软件和系统时间保持同步
您好:
LG P970搭载的是一款基于androidOS2.2原生版本优化的智能系统,那么 一般第三方软件都是直接读取系统时间 与其同步的,当然有些 如浏览器网页显示时间 可能是以internet时间为准的(这个是服|务器读取 没必要也不易改变);
如果你讨厌时间不准的话,可以在设置==》时间和曰期==》自动(√)勾选打开,必要时要打开设置==》账户和同步==》后|台数据(√)勾选打开即可,当然 有些时间等混乱错误是因为 固件兼容性等端口等问题造成的,那么请尝试 升级你的LG P970到android2.3.6等最新稳定版本 即可。
祝您 愉快 =,=~ 如有其它问题 可直接网络hi我,使用qiú助 或 直接联|系我们讨论。如 想知道其他 最新资讯 可网络 钢七连 终身 荣誉 团
⑷ 手机刷原生安卓系统不同步网络时间,怎么修改来着
adb修改同步时间所用的服务器,原生安装用的国外的,
1. 手机root并开启调试模式。
2. 电脑配置adb环境,打开命令行。
Android 7.0之前版本的系统,执行以下命令:
adb shell "settings put global captive_portal_server connect.rom.miui.com";
Android 7.0之后的版本需要执行下面的两条命令:
adb shell "settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204";
adb shell "settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204";
然后重启,此时,应该去除了叉号或叹号。
时间同步
adb shell settings put global ntp_server asia.pool.ntp.org
⑸ 做android开发,对时间有特别要求,请问怎样让手机时间与网络时间同步用程序开发而不是用其它软件
android的安全机制是禁止你没有root权限的情况下更改时间的,你这么开发程序商用的话没意义,毕竟大家手机不一定都root了,如果在你特殊用途 确定你使用的设备系统已经root了,那可以通过SystemClock.setCurrentTimeMillis()函数来修改系统时间