2016-01-22 3 views
1

Я хочу сделать таймер на 10 мин. но проблема в том, что я не хочу, чтобы пользователь мог обрабатывать системное время или выключать устройство для обмана. есть ли способ работать с этим таймером, даже пользователь меняет время устройства или выключает устройство? благодарим за любую помощь.android timer работать в любом случае

+0

Вы имеете в виду отслеживать обратный отсчет, когда устройство выключено? Я не думаю, что это возможно, но вы можете сохранить время при завершении работы, а затем возобновить работу, когда он отключился при включении питания. – DigitalNinja

ответ

0

Используя широковещательную рассылку ACTION_TIME_CHANGED Intent, вы можете обнаружить, когда время устройства изменилось.

Вам необходимо добавить намерение трансляции к вашему манифесту, чтобы вызвать приемник, когда обнаружен этот тип намерения.

<receiver android:name=".TimeChangedReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.TIME_SET" /> 
    </intent-filter> 
</receiver> 

Чтобы справиться с Broadcast использовать BroadcastReceiver:

public class TimeChangedReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //Logic here 
     //If you have multiple broadcast registered take action for each 
    } 

} 

телефон регулирует время периодически, так как внутреннее время не точным, но вы можете рассчитывать на имеющие не более, чем несколько секунд регулировка в час. Обычно это происходит, когда он повторно подключается к сети и совершает вызов NTP (именно так происходит обнаружение, когда вы изменили часовой пояс после полета для ex.)

Ваш вещательный приемник также обнаружит это изменение, но после прыжка секунды добавляются нечасто и, очевидно, небольшое количество, которое может иметь логика для фильтрации этих изменений из внесенных пользователем изменений.

0

Вы можете использовать свой собственный сервер времени, вместо того, чтобы использовать системное время клиент

+0

Предполагаю, что я не хочу использовать сеть или интернет – amir

0

Если пользователь может изменить системное время они смогут получить вокруг таймера независимо. Чтобы обойти остановку системы, просто сохраните время запуска с помощью System.currentTimeMillis в файле, который дает вам время с момента и вычитает это значение из любого текущего времени.

Смежные вопросы