安卓屏幕常亮

借鉴文章

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”

安卓屏幕常亮_第1张图片

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后只能显示黑色。

你可能感兴趣的:(安卓屏幕常亮)