2014-02-13 3 views
0

Я работаю над записью приложения.Показать диалог при выключенном экране

У меня возникла ситуация, когда the internal storage runs below 10 MB, а затем я останавливаю запись и show a dialog пользователю.

Проблема заключается в том, что пользователь имеет, допустим, 100 МБ бесплатно, запускает запись, блокирует телефон и записывает в фоновом режиме.

Через некоторое время память проходит менее 10 МБ, запись останавливается, но пользователю не отображается диалог, BECAUSE SCREEN IS OFF.

Как я могу показать диалог пользователю после разблокировки телефона и входа в приложение? Я также покажу уведомление, но мое приложение нацелено на android 2.3+ и никаких уведомлений на 2.3.

ответ

3

Вы должны проснуться экраном, используя PowerManager данных приложения контекста:

 PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
     WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); 
     wakeLock.acquire(); 

Чтобы разблокировать его использовать KeyguardManager:

 KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
     KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
     keyguardLock.disableKeyguard(); 

В манифесте, говоря:

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

См. PowerManager и Keyguard Manager в ресурсах для разработчиков Android.

EDIT 1:

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

+0

Нет другого способа сделать это? Я не хочу показывать диалог IN THAT MOMENT. У меня есть уведомление для этого. Проблема заключается в том, что запись прекращается автоматически, потому что <10 МБ, пользователь входит в приложение, мышление все еще записывается, и ТОГДА он должен увидеть диалог, говорящий: «Привет, ваш телефон вышел из памяти. Запись была остановлена». Теперь, когда он входит в приложение, диалог не отображается. –

+0

Итак, что вам нужно? Вам нужно 1) разблокировать телефон. 2) Просыпайтесь по экрану, а затем мне нужно уточнить: 3) отобразить диалог при открытии приложения? Почему диалог не отображается, когда он открывает приложение? ... Другая вещь, которую вы могли бы попробовать, - это несколько флагов, но они работают только в полноэкранном режиме. Я отредактирую свой ответ – SQLiteNoob

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