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

如何使android设备始终处于唤醒模式?,android,root,android-wake-lock,Android,Root,Android Wake Lock,成功创建设备的根目录后。现在,我需要使设备始终处于唤醒状态,即始终可以看到UI,并且没有黑屏或任何白日梦屏幕。为此,我认为我必须做到以下几点: 无锁屏-已关闭 睡眠设置为“从不” 白日梦开始“关闭” 我发现的都是关于应用层的,也就是说,有些应用程序可以完成上述任务。但是,由于我的手机是扎根的,我想通过系统文件来实现,这样即使其他一些应用程序试图更改上述功能,它们也不应该这样做。因此,从开发者选项中,你能得到的最佳效果是30分钟左右的“唤醒” 根据,有一些好的应用程序可以覆盖功能并使屏幕无限期打开

成功创建设备的根目录后。现在,我需要使设备始终处于唤醒状态,即始终可以看到UI,并且没有黑屏或任何白日梦屏幕。为此,我认为我必须做到以下几点:

  • 无锁屏-已关闭
  • 睡眠设置为“从不”
  • 白日梦开始“关闭”

  • 我发现的都是关于应用层的,也就是说,有些应用程序可以完成上述任务。但是,由于我的手机是扎根的,我想通过系统文件来实现,这样即使其他一些应用程序试图更改上述功能,它们也不应该这样做。

    因此,从开发者选项中,你能得到的最佳效果是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类修改向其他应用程序公开其方法的文件,以控制睡眠时间和唤醒锁定。这里有两件事你需要知道:

  • 您要查找的系统文件是jar格式,而不是文本或任何其他形式
  • 如果你不知何故找到了那个文件并开始玩它,那么你最终会破坏Android framework的编译版本,之后你的手机可能会出现错误行为
  • 结论
    我知道你想通过这样做来做一些棘手的事情,但不幸的是,这样做是不可能的,即使你通过播放该文件来完成,那么由PowerManager类处理的手机的所有操作都将开始与你一起玩。:)

    如果要通过adb shell命令增加屏幕超时,请执行以下步骤:

    步骤

  • 打开USB调试
  • 通过usb电缆连接android设备
  • 将目录更改为android sdk/平台工具/
  • 使用以下命令连接终端内检查设备:
    $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