前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用ADB安卓调试工具,在双十一直播间轻松回复文字领取优惠!

巧用ADB安卓调试工具,在双十一直播间轻松回复文字领取优惠!

作者头像
全栈工程师修炼指南
发布2023-11-13 14:15:22
2490
发布2023-11-13 14:15:22
举报

文章目录:


1.前言简述

描述: 通过前面几篇双十一购物文章,也知道作者最近房屋装修已接近尾声了,趁着双十一入手一波家用电器,对于我这样收入不高的打工人,只能想办法能省则省,某天购买某电器时发现,直播间可以抢优惠券、半价、以及免单,我心♥动了,作为想省钱的资深IT民工必须跟进,根据直播间中活动提示只在当日20-24点,给蹲直播间中已下单人员抽取优惠,然而我比不上前面单身18年的手速了,一个都没抢到。

俗话说,双十一,富人靠钞票,打工人靠优惠券,为了减少吃方便面的天数,我没有就此放弃,不就是按照主播的口令刷屏抽取嘛,我直接使用adb(Android 调试桥,即调试工具)搞一个自动化脚本不就行了,说干就干,看我如何通过adb工具开启手机USB调试实现在直播间回复【指定口令】。

此文项目的实践视频

【双十一直播间技巧,巧用ADB安卓调试工具回复文字领取优惠券!】

2.前置准备

描述: 此处作者准备了两台安卓手机,一个小米、一个华为,此处以小米手机(MIUI)为例进行相应设置。

温馨提示: 若对adb工具不了解的朋友,请参考如下两篇文章《安卓设备adb调试工具安装配置使用实践》以及《安卓设备adb调试工具命令归纳总结一览表》。

操作步骤:

Step 0.提前准备好USB线以及安卓手机,并且计算机中安装 adb 工具以及驱动,不用安装的朋友参考上述提示。

Step 1.打开设置 -> 点击【我的设备】-> 点击【MIUI版本】 -> 点击三次 即可启动开发者模式。

Step 2.返回设置 -> 搜搜【开发者选项】 -> 开启开发者选项 -> 启用【USB调试】以及允许【USB安装/调试】—> 最后在【输入】选项卡中启用【指针位置】。

weiyigeek.top-配置如下图所示图

1.需输入ASCII字符串情况(仅)

描述: 在我们前面学习 adb 工具时介绍到过 adb shell input 命令,其不单单只是点击页面、滑动页面,以及执行特殊的按键,它还可以输入指定的 ASCII 字符。

使用语法:

代码语言:javascript
复制
$ adb shell input
Usage: input [<source>] [-d DISPLAY_ID] <command> [<arg>...]
  text <string> (Default: touchscreen)

简单演示:

代码语言:javascript
复制
# 1.在向手机获取输入焦点的输入框输入指定字符串。
adb shell input text "my-site-is-weiyigeek.top"

# 2.若向手机发送中文字符串的会存在问题。
adb shell input text "欢迎访问博主站点 weiyigeek.top"

执行结果:

温馨提示: 若解决使用 input text 子命令无法输入中文的问题,请参考下一片段。

知识扩展:除此之外,你可以在不安装 ADBKeyBoard 情况下利用input keyevent命令来粘贴固定的字符串文字, 例如:

代码语言:javascript
复制
# 复制
KEYCODE_COPY  278 (0x00000116) 
# 粘贴
KEYCODE_PASTE 279 (0x00000117) 

# 假设,你已提前复制了指定字符串,打开输入框执行如下指令,即可实现字符串及中文粘贴
adb shell input keyevent 279
# or 
adb shell input keyevent KEYCODE_PASTE
2.需输入中文字符串情况

描述: 在使用 adb shell input text "中文" 中文时,往往是不行的手机输入行没有任何显示,且命令行还报错,所以为了解决此问题此处作者使用国外大佬开发的一款工具 ADBKeyboard.apk 来实现自定义中文字符的输入。

什么是 ADBKeyBoard? 有何作用?

描述: 通过ADB的Android虚拟键盘输入, ADBKeyBoard它是一个虚拟键盘,它接收来自系统广播意图的命令,您可以使用adb发送文本输入。

项目地址:https://github.com/senzhk/ADBKeyBoard

安装方式:

  • 源码编译: 此种方便较为繁琐,需要自行准备对应边缘构建环境,若你有安全方面的顾虑请使用此种方式。
代码语言:javascript
复制
# Get source Code
git clone https://github.com/senzhk/ADBKeyBoard.git && cd ADBKeyBoard

# Set Android SDK location
export ANDROID_HOME=$HOME/Android/Sdk or edit file local.properties

# Build and install: 
./gradlew installDebug
  • APK成品:此种方式较为简单,使用作者提供的APK正式包进行安装。
代码语言:javascript
复制
# Download apk
wget https://github.com/senzhk/ADBKeyBoard/blob/master/ADBKeyboard.apk
# Install apk
adb install ADBKeyboard.apk

weiyigeek.top-使用命令安装ADBKeyboard到手机图

温馨提示:若无法下载的朋友请关注公众号回复【ADBKeyBoard】即可获取作者已下载的【ADBKeyboard.apk】,若担心安全问题建议自行编译构建哟。

如何使用 ADBKeyBoard?

Step 1.首先,需要切换掉手机中的默认输入法为 ADBKeyBoard,此处以华为手机为例。

代码语言:javascript
复制
# 使用 adb 启用 ADBKeyBoard 
adb shell ime enable com.android.adbkeyboard/.AdbIME

# 切换 ADBKeyBoard 虚拟键盘
adb shell ime set com.android.adbkeyboard/.AdbIME   

# 切换回原始虚拟键盘
adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME  
# adb shell ime set com.baidu.input_huawei/.ImeService

# 显示可用的虚拟键盘
adb shell ime list -a  

# 重置虚拟键盘
adb shell ime reset

执行结果:

如不生效请使用手动方式启用切换,此处作者以小米手机为例:点击设置->搜索输入法->输入法管理->启用ADBKeyBoard->回到上一页点击【当前输入法】-> 切换为ADBKeyBoard 即可。

weiyigeek.top-小米手机输入法切换为ADBKeyBoard图

Step 2.其次,参考官网中 adb 使用此模块的示例演示。

代码语言:javascript
复制
# 1.Sending text input (base64) if (1) is not working.
# * For Mac/Linux, you can use the latest base64 input type with base64 command line tool:
adb shell am broadcast -a ADB_INPUT_B64 --es msg `echo -n '你好嗎? Hello?' | base64`

# * Sample python script to send b64 codes (provided by sunshinewithmoonlight):
import os
import base64
chars = '的广告'
charsb64 = str(base64.b64encode(chars.encode('utf-8')))[1:]
os.system("adb shell am broadcast -a ADB_INPUT_B64 --es msg %s" %charsb64)

# 2. Sending keyevent code  (67 = KEYCODE_DEL)
adb shell am broadcast -a ADB_INPUT_CODE --ei code 67

# 3. Sending editor action (2 = IME_ACTION_GO)
adb shell am broadcast -a ADB_EDITOR_CODE --ei code 2

# 4. Sending unicode characters
To send 😸 Cat
adb shell am broadcast -a ADB_INPUT_CHARS --eia chars '128568,32,67,97,116'

# 5. Send meta keys
# To send Ctrl + A as below: (4096 is META_CONTROL_ON, 8192 is META_CONTROL_LEFT_ON, 29 is KEYCODE_A)
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096,29' // one metaState.
# or
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096^+^8192,29' // two metaState.
# To send Ctrl + V , 实现粘贴
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096,50'

# 6. CLEAR all text (starting from v2.0)
adb shell am broadcast -a ADB_CLEAR_TEXT

温馨提示: 如果你是在Windows系统上,我们可以使用PowerShell提供的字符串转换为base64模块即可, 例如,当我们使用命令的方式通过 ADBKeyBoard 将要输入中文字符串传到安卓手机时:

代码语言:javascript
复制
$str=[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("欢迎大家访问作者技术站点【https://weiyigeek.top】"))
adb shell am broadcast -a ADB_INPUT_B64 --es msg $msg

温馨提示: 在PowerShell开发中如果要在 UTF-16LE(Unicode)或 ASCII 之间进行转换,请将 [Text.Encoding]::Unicode[Text.Encoding]::ASCII 替换为 [Text.Encoding]::UTF8 分别。

android KeyEvent Code 参考地址: http://developer.android.com/reference/android/view/KeyEvent.html

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

3.项目实战

描述: 有了前面扫盲小节,相信看友应该能明白作者的意图了,作者使用adb工具并通过手机开发者中开启USB调试,让程序进行模拟点击, 需提前获取要点击的 x,y 坐标(这也是我们为啥开启指针位置的原因),包括打开编辑框、, 以及输入字符串,若要输入中文则必须要安装ADBKeyboard工具以及切换键盘,然后根据购物直播间的口令,进行循环输入即发送。

废话不多说,此处作者使用 PowerShell 编写了一个小脚本,需要完整脚本请关注作者后回复【adb工具输入实践】关键字。

本文至此完毕,更多技术文章,尽情关注作者公众号!

原文地址: https://blog.weiyigeek.top

专栏推荐

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

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.前置准备
    • 1.需输入ASCII字符串情况(仅)
      • 2.需输入中文字符串情况
      • 3.项目实战
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档