美文网首页
安卓屏幕常亮

安卓屏幕常亮

作者: 拉贝 | 来源:发表于2017-11-10 07:55 被阅读34次

    借鉴文章

    Android保持屏幕常亮的三种方法

    Android adb命令点亮屏幕说明

    应用层

    第一种方法:

    1.首先添加权限

    [java]view plaincopy

    print?

    2.代码实现如下

    [java]view plaincopy

    print?

    publicclassScreenActivityextendsActivity

    {

    PowerManager powerManager =null;

    WakeLock wakeLock =null;

    @Override

    protectedvoidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.main);

    powerManager = (PowerManager)this.getSystemService(this.POWER_SERVICE);

    wakeLock =this.powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK,“My Lock”);

    }

    @Override

    protectedvoidonResume() {

    super.onResume();

    wakeLock.acquire();

    }

    @Override

    protectedvoidonPause() {

    super.onPause();

    wakeLock.release();

    }

    }

    public class ScreenActivity extends Activity

    {

    PowerManager powerManager = null;

    WakeLock wakeLock = null;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.main);

    powerManager = (PowerManager)this.getSystemService(this.POWER_SERVICE);

    wakeLock = this.powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");

    }

    @Override

    protected void onResume() {

    super.onResume();

    wakeLock.acquire();

    }

    @Override

    protected void onPause() {

    super.onPause();

    wakeLock.release();

    }

    }

    第二种方法:

    不用定义权限

    直接在

    [java]view plaincopy

    print?

    @Override

    protectedvoidonCreate(Bundle icicle) {

    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    }

    @Override

    protected void onCreate(Bundle icicle) {

    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    }

    补充一下创建锁时flag的值及意义:

    int flags

    各种锁的类型对CPU 、屏幕、键盘的影响:

    PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。

    SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯

    SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯

    FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

    第三种方法:

    也是最简单的

    在布局文件里加上android:keepScreenOn=”true”

    adb命令

    可以如下操作测试: 在系统正常开启的时候,adb输入      echo mem >/sys/power/state ==> kernel休眠    echo on >/sys/power/state  ==> kernel唤醒    echo 255 >/ sys/class/leds/lcd-backlight/brightness ==>点亮屏幕    这时候正常唤醒      在系统已经睡眠的时候,adb输入    echo on >/sys/power/state  ==> kernel唤醒    echo 255 >/ sys/class/leds/lcd-backlight/brightness ==>点亮屏幕    此时可以看到,背光已经被点亮了,然后再输入    ./system/bin/boot_logo_updater    可以看到可以正常输出logo,说明adb cmd是可以正常唤醒系统的,并且LCM也是正常工作的。 不过现在ovl那边系统是disable的,所以只有黑色的数据。      75和77上面直接echo on >/sys/power/state就可以正常开启系统,89上面无法显示,是89的架构不同导致的,HWC那边在睡眠的时候就会关掉OVL这边的layer,故输入power on后只能显示黑色。

    相关文章

      网友评论

          本文标题:安卓屏幕常亮

          本文链接:https://www.haomeiwen.com/subject/wamvmxtx.html