2012-12-05 64 views
1

我已经写了一个android应用程序,现在有一个问题。Android:哪些事件唤醒设备

如果我的应用程序正在运行,并且关闭了我的设备,那么有时它会在大约8秒钟后唤醒,然后屏幕打开并再次显示我的应用程序。

我的问题是: 哪些事件或处理约束(如处理广播意图)唤醒设备?

编辑:带有RCT_WAKEUP的闹钟是否会打开设备屏幕?

在此先感谢!

回答

1

AlarmManager不会真正为您打开屏幕。你可以使用唤醒锁来代替。

PowerManager.WakeLock wakelock; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ......... 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK 
       | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AlarmReceiver"); 
    wakelock.acquire();  
} 

当你与活动做只是一定要释放唤醒锁定:

@Override 
protected void onStop() { 
    super.onStop(); 
    wakelock.release(); 
} 

您还需要添加之后锁定权限在manifest文件:

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

或者,如果您不想包含此额外权限,则可以在您的活动中使用以下代码而不是使用唤醒锁:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | 
       WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
       WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | 
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
+0

嗨,谢谢你的回答。 但我的问题不是如何唤醒设备和如何保持屏幕,但哪些事件会唤醒我的设备。我不想唤醒我的设备,它不是一部手机,也不是一部平板电脑,而是一部自定义设备,它必须处于睡眠模式一段时间,而不会自动开机。 – robotniko