2016-09-03 5 views
1

Я хочу создать автономный способ оплаты, когда пользователь может использовать приложение только для продолжительности платежа. Я хочу, чтобы продолжительность платежа была надежной, даже если пользователь меняет время и дату своего телефона.Android офлайн надежная дата длительности

Я пытался с помощью AlarmManager периодически обновлять оставшийся счетчик платежей. Но это не работает, когда пользователь устанавливает дату в прошлое, я пытался прослушать широковещательную передачу DATE_CHANGE. Но это также не передается, когда дата установлена ​​в прошлое.

Я хочу знать, как правильно реализовать этот тип функциональности. Любые советы высоко ценятся.

редактировать 1

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

редактировать 2

time date set broadcast not firing in the past

ASOP issue

+0

Не используйте комментарии для получения новой информации. Измените вопрос. Во всяком случае, вы считали использование GPS в качестве источника времени. AFAIK намного сложнее подделать. – Robert

+0

Как я могу надежно получить правильное время от GPS. Кроме того, мне нужно включить местоположение для этого. Что произойдет, если пользователь не разрешит размещение приложения? – fuadj

+0

Они не позволяют пользователю использовать ваше приложение? Во всяком случае, ваш концепт-сон имеет смысл. Если у вас нет связи, как приложение знает, в какое время оно находится внутри или вне «продолжительности платежа»? Во всяком случае, чего вы хотите достичь с таким ограничением? – Robert

ответ

2

Для того, чтобы понять, не имеющий доступ к Интернету нет определенного способа, чтобы решить вашу проблему. Единственное, что вы можете сделать - это контролировать все источники времени, к которым у вас есть доступ, и обнаруживать манипуляции (регулярно проверяйте и записывайте данные).

Это не позволит использовать приложение после истечения срока действия лицензии, но это затрудняет его работу.

Первый раз Источник: часы устройства

Вы можете контролировать его регулярно, например, используя CountDownTimer в службе. Запишите время UTC (без часового пояса) в своем приложении и убедитесь, что оно только увеличивается и никогда не уменьшается.

Второй источник времени: GPS

См Sync Android devices via GPS time?

Третий раз Источник: сеть Cell

AFAIK по крайней мере, некоторые сотовые сети имеют внутреннее время. Не знаете, как и если вы можете получить доступ к этому на Android.

Четвертый источник времени: Интернет

При обнаружении активного подключения к Интернету получить время от доверенного источника времени.

+0

Спасибо за направление. – fuadj