Android在应用程序运行时禁用屏幕超时
有没有办法在我的应用程序运行时禁用屏幕保护程序?
屏幕变暗是我的意思。
你想要使用这样的东西:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
我用了:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
禁用屏幕超时和
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
重新启用它。
Google推荐的还有一种XML方式:
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:keepScreenOn="true">
检查Google幻灯片 – 幻灯片16。
“如果忘记了Wakelocks是昂贵的(…)考虑使用android:keepScreenOn以确保正确性”
简单地将下面一行添加到您的MainActivity
,您的应用程序永远不会closures灯光。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
这可以通过获取唤醒锁来完成。
我没有自己testing,但这里是一个小教程。
在一个View中,在我的情况下,一个SurfaceView的子类,您可以始终打开屏幕。 我希望屏幕留在这个视图仍然是东西。
public class MyCoolSurfaceView extends SurfaceView { @Override protected void onAttachedToWindow (){ super.onAttachedToWindow(); this.setKeepScreenOn(true); } @Override protected void onDetachedFromWindow(){ super.onDetachedFromWindow(); this.setKeepScreenOn(false); }
把这个onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
这在你身上
<uses-permission android:name="android.permission.WAKE_LOCK" />
别忘了
wakeLock.release();
在onStop
其重要的是要注意,这些方法都必须从UI线程运行起来。 请参阅从Android Cordova应用程序中的JavaScript更改KeepScreenOn
这是解决这个问题的最好方法
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
如果我们想让任何特定的屏幕始终保持清醒状态,那么处理这个问题的方法就是更好的方法,否则我们必须处理好自己何时启用它并禁用它
https://developer.android.com/training/scheduling/wakelock.html