TYPE_STATUS_BAR 覆盖使系统忽略屏幕超时
TYPE_STATUS_BAR overlay makes system ignore screen timeout
早上好,
我正在开发一个由服务发布的叠加层。
问题是屏幕一直亮着,即使在屏幕超时后也是如此。
这是我的代码:
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.TYPE_STATUS_BAR|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity= Gravity.TOP | Gravity.LEFT;
overlay.setKeepScreenOn(false);
wm.addView(overlay, params);
我已经尝试添加 WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON,但没有成功。
感谢您的帮助。
解决办法是不用WindowManager.LayoutParams.TYPE_STATUS_BAR
但权限较低,因为它仅供系统使用。
早上好, 我正在开发一个由服务发布的叠加层。 问题是屏幕一直亮着,即使在屏幕超时后也是如此。
这是我的代码:
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.TYPE_STATUS_BAR|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity= Gravity.TOP | Gravity.LEFT;
overlay.setKeepScreenOn(false);
wm.addView(overlay, params);
我已经尝试添加 WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON,但没有成功。
感谢您的帮助。
解决办法是不用WindowManager.LayoutParams.TYPE_STATUS_BAR 但权限较低,因为它仅供系统使用。