ubuntu16.04 使用adb连接Android手机及——python实现看小说自动翻页

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: ubuntu16.04 使用adb连接Android手机及——python实现看小说自动翻页


adb简介
adb叫做安卓调试桥 (Android Debug Bridge),是一种可以用来操作手机设备或模拟器的命令行工具。它在sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。它是用来管理模拟器或设备,采用C/S模式,主要包括三个部分:

A client 客户端Client运行在自己的电脑上,可以通过adb命令 adb start-server启动Client,也可以通过ADT或者DDMS创建Client。
A daemon Daemon作为后台程序运行在手机或者模拟器上。
server Server最为后台程序运行在自己的电脑上,用来管理Client和Daemon之间的信息交互
在开发调试Android程序时我们需要通过adb工具在我们的手机和电脑之间建立连接,通常情况我们都是使用数据线,另外还可以使用wifi连接电脑。

数据线连接
首先,使用的手机要打开开发者模式,这个问题比较简单(根据需求搜一下就行),不同的手机有不同的打开方式,打开开发者模式后,在里面找到usb调试并启用它,我使用的小米手机,如果想要操作模拟输入input和模拟点击keyevent,还需要打开USB调试(安全设置)。

安装软件
sudo apt update
sudo apt install android-tools-adb android-tools-fastboot
启动服务
adb start-server
重启服务
sudo service udev restart
杀死服务
adb kill-server
查看连接设备
adb devices
如果连接成功,输入adb devices后,会出现下面的内容:

List of devices attached
80QBCNP234K3 device
其中 80QBCNP234K3 是设备序列号,device 是设备状态,设备的状态有三种:

offline —— 设备未连接到 adb 或者没有响应

device —— 设备已连接到 adb

no device —— 未连接模拟器 / 设备

如果出现以下情况,原因是当前用户组权限不够,需要将当前用户的权限进行修改,加入到plugdev组。

List of devices attached
???????????? no permissions
也可以通过 lsusb 命令查看接入,系统的 usb 设备都有哪些。

WIFI连接
使用wifi连接,需确保电脑和Android设备连接在同一个WIFI网络环境(同一个局域网下,进行通信)。

查看android设备的IP地址,这里有三种方式查看Android设备IP。

 设置-关于手机-状态信息-IP地址中查看

 设置-WLAN-点击当前链接上的Wi-Fi查看IP

例如:设置—〉无线或网络---〉WLAN设置—〉查看当前连接Wi-Fi的IP地址

 通过adb命令查看设备IP地址:adb shell  netcfg

前提:(设备已经和 PC 建立了 usb 连接)

查到 Android 设备的 IP 后,在 PC 端 ping 一下 IP 地址,如果成功显示,就可以进行下一步。

执行 adb connect
知道设备 IP 地址之后,就可以用 adb connect 命令通过 IP 和端口号连接 adb。

adb connect 192.168.43.5
如果显示连接成功,则可继续执行后面的操作。如果不成功,可以使用 adb tcpip 模式重启 adb。

adb tcpip 5555

adb connect ip 连接成功以后可以执行原来usb连接时的所有命令。

adb 命令可参考 adb 命令大全:安卓调试工具 adb 命令大全_卫薇的博客-CSDN博客

程序实例
下面附加一段模拟书籍手动翻页的代码,看小说就不用自动不动翻页了。该方法仅适用于Android平台。首先要配置好Android SDK环境变量和Python环境,最关键的是可以正常使用adb命令。这一步就不再赘述了,这里简要说明一下模拟翻页的原理,注意看下面一行命令:
adb shell input swipe 1000 600 200 600
这一行指令包含两部分操作:

adb shell:进入设备的Shell命令行;
input swipe 1000 600 200 600:模拟屏幕滑动,从x=1000,y=600坐标处滑动到x=200,y=600坐标处。即从右向左滑  屏,也就是翻页的触摸操作;
好了,理解了这行命令后,剩下的事情就好办多了。我们只需要间隔一段时间,循环执行这句话即可。即将下面两行命令放在循环中,循环的次数由书籍的未读页数决定。
time.sleep(random.uniform(rv_t1,rv_t2))
run('adb shell input swipe 1000 600 200 600', shell=True)
为了尽量模拟人类阅读的真实性,这里的时间间隔是给定时间范围内的随机值。
       最后,为了更方便地使用这个脚本,除了正序(即从右向左滑屏)外,还增加了倒序(即从左向右滑屏)和无尽模式(即正序结束后自动倒序,倒序结束后自动正序,循环往复)。连接上手机,启动APP,直接运行脚本就行,完整的Python脚本如下:

encoding:utf-8

from subprocess import run
import time
import random
import os

def book(rv_sel, rv_page_num, rv_t1, rv_t2):

rv_sel = int(rv_sel)
if rv_sel == 1:
    print('程序运行中')
    for i in range(rv_page_num):
        time.sleep(random.uniform(rv_t1,rv_t2))
        run('adb shell input swipe 1000 600 200 600', shell=True)
        n = i + 1
        print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
    exit()
elif rv_sel == 2:
    print('程序运行中')
    for i in range(rv_page_num):
        time.sleep(random.uniform(rv_t1,rv_t2))
        run('adb shell input swipe 200 600 1000 600', shell=True)
        n = i + 1
        print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
    exit()
else:
    print()
    print('* ' * 8, '1.正循环-倒循环,无限循环', '* ' * 8)
    print('* ' * 8, '2.倒循环-正循环,无限循环', '* ' * 8)
    print()
    loop = int(input('请选择循环方式:'))
    print('程序运行中')
    if loop == 1:
        while 1:
            for i in range(rv_page_num):
                time.sleep(random.uniform(rv_t1,rv_t2))
                run('adb shell input swipe 1000 600 200 600', shell=True)
                n = i + 1
                print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
            for i in range(rv_page_num):
                time.sleep(random.uniform(rv_t1,rv_t2))
                run('adb shell input swipe 200 600 1000 600', shell=True)
                n = i + 1
                print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
    else:
        while 1:
            for i in range(rv_page_num):
                time.sleep(random.uniform(rv_t1,rv_t2))
                run('adb shell input swipe 200 600 1000 600', shell=True)
                n = i + 1
                print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
            for i in range(rv_page_num):
                time.sleep(random.uniform(rv_t1,rv_t2))
                run('adb shell input swipe 1000 600 200 600', shell=True)
                n = i + 1
                print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))
AI 代码解读

def rand_time(rv_xh):

if int(rv_xh) == 1:
    return 10,20
else:
    while 1:
        t1 = int(input('请输入最小等待时间:'))
        t2 = int(input('请输入最大等待时间:'))
        if t2 >= t1:
            return t1,t2
            break
        else:
            print('最小时间不得小于最大时间,请重新输入')
AI 代码解读

print(' ' 50,)
print('请选择翻页间隔时间:')
print('1.预设(10秒 - 20秒之间):')
print('2.自定义(大于0):',)
print(' ' 50,)
while 1:

xh = input('请输入序号:')
if xh == '':
    print('输入有误,请重新输入')
elif xh in str([1,2]):
    t1,t2 = rand_time(xh)
    break
else:
    print('输入有误,请重新输入')
AI 代码解读

while 1:

print()
print('* ' * 8, '1.正序', '* ' * 8)
print('* ' * 8, '2.倒序', '* ' * 8)
print('* ' * 8, '3.无尽', '* ' * 8)
print()
sel = input('请选择翻书方式:')
if sel in str([1,2,3]):
    page_num = int(input('请输入书籍总页数:'))
    book(sel,page_num,t1,t2)
elif sel == '':
    print('输入错误')
else:
    print('输入错误')
AI 代码解读

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
打赏
0
0
0
0
0
分享
相关文章
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
109 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
86 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
95 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
533 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
Python 与 adb 库表的 3000 条之限,究竟隐藏着怎样的秘密?快来一探究竟!
【8月更文挑战第22天】《Python 读取 adb 库表 3K 限制探讨》介绍了一个常见问题:当用 Python 从 adb 库表读取大量数据时,遇到 3000 条记录的限制。文章分析了这一限制的原因及影响,并提出了两种解决策略:一是采用分批读取数据的方法,通过循环逐步提取所有数据;二是优化查询语句,提升查询效率。通过这些技巧,开发者能够有效应对这一挑战,确保项目的顺利进行。
63 2
|
10月前
|
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
344 6
如何将python应用编译到android运行
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
230 0
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
576 0

热门文章

最新文章

下一篇
oss创建bucket
目录
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等