当启动设备时,如果无法连接网络,如何在android上设置当前时间?

时间:2018-08-17 01:38:30

标签: android datetime raspberry-pi3 android-things

我在树莓派上使用Android-Things。 引导设备时。如果连接到网络,

我尝试使用TimeManager API。

private void setupTimeZone(String timeZoneName) {
    TimeManager timeManager = TimeManager.getInstance();
    timeManager.setTimeFormat(TimeManager.FORMAT_24);
    timeManager.setTimeZone(timeZoneName);
}

setupTimeZone("Asia/Seoul");

如果网络已连接到Raspberry pi 设定时间没问题。

但是我的问题仅是在引导设备时,而不是在连接网络时。

如果设备未连接网络。基本上时间设置为Jan 1, 2009 09:00

要更改默认日期,需要修改哪些文件?

谢谢。

1 个答案:

答案 0 :(得分:3)

要设置时间,您可以使用TimeManager.setTime()方法:

  

要使用TimeManager控制设备设置,请先请求   您的权限com.google.android.things.permission.SET_TIME   AndroidManifest.xml,然后获取该类的实例并设置   适合您的应用的属性。

 TimeManager timeManager = TimeManager.getInstance();
 // Use 24-hour time
 timeManager.setTimeFormat(TimeManager.FORMAT_24);

 // Set time zone to Eastern Standard Time
 timeManager.setTimeZone("America/New_York");

 // Set clock time to noon
 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.MILLISECOND, 0);
 calendar.set(Calendar.SECOND, 0);
 calendar.set(Calendar.MINUTE, 0);
 calendar.set(Calendar.HOUR_OF_DAY, 12);
 long timeStamp = calendar.getTimeInMillis();
 timeManager.setTime(timeStamp);

但是Raspberry Pi 3没有内置的实时时钟(RTC),并且没有网络连接或使用外部电池支持的RTC模块(例如DS1307DS3231或其他许多书籍(另请参阅this手册)。 RTC模块通常使用I2C接口,因此您应该首先将RTC模块连接到板上,首先(当您的板连接到网络并且知道当前时间时)通过I2C为其设置实际时间,然后在启动时获取从RTC模块获取当前时间,并将其设置为Android Things系统(如上例所示)。如何通过I2C控制DS3231 RTC,您可以找到here。对于该示例,User space驱动程序的内部结构可以找到there

您还可以通过GPS连接的GSM模块(例如RMC语句)和UART模块(例如AT+CLTS命令)获取当前时间。 / p>