只是想知道是否可以使用Android中的代码更改屏幕超时
答案 0 :(得分:48)
这很简单。你应该学会从Android源代码中解决问题。
/**
* set screen off timeout
* @param screenOffTimeout int 0~6
*/
private void setTimeout(int screenOffTimeout) {
int time;
switch (screenOffTimeout) {
case 0:
time = 15000;
break;
case 1:
time = 30000;
break;
case 2:
time = 60000;
break;
case 3:
time = 120000;
break;
case 4:
time = 600000;
break;
case 5:
time = 1800000;
break;
default:
time = -1;
}
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_OFF_TIMEOUT, time);
}
答案 1 :(得分:9)
更好的解决方案是执行以下操作之一(取决于您希望它是动态的还是静态的):
android:keepScreenOn
(即无限期地阻止屏幕超时),WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
标记,或WakeLock
来控制屏幕的显示时间(动态)查看this blog post了解这两种方法的更多详细示例。
答案 2 :(得分:5)
如果有人需要将其设置为never,则代码为
Settings.System.putString(cr, Settings.System.SCREEN_OFF_TIMEOUT, "-1");
答案 3 :(得分:5)
将屏幕超时设置为-1似乎无法准确地完成所需工作。
我发现将值设置为Integer.MAX_VALUE效果更好。
例如:
android.provider.Settings.System.putInt(content,Settings.System.SCREEN_OFF_TIMEOUT,Integer.MAX_VALUE);
这似乎将最大超时设置为设备允许的最大值。
例如,如果导航到手机上的显示设置只允许最长屏幕超时为30分钟,则执行上述代码会将屏幕超时设置为30分钟。
答案 4 :(得分:-1)
尝试一下。只需将3000更改为所需的屏幕显示时间即可。确保您提供更改系统设置权限。
try {
int mSystemScreenOffTimeOut = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 3000);
} catch (Exception e) {
Toast.makeText(this, "Permission Error", Toast.LENGTH_SHORT).show();
}