2016-12-27 6 views
3

Я использую предварительный просмотр Android Things на модели Raspberry Pi 3 B. Есть ли способ установить правильную дату/время/часовой пояс?Как изменить дату на устройстве Android Things?

+0

Программный код? Какой язык? – greenapps

+0

Программно или через АБР, Java или Kotlin. –

+0

Java == программно! И почему обычные функции для этого не работают? В чем проблема? – greenapps

ответ

3

Самый простой способ сделать это, вероятно, используя date команда оболочки над ADB. Он требует root, но все изображения предварительного просмотра должны обеспечивать доступ root. Вот пример, который проверяет дату, устанавливает его, а затем проверяет, что изменение даты застрял:

$ adb root 
    restarting adbd as root  
$ adb shell date 
    Sat Jan 1 00:02:40 GMT 2000 
$ adb shell date 1227120016 
    Tue Dec 27 12:00:00 GMT 2016 
$ adb shell date 
    Tue Dec 27 12:00:02 GMT 2016 

Вы можете определить формат команды даты принимает через adb shell date -h. Имейте в виду, что это изменение может не сохраниться в течение силового цикла, так как большинство наборов dev не имеют RTC с батареей.

+0

Работает отлично, спасибо! –

3

Если ваше приложение является системное приложение, вы можете сделать это, как показано ниже:

В вашем AndroidManifest:

<uses-permission android:name="android.permission.SET_TIME" /> 

в своей деятельности:

Calendar c = Calendar.getInstance(); 
    c.set(2009, 9, 9, 12, 0, 0); 
    AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
    am.setTime(c.getTimeInMillis()); 

Это позволит создать систему время до 2009/сентябрь/9-е, see here for API docs

Однако, чтобы использовать разрешение SET_TIME, вы должны быть system app.

К сожалению, при использовании обычной установки ADB от Android Studio он не устанавливает ваше приложение как системное приложение. Вам нужно будет сделать это вручную, используя другие команды ADB.

Это возможно, так как у вас должен быть доступ root на любом устройстве разработчика, здесь идет прогулка, объясняющая, как подтолкнуть ваш apk как системное приложение, а затем вы можете установить время, как указано выше!

https://android.stackexchange.com/questions/76976/how-to-install-app-as-system-app

или

https://android.stackexchange.com/questions/27/how-do-i-properly-install-a-system-app-given-its-apk

Если вы не имеют разрешения (не системное приложение) вы увидите сообщение об ошибке, как это в вашем LogCat:

Caused by: java.lang.SecurityException: setTime: Neither user 10026 nor current process has android.permission.SET_TIME. 
at android.os.Parcel.readException(Parcel.java:1683) 
at android.os.Parcel.readException(Parcel.java:1636) 
at android.app.IAlarmManager$Stub$Proxy.setTime(IAlarmManager.java:224) 
at android.app.AlarmManager.setTime(AlarmManager.java:937) 
at com.blundell.MainActivity.onCreate(MainActivity.java:19)