sin*_*sha 5 android android-intent android-windowmanager android-activity
我有一个注册加速度计的服务.当识别出某些摇动模式时,服务使用此代码启动一个活动.
Intent launchIntent = new Intent("my.package.MAIN_ACTIVITY");
LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(LaunchIntent);
Run Code Online (Sandbox Code Playgroud)
在onCreate
我使用此代码段来解锁手机并打开屏幕:
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)
如果用户有时不与活动交互,我会使用此代码启用显示关闭:
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)
如果在显示活动时显示屏关闭并且电话锁定,并且我重复摇动模式,onStart
则调用该方法.我尝试将相同的代码用于打开和解锁,如上所述,但它不起作用(显示未打开).
可能是什么问题呢?
我设法解决了这个问题.在开始我的活动时,我使用WakeLock
:
PowerManager pm = ((PowerManager) getSystemService(POWER_SERVICE));
screenLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
screenLock.acquire();
Run Code Online (Sandbox Code Playgroud)
此代码将阻止屏幕关闭.但之后我启动了一个延迟几秒的计时器,它禁用了WakeLock
:
if(screenLock.isHeld()) {
screenLock.release();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3660 次 |
最近记录: |