我在树莓派上使用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
要更改默认日期,需要修改哪些文件?
谢谢。
答案 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模块(例如DS1307或DS3231或其他许多书籍(另请参阅this手册)。 RTC模块通常使用I2C接口,因此您应该首先将RTC模块连接到板上,首先(当您的板连接到网络并且知道当前时间时)通过I2C为其设置实际时间,然后在启动时获取从RTC模块获取当前时间,并将其设置为Android Things系统(如上例所示)。如何通过I2C控制DS3231 RTC,您可以找到here。对于该示例,User space驱动程序的内部结构可以找到there。