Установить часовой пояс Android Things

После установки Android Things на Raspberry Pi время неверное. Мой часовой пояс — GMT+2, и с помощью date +%Z я вижу часовой пояс RPi — GMT. Как установить часовой пояс?


person Sergio Viudes    schedule 14.06.2017    source источник
comment
Взгляните на этот вопрос и ответы.   -  person Andrii Omelchenko    schedule 14.06.2017
comment
Я не хочу только установить время. Я хочу установить часовой пояс.   -  person Sergio Viudes    schedule 14.06.2017
comment
adb shell settings put global time_zone Europe/Madrid не сработало?   -  person Andrii Omelchenko    schedule 14.06.2017
comment
Спасибо. Но не получилось :(   -  person Sergio Viudes    schedule 14.06.2017
comment
и AlarmManager am = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); am.setTimeZone("Europe/Madrid"); из apk с <uses-permission android:name="android.permission.SET_TIME_ZONE"/> в AndroidManifest.xml?   -  person Andrii Omelchenko    schedule 14.06.2017
comment
Да, это сработало :) Вы должны опубликовать ответ, и я выберу его как правильный.   -  person Sergio Viudes    schedule 16.06.2017
comment
Пожалуйста, смотрите ответ :)   -  person Andrii Omelchenko    schedule 16.06.2017


Ответы (2)


Обновление (на основе комментария Михала Харакала):

Начиная с Предварительная версия 6 TimeManager предоставляет доступ к настройкам устройства, связанным со временем (NB !TimeManager требуется <uses-permission android:name="com.google.android.things.permission.SET_TIME" />). Вы можете использовать .setTimeZone()< /a> метод для установки часового пояса:

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

где timeZoneName — это одна из строк часовых поясов базы данных tz, например. для Киева (GMT +2, DST + 3):

setupTimeZone("Europe/Kiev");

Исходный ответ:

Вы можете установить его программно из приложения через AlarmManager.setTimeZone() как в этом ответе Синессо:

AlarmManager am = (AlarmManager)getContext().getSystemService(Context.ALARM_SERVICE);
am.setTimeZone("Europe/Madrid"); 

с разрешением <uses-permission android:name="android.permission.SET_TIME_ZONE"/> в файле AndroidManifest.xml.

Список названий TimeZone.

person Andrii Omelchenko    schedule 16.06.2017
comment
Это не работает в Android Things DevPreview 5.1 setTimeZone: ни пользователь 10031, ни текущий процесс не имеют android.permission.SET_TIME_ZONE, хотя я добавил разрешение в манифест. Есть идеи? - person MRodrigues; 20.10.2017
comment
@MRodrigues Вы перезагрузили устройство? - person Andrii Omelchenko; 20.10.2017
comment
Ага, тоже пробовал. Следующее выполнение после загрузки с той же ошибкой. - person MRodrigues; 23.10.2017
comment
У меня та же проблема... на самом деле я не могу установить часовой пояс в приложении Android Things API 27! Это возможно ? - person cicciosgamino; 26.02.2018
comment
@cicciosgamino с DP6 представил Google новый API для установки времени. Посмотрите на TimeManager developer.android.com /things/reference/com/google/android/ - person Michal Harakal; 26.03.2018
comment
Как импортировать класс TimeManager - person Divyanshu Kushwaha; 10.08.2018
comment
@DivyanshuKushwaha Просто добавьте import com.google.android.things.device.TimeManager; в свой класс, но Android Studio по умолчанию делает это автоматически. - person Andrii Omelchenko; 10.08.2018

Я использую эти коды

TimeManager timeManager = TimeManager.getInstance(); 
timeManager.setTimeFormat(TimeManager.FORMAT_24);
// Set time zone to Eastern Standard Time
//timeManager.setTimeZone("America/New_York");
timeManager.setTimeZone("GMT");
calendar.setTime(date);
long timeStamp = calendar.getTimeInMillis();
timeManager.setTime(timeStamp);

с этим разрешением: com.google.android.things.permission.SET_TIME

person Pourya Aram    schedule 26.09.2018