she*_*pya 4 android screen powermanager
当用户使用电源按钮关闭时,我需要以编程方式打开屏幕,是的,我总是在Activity保持屏幕上有正确的标志,但它不会避免用户按下电源按钮.
到目前为止,我已经找到了一个解决方案,但它使用了一个已弃用的唤醒锁
sWakeLock = sPM.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG_WAKELOCK);
sWakeLock.acquire();
sWakeLock.release();
Run Code Online (Sandbox Code Playgroud)
有更好的方法来实现它吗?
rub*_*bmz 12
在Lollipop中,您可能想要添加更多标志:
final Window win = getWindow();
win.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON );
Run Code Online (Sandbox Code Playgroud)
以下是从活动中打开屏幕的最新方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(true);
} else {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
Run Code Online (Sandbox Code Playgroud)
使用FLAG_TURN_SCREEN_ON但此标志已在 API 级别 27 中弃用,因此从 API 级别 27 开始使用Activity.setTurnScreenOn(true)。
小智 7
代码
PowerManager powerManager = (PowerManager) context.getSystemService(context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "appname::WakeLock");
//acquire will turn on the display
wakeLock.acquire();
//release will release the lock from CPU, in case of that, screen will go back to sleep mode in defined time bt device settings
wakeLock.release();
Run Code Online (Sandbox Code Playgroud)
在清单文件中,权限应该是
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10004 次 |
| 最近记录: |