有没有办法在我的应用运行时禁用屏幕保护程序?
屏幕变暗就是我的意思。
答案 0 :(得分:154)
你想使用这样的东西:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 1 :(得分:91)
我用过:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
禁用屏幕超时和
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
重新启用它。
答案 2 :(得分:74)
Google建议采用XML方式:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
检查Google Slides - 幻灯片16。
“如果被遗忘,唤醒锁是昂贵的(...)考虑使用 android:keepScreenOn以确保正确性“
答案 3 :(得分:3)
简单地在您的MainActivity
下方添加以下行,您的应用永远不会关灯。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 4 :(得分:2)
在View中,在我的情况下是SurfaceView子类,您可以将屏幕设置为on on。我希望屏幕保持开启,而这个视图仍在绘制内容。
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
答案 5 :(得分:2)
将其放在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();
at onStop
答案 6 :(得分:2)
重要的是要注意这些方法都必须从UI线程运行才能工作。见changing KeepScreenOn from javascript in Android cordova app
答案 7 :(得分:1)
这可以通过获取唤醒锁来完成。
我自己没有测试过,但是here是一个关于此的小教程。
答案 8 :(得分:0)
这是解决此问题的最佳方法
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 9 :(得分:0)
android:keepScreenOn="true"
如果我们想让任何特定的屏幕一直处于唤醒状态,那么是更好的处理方式,否则我们必须自己处理启用它并禁用它
https://developer.android.com/training/scheduling/wakelock.html
答案 10 :(得分:0)
procedure SetSleep(aEnable:Boolean);
var
vFlags: integer;
begin
vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;
if aEnable then
begin
CallInUIThread ( // uses FMX.Helpers.Android
procedure
begin
TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
end );
end
else
CallInUIThread (
procedure
begin
TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
end );
end;
答案 11 :(得分:0)
1.getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);是本机Android的最佳解决方案。
2.如果您想使用React android应用程序,请使用以下代码。
@ReactMethod
public void activate() {
final Activity activity = getCurrentActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
});
}
}