[1159]adb判断手机屏幕状态并点亮屏幕

  • 唤醒屏幕操作
os.system("adb shell input keyevent KEYCODE_POWER")
or
os.system('adb shell input keyevent 26')

  • 解锁屏幕
# 屏幕从(500,700)滑动到(500,50),延迟200号,毫秒
os.system("adb -s shell input swipe 500 700 500 50 200" )
# 输入密码
os.system('adb shell input text 1111')
  • 关闭和开启屏幕样例
import datetime,os

# 手机电源开关
def power_switch(device='',p_num='0号'):
    hour = datetime.datetime.today().strftime('%H')
    adb_msg = os.popen('adb -s %s shell dumpsys window policy' % device)
    phone_msg = adb_msg.buffer.read().decode(encoding='utf-8')
    # 10:00~21:00,使手机处于亮屏和解锁状态
    if '10' <=hour <= '21':
        if 'mAwake=true' in phone_msg and 'mInputRestricted=false' in phone_msg:
            print('%s手机,亮屏时段,####已亮屏,已解锁####'%p_num)
            logger.info('%s手机,亮屏时段,####已亮屏,已解锁####'%p_num)
        elif 'mAwake=true' in phone_msg:
            print('%s手机,亮屏时段,****已亮屏,执行解锁****'%p_num)
            logger.info('%s手机,亮屏时段,****已亮屏,执行解锁****' % p_num)
            # 屏幕从(500,700)滑动到(500,50),延迟200号,毫秒
            os.system("adb -s %s shell input swipe 500 700 500 50 200" % device)
        else:
            print('%s手机,亮屏时段,====执行亮屏和解锁====' % p_num)
            logger.info('%s手机,亮屏时段,====执行亮屏和解锁====' % p_num)
            os.system("adb -s %s shell input keyevent KEYCODE_POWER" % device)
            # 屏幕从(500,700)滑动到(500,50),延迟200号,毫秒
            os.system("adb -s %s shell input swipe 500 700 500 50 200" % device)
    else:
        # 处于息屏状态
        if 'mAwake=true' in phone_msg:
            print('%s手机,非亮屏时段,====已亮屏,关闭亮屏====' % p_num)
            logger.info('%s手机,非亮屏时段,====已亮屏,关闭亮屏====' % p_num)
            os.system("adb -s %s shell input keyevent KEYCODE_POWER" % device)
        else:
            print('%s手机,非亮屏时段,====未亮屏====' % p_num)
            logger.info('%s手机,非亮屏时段,====未亮屏====' % p_num)

  • 重新启动手机app
mFocusedActivity = os.popen("adb shell dumpsys activity | grep 'mFocusedActivity' | awk '{print $4}' | awk -F '/' '{print $1}'").read().strip('\n')
if mFocusedActivity == 'com.eg.android.AlipayGphone':
    print("APP已启动,停止APP,等待重新启动")
    os.system('adb shell am force-stop com.eg.android.AlipayGphone')
    time.sleep(1)
    print("启动app")
os.system('adb shell am start -n com.eg.android.AlipayGphone/com.eg.android.AlipayGphone.AlipayLogin activity')

以上操作需要adb环境已经搭建好,使用以下命令查看连接设备

C:\Users\enmonster>adb devices
List of devices attached
97dc2d9 device

想获取某个APP名称用于启动时,手机先打开APP,然后执行以下命令

adb shell dumpsys window windows |grep "Current"

参考:https://www.cnblogs.com/Kirito-Asuna-Yoyi/p/Python-ADB1.html
https://blog.csdn.net/weixin_40895135/article/details/121487532
https://wenku.baidu.com/view/60353365e75c3b3567ec102de2bd960590c6d9db.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值