如何使android设备始终处于唤醒模式?
成功创建设备的根目录后。现在,我需要使设备始终处于唤醒状态,即始终可以看到UI,并且没有黑屏或任何白日梦屏幕。为此,我认为我必须做到以下几点:如何使android设备始终处于唤醒模式?,android,root,android-wake-lock,Android,Root,Android Wake Lock,成功创建设备的根目录后。现在,我需要使设备始终处于唤醒状态,即始终可以看到UI,并且没有黑屏或任何白日梦屏幕。为此,我认为我必须做到以下几点: 无锁屏-已关闭 睡眠设置为“从不” 白日梦开始“关闭” 我发现的都是关于应用层的,也就是说,有些应用程序可以完成上述任务。但是,由于我的手机是扎根的,我想通过系统文件来实现,这样即使其他一些应用程序试图更改上述功能,它们也不应该这样做。因此,从开发者选项中,你能得到的最佳效果是30分钟左右的“唤醒” 根据,有一些好的应用程序可以覆盖功能并使屏幕无限期打开
我发现的都是关于应用层的,也就是说,有些应用程序可以完成上述任务。但是,由于我的手机是扎根的,我想通过系统文件来实现,这样即使其他一些应用程序试图更改上述功能,它们也不应该这样做。因此,从开发者选项中,你能得到的最佳效果是30分钟左右的“唤醒” 根据,有一些好的应用程序可以覆盖功能并使屏幕无限期打开: 更新 你需要研究Android文件系统的结构和工作原理,然后去修改它的核心文件。没有简单的方法可以满足你的需求。唯一的方法是创建一个Android应用程序,它永远不会有onDestroy(),并且会在后台持续运行。您可以使用WakeLock来实现这一点
在这里查找您的主要用例如下(根据您的问题) 即使其他一些应用程序试图更改上述功能 那么他们就不应该这样做了 您可以编写一个系统服务来定期触发。() 要优化服务,您还可以尝试定期再次将屏幕超时设置为可能的最大值,以便即使手动更改,也可以重置屏幕超时。(不确定允许的最大值是多少,您需要通过试错法进行检查) ()
要防止特定视图上的睡眠模式,只需在该视图上调用
setKeepScreenOn(true)
,或将keepScreenOn
属性设置为true
反过来,当视图在屏幕上时,它将防止屏幕关闭。它无需WAKE_LOCK许可(或任何特殊许可)即可工作,这是一种更好的做法
此外,这也不会迫使手机在应用程序的生命周期之外保持清醒。你可能会遇到WakeLock的问题
您可以将上述方法与另一种方法集成,以获得完整的解决方案(在应用程序层之外):
从根shell(例如adb shell)中,您可以使用以下命令锁定:
echo mylockname >/sys/power/wake_lock
After which the device will stay awake, until you do:
echo mylockname >/sys/power/wake_unlock
使用与“mylockname”相同的字符串
请注意,这不会阻止屏幕变黑,但会
将阻止CPU睡眠
请注意,/sys/power/wake_lock
对用户无线电(1001)是读写的
和组系统(1000),当然还有根
资料来源:
来源:我认为您需要修改framework…Build framework.jar并将其推送到设备上 您可以参考此链接了解如何修改框架代码- 及
我能想到的另一种选择是使用Airwatch/SOTI/SAP Afaria提供的MDM(移动设备管理)解决方案,该解决方案具有控制设备的特权API。好的,因此仔细阅读您的问题后,我发现您没有寻找任何编程解决方案。你不想安装一个应用程序来实现这一点,你想要的是修改系统文件来自动实现这一功能 基本上,您希望通过PowerManager类修改向其他应用程序公开其方法的文件,以控制睡眠时间和唤醒锁定。这里有两件事你需要知道:
我知道你想通过这样做来做一些棘手的事情,但不幸的是,这样做是不可能的,即使你通过播放该文件来完成,那么由PowerManager类处理的手机的所有操作都将开始与你一起玩。:) 如果要通过adb shell命令增加屏幕超时,请执行以下步骤: 步骤
$adb devices
$adb外壳设置关闭系统屏幕超时60000
60000=1分钟您可以编写一个后台服务来实现这一点?因为我的设备已根目录,如果另一个应用程序尝试在设备上锁定或休眠模式,该怎么办?即使它是否根目录也不重要。。。是的,我不确定即使是一个持久性服务也能持续覆盖一切。你需要一个手动解决方案(然后@Andrew的答案可以工作)或一些代码来实现应用程序的这种效果吗?@Gavriel我需要一些代码来实现这一点。谢谢你的回答,但我已经在我的设备上建立了根目录,我需要在系统文件中进行更改,以便设备始终处于唤醒模式。否则,可能会有另一个应用程序试图锁定或将设备置于睡眠模式。framework.jar是android操作系统使用的java文件。应用程序将无法修改此内容,曾经。@apmartin1991是的,但由于它是根手机,我们可以修改代码并将更改推送到设备上。我们可以刷新我们自己的固件…@Abdrew。请正确理解这个问题。如何防止其他应用程序获得根访问权限,以便它们无法更改您的设置?是的,这是原因之一,为此,我已经提到我需要这样做
/**
* 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);
}
echo mylockname >/sys/power/wake_lock
After which the device will stay awake, until you do:
echo mylockname >/sys/power/wake_unlock