只是想知道是否可以使用 Android 中的代码更改屏幕超时

做起来很简单。你应该从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);
}
更好的解决方案是执行以下操作之一(取决于您希望它是动态的还是静态的):
android:keepScreenOn(即始终无限期地防止屏幕超时),WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON创建活动时添加标志,或WakeLock控制屏幕应该打开多长时间(动态)将屏幕超时设置为 -1 似乎并不能准确地完成所需的工作。
我发现将值设置为 Integer.MAX_VALUE 效果更好。
例如:
android.provider.Settings.System.putInt(内容, Settings.System.SCREEN_OFF_TIMEOUT, Integer.MAX_VALUE);
这似乎将最大超时设置为设备允许的最大值。
例如,如果导航到手机上的显示设置时,只允许您拥有 30 分钟的最大屏幕超时,则执行上述代码会将屏幕超时设置为 30 分钟。
如果有人需要将其设置为从不,这里是代码
Settings.System.putString(cr, Settings.System.SCREEN_OFF_TIMEOUT, "-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();
}