请帮帮我。 我有一个广播接收器:
public class BrcRec extends BroadcastReceiver{
public static WakeLock wakeLock;
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
//Осуществляем блокировку
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
keyguardLock.disableKeyguard();
//Здесь можно делать обработку.
Bundle extras = intent.getExtras();
StringBuilder msgStr = new StringBuilder();
msgStr.append("Одноразовый будильник: ");
Format formatter = new SimpleDateFormat("hh:mm:ss a");
msgStr.append(formatter.format(new Date()));
// Creating activity must be there, i think
Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
//Разблокируем поток.
wakeLock.release();
}
然后它正在工作,我的机器人不会醒来:按钮闪烁一次,就是这样。 哪里出错?
我想唤醒android并在结果中调用一些活动.. 谢谢。
答案 0 :(得分:14)
在您要显示的活动中,您可以添加以下标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
这将导致Activity唤醒设备。
答案 1 :(得分:2)
值得注意的是," joelreeves"即使不使用PowerManager和Wakelock API也可以编写作品。 只需在活动的onCreate上添加Flags,无论何时启动,它都将从手机中完全删除Keyguard和Lock。