Разбудить экран и показать диалог на экране блокировки
У меня запланирован будильник. С помощью WakeLock.acquire()
а также KeyguardLock.disableKeyguard()
Я могу разбудить экран и показать свою активность. Тем не менее, я бы предпочел просто показать диалог. Встроенная сигнализация на моих устройствах HTC и Samsung действует таким образом. Я ожидал найти метод для объекта KeyguardLock, но я не увидел в документах ничего, что привело бы меня в этом направлении. Как я могу оставить KeyguardLock включенным, но показать свой диалог на нем, как это делают встроенные сигналы тревоги. Вот мой текущий код, который работает в onCreate()
KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
keyguardLock = km.newKeyguardLock(KeyguardLockTag);
keyguardLock.disableKeyguard();
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
int flags = PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;
wakeLock = pm.newWakeLock(flags, WakeLockTag);
wakeLock.acquire();
1 ответ
Просто попробуйте это, чтобы разбудить экран вашего устройства даже при блокировке.
package android.taskscheduler;
import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
public abstract class WakeIntentService extends IntentService
{
abstract void doReminderWork(Intent intent);
public static final String LOCK_NAME_STATIC = "your_package_name";
private static PowerManager.WakeLock lockStatic = null;
public static void acquireStaticLock(Context context){
getLock(context).acquire();
}
synchronized private static PowerManager.WakeLock getLock(Context context)
{
if(lockStatic == null)
{
PowerManager powManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
lockStatic = powManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOCK_NAME_STATIC);
lockStatic.setReferenceCounted(true);
}
return (lockStatic);
}
public WakeIntentService(String name)
{
super(name);
}
@Override
final protected void onHandleIntent(Intent intent)
{
try{
doReminderWork(intent);
}finally
{
getLock(this).release();
}
}
}