【发布时间】:2023-03-14 10:35:01
【问题描述】:
我想使用SCREEN_OFF_TIMEOUT来防止显示器在不活动后关闭,像这样:
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, time);
Android 文档是这样说的:
此值受设置的最大超时限制 * {@link android.app.admin.DevicePolicyManager#setMaximumTimeToLock(ComponentName, long)}.
我不知道这意味着什么。这是否意味着每个设备都有自己的最大值SCREEN_OFF_TIMEOUT?如果是,您如何获得此值?如果不是,那么最大值是多少?
【问题讨论】:
-
如果您的目标是在应用处于前台时保持屏幕打开,请在布局中的某些小部件上使用
android:keepScreenOn="true"。 “这是否意味着每个设备都有自己的最大 SCREEN_OFF_TIMEOUT?” -- 是的,如果设备管理应用设置了限制。 “如果是,你如何获得这个值”——致电getMaximumTimeToLock()onDevicePolicyManager。 -
我在后台运行的服务中使用它,因此
android:keepScreenOn="true"不适用。getMaximumTimeToLock()这个方法是怎么用的?我应该创建DevicePolicyManager的实例吗? -
“我在后台运行的服务中使用它,所以 android:keepScreenOn="true" 不适用”——如果你在后台运行,用户为什么要你要一直开着屏幕吗? “我应该创建一个
DevicePolicyManager的实例吗?” -- 不,那是系统服务。在Context上调用getSystemService(DEVICE_POLICY_SERVICE)以获取DevicePolicyManager的实例。 -
引用文档,“ComponentName:要检查的管理组件的名称,或 null 以聚合所有管理员。此值可能为 null。”所以,试试
null。 -
"0...这是否意味着显示器永远不会关闭?" ——可能,但我对此表示怀疑。我希望在系统确定“不活动”时立即关闭显示器。另请注意,根据源代码,我不确定您是否可以在 Android 9 及更高版本上更改此值。