首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何保持Android设备屏幕常亮?

如何保持Android设备屏幕常亮?

作者头像
测试加
发布2022-12-05 12:21:46
4K0
发布2022-12-05 12:21:46
举报

背景

在做客户端UI自动化测试或者Monkey自动化测试中,使用jenkins中持续集中测试,经常会遇到因为设备原因导致执行任务失败的Case。

其中有一种场景,是因为设备屏幕锁屏导致自动化任务阻塞失败的场景。

因为,做自动化需要保障设备一直是常亮和解锁的状态,不然如果设备是锁屏状态会阻塞自动化脚本执行,会一直卡死在当前状态。

通常解决这类问题,粗暴的方式就是给手机设备设置高亮,如下图是小米手机的设置操作:

但是这种设置方式有几种缺点:

  • 长时间设备屏幕用不休眠,对手机的电池有很大消耗,因为屏幕长亮也是耗电的,长时间会导致电池鼓包等问题,极大缩短手机寿命。
  • 在华为、oppo等国产手机中没有永不休眠选项,最多只能保持30分钟。
  • 因为手机设备平时会调试或者用于功能测试,手机设备可能被人工锁屏。

综上几个问题,依赖手机设置中屏幕常亮,无法彻底解决问题。

解决思路

解决思路主要是通过有两种方式:

1、使用adb命令亮屏

点亮屏幕—>解锁屏幕

点亮屏幕:adb shell input keyevent KEYCODE_POWER

解锁屏幕:adb shell input keyevent 82

在jenkins的shell中执行自动化脚本前执行adb命令亮屏。

adb -s ${device_name} shell input keyevent KEYCODE_POWER

cd ${project_path} && sh monkey.sh -p com.zhihu.android -t ${run_time} -i ${appID} -e ${appType} -h ${appPath}

使用adb命令亮屏也有个缺点,如果执行命令后没有立即执行自动化脚本,设备屏幕又会自动锁屏。

2、使用外置插件

使用外置插件的方式,是从Android底层系统设置屏幕永不休眠,借助操作Android系统PowerManager API,具体代码如下:

使用LongLightUtils.keepScreenLongLight(this);方法设置使屏幕常亮。

    /**
     * 是否使屏幕常亮
     *
     * @param activity
     */
    public static void keepScreenLongLight(Activity activity) {
        boolean isOpenLight = CommSharedUtil.getInstance(activity).getBoolean(CommSharedUtil.FLAG_IS_OPEN_LONG_LIGHT, true);
        if (isOpenLight) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        } else {
            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }

    }

在BaseActivity中的onCreate生命周期中调用。

然后,把项目编译成apk安装到手机上,执行如下命令:

adb -s ${device_name} shell am start -n com.finddreams.screenlonglight/com.finddreams.screenlonglight.MainActivity

在手机设备前台打开如下页面,设备就会常驻高亮。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 解决思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档