如何使android设备始终处于唤醒模式?

设备成功后, 现在,我需要使设备始终处于唤醒状态,即始终可见的用户界面,没有黑屏或任何白日梦屏幕。 要做到这一点,我认为我必须完成以下任务:

  1. 没有locking屏幕 – closures
  2. 睡眠设置为“从不”
  3. 白日梦设置为“closures”

我发现的全是应用层,也就是说有一些应用可以完成上面的任务。 但是,由于我的手机是根植的,我想用系统文件来实现,即使其他一些应用程序试图改变上面的function,他们也不应该这样做。

Solutions Collecting From Web of "如何使android设备始终处于唤醒模式?"

  1. 激活开发者模式
  2. 去开发人员选项
  3. 打开“保持清醒”

你的主要用例看起来如下(从你的问题)

即使其他一些应用程序尝试改变以上function,他们也不应该这样做

您可以编写一个系统服务来定期触发PowerManager.WakeLock 。 ( 来源 )

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); // screen and CPU will stay awake during this section wl.release(); 

为了优化服务,您还可以尝试再次定期将屏幕超时设置为最大值,以便即使手动更改,也会重置。 (不知道有多less最大允许,你需要检查试用和错误)

  /** * 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); } 

( 来源 )

我认为你将需要修改框架…构buildframework.jar并将其推送到设备。

你可以参考这个链接知道如何修改框架代码 – 在framework.jar和https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-2-hacking 修改java代码 -周围/

我能想到的其他替代scheme是使用Airwatch / SOTI / SAP Afaria的一些MDM(移动设备pipe理)解决scheme,它们拥有特权API来控制设备。

要防止特定视图上的睡眠模式,只需在该视图上调用setKeepScreenOn(true) ,或将keepScreenOn属性设置为true。

轮stream它将防止屏幕在屏幕上显示时出现。 它工作时不需要WAKE_LOCK权限(或任何特殊权限),这是一个更好的做法。

这也不会强迫手机在应用程序的使用期限之外保持清醒。 你可以用WakeLock来解决这个问题

您可以将上述方法与另一种方法集成以获得完整解决scheme(在应用程序层之外):

从根shell(例如adb shell),你可以locking:

 echo mylockname >/sys/power/wake_lock After which the device will stay awake, until you do: echo mylockname >/sys/power/wake_unlock 

与“mylockname”相同的string。

请注意,这不会阻止屏幕变黑,但会阻止CPUhibernate。

请注意, /sys/power/wake_lock对于用户无线电(1001)和组系统(1000)是可读写的,当然还有root用户。

来源: https : //lwn.net/Articles/479841/

资料来源: https : //stackoverflow.com/a/18968753/3125120

好吧,仔细阅读你的问题后,我发现你并没有寻找任何程序化的解决scheme。 你不想安装一个应用程序来做你想做的就是修改系统文件来自动实现这个function。

基本上你想通过PowerManager类修改公开其方法到其他应用程序的文件来控制hibernate时间和唤醒locking。 这里有两件事你需要知道:

  1. 你正在寻找的系统文件是可用的jar格式不是文本或任何其他forms。
  2. 如果不知何故,你会find该文件,并开始玩,那么你最终会打破Android框架的编译版本,你的手机可能会在那之后行事不端。

结论我明白你想要做一些棘手的事情,但不幸的是,这样做是不可能的,即使你使用这个文件,那么PowerManager类处理的所有操作都将开始和你一起玩。 🙂

如果要通过adb shell命令增加屏幕超时时间,请按以下步骤操作:

脚步

  1. 打开USBdebugging
  2. 通过USB电缆连接Android设备
  3. 更改目录到android-sdk / platform-tools /
  4. 在terminal检查设备使用以下命令连接: $ adb devices
  5. 发出屏幕超时命令: $ adb shell settings put system screen_off_timeout 60000

注意

60000 = 1分钟

所以从开发者select最好的你可以得到是30分钟左右的“唤醒”…

据此,有几个很好的应用程序可以覆盖function,并无限期地保持屏幕:

  1. 保持屏幕打开
  2. 活着
  3. WAKEY

UPDATE

您需要研究Android的文件系统的结构和工作方式,然后去修改其核心文件。 有没有简单的方法来做你所需要的。 唯一的方法是创build一个Android应用程序,它永远不会有一个onDestroy(),并将继续在后台运行。 你可以使用一个WakeLock来实现。

在这里看看如何使用WakeLock