主要思路是使用 adb shell input指令来模拟按键及触摸输入。

但是前提是需要root,且华为手机出于安全考虑已经停止了root解码。所以测试建议换个别的手机。或是直接用as中的模拟器,用有google apis的版本。

input 指令

我们打开adb,进入shell,输入input可以看到指令的参数说明。

其中source一般都是用的默认值可以忽略,我们主要关注的就是后面的command

text:文本输入;keyevent:键盘按键;这两条指令是所有设备通用的。

tap:点击屏幕;swipe:滑动屏幕;这两条指令适用于有触摸屏的设备。

press,roll适用于有触摸球的设备。

模拟输入

在使用input指令之前我们要先获取一下root权限。

private void execshellcmd(string cmd) {

try {

process process = runtime.getruntime().exec("su");

outputstream outputstream = process.getoutputstream();

dataoutputstream dataoutputstream = new dataoutputstream(

outputstream);

dataoutputstream.writebytes(cmd);

dataoutputstream.flush();

dataoutputstream.close();

outputstream.close();

} catch (throwable t) {

t.printstacktrace();

}

}

text

1.输入之前需要提前获取焦点。

2.输入有特殊含义的特殊字符,无法直接输入 需要使用keyevent 如: ' '

我们整一个edittext,然后进行text输入测试。

execshellcmd("input text 'hello,world'");

我们发现少了一个h,在控制台可以看到日志。

可以看到在按下h的时候,edittext没有获取到焦点。

可能是页面初始化以后就开始执行输入操作,此时edittext还没有获取到焦点,获取焦点可能存在点延时。所以我们尝试延迟1s后进行输入。

private handler handler = new handler();

private runnable task = new runnable() {

public void run() {

execshellcmd("input text 'hello,world'");

}

};

// 延迟1s后输入

handler.postdelayed(task,1000);

keyevent

execshellcmd("input text 'hello,world' \n input keyevent 68 \n input keyevent 21");

输入hello,world,然后输入',然后左移光标

tap

android 中坐标系如下图所示。

我们可以打开手机中的 开发者选项 -> 指针位置 来辅助定位,可以再上方看到x,y相对的偏移量。

点击屏幕(100,200)位置。

execshellcmd("input tap 100 200");

swipe

滑动屏幕和tap相似只需要传入两个坐标即可。后面也可以设置滑动时间(ms),时间越短滑动的相应距离就会越长。

从屏幕(100,200)滑动到(300,400)。

execshellcmd("input swipe 100 200 300 400");

以上就是android开发中如何模拟输入的详细内容,更多关于android 模拟输入的资料请关注萬仟网其它相关文章!

android 模拟输入,Android开发中如何模拟输入相关推荐

  1. Android短视频开发中的sdk接入方案

    目前短视频平台非常火,云豹科技作为优质的app源码提供商,在短视频开发领域有丰富的经验和完善的技术.下面以云豹短视频为例,概述Android短视频开发中的sdk接入方案,这里我们选择腾讯云的sdk进行 ...

  2. Android Studio安卓开发中使用json来作为网络数据传输格式

    如果你是在安卓开发中并且使用android studio,要使用json来作为数据传输的格式,那么下面是我的一些经验. 一开始我在android studio中导入那6个包,那6个包找了非常久,因为放 ...

  3. Android直播软件开发中接入腾讯IM大概流程是怎样的

    现阶段来看,直播软件中的即时通讯是非常重要的一个部分,毕竟直播过程中的交流和沟通是非常重要的,所以在Android直播软件开发时需要接入相关的IM服务. 通常我们选择的即时聊天服务,会选择集成简单方便 ...

  4. 【Android】iOS开发中xconfig和script脚本的使用

    利用Xcode进行开发时需要进行很多build setting的设置以便能让项目按照设置的进行编译,同时有时候需要在编译时利用script脚本进行一些设置,本文主要介绍xconfig文件和script ...

  5. Android之---项目开发中网络框架的选择

    项目开发中网络框架的选择 Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据.通常在 Android 中进行网络连接一般使用 Scoket ...

  6. 关于在Android音视频开发中,Google API的MediaCodeC与成熟开源编码器X264的应用对比及使用场景

    在2019年的一个大项目中,有一个功能模块让笔者感触颇深,那就是实时音视频的预览,当然这不是普通的开开直播,画面出来了就完了那么简单,如果你是一个开发者,那么你肯定知道同样大小的一张图片里,色彩丰富的 ...

  7. Android升级butterknife,Android组件化开发中使用Butterknife的坑

    近来整理代码的时候,要对代码做一些模块化组件化的处理.想要在一个BaseLib里面引入ButterKnife,在这个BaseLib里面声明一个BaseActivty,然后其他module的Activi ...

  8. Android系统应用开发中涉及的工具使用

    文章目录 ~~系统应用卸载的方式(无需root)~~ 应用降级安装的方式 pk8和x509.pem转换为jks adb链接设备 系统应用卸载的方式(无需root) 后来在一些设备上使用时候发现会报错, ...

  9. Android Studio App开发中使用录音机、MediaRecorder录制音频和MediaPlayer播放音频讲解及实战(附源码)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.使用录音机录制音频 手机有自带的系统相机,也有自带的系统录音机,只要在调用startActivityForResult之前指定该动作,就会自动 ...

最新文章

  1. 分布式多层次限流概述
  2. latin1_swedish_ci gbk_chinese_ci
  3. NodeJS安全设计:好吃的草莓味糖果,只给好朋友小红
  4. WebRTC 系列之视频辅流
  5. 多个ai文件合并成pdf_如何将多个文档合并成PDF?
  6. 消控中心人员配置_电气火灾监控系统在石药集团新药制剂配套特色原料药FDA生产中心项目...
  7. php70w-mysql_Centos Apache+PHP5.6/PHP7.0+mysql5.5
  8. Rabbitmq基本原理和架构
  9. define和typedef区别
  10. indoe智能客户端ios_inode客户端证书导入
  11. phpstuday2018下载
  12. 写贺卡给毕业师姐怎么写计算机系的,[给师姐的毕业祝福语]对师姐的毕业祝福语...
  13. [ArcGIS] Python计算Geometrical interval自然间断点 | jenkspy库
  14. vue3关闭语法检测
  15. 一步步做一个Google 网页
  16. iOS视图成像理论及性能优化
  17. Java线程池原理与实例详解
  18. EBS 销售RMA接收报错VALIDATE_RMA_LOT_QUANTITIES_ERROR
  19. 如何用3D技术“复现”遗址?
  20. nginx启动成功,但是访问不了页面解决办法

热门文章

  1. CMUSphinx免费离线语音识别开源库教程iOS开发
  2. Java8获取年、月、周数据和某一天的开始结束时间
  3. html怎么做一条轴,html实现时间轴_纯css实现响应式竖着/垂直时间抽布局效果
  4. 阿里内推五面:一面+二面+三面+交叉面+HR面,含答案赠送
  5. 加速代理游戏,让指定进程走代理网络,驱动级SOCKS5代理使用方法。
  6. 2021高考成绩查询抖音,2021抖音高考最后倒计时励志句子
  7. IT孔乙己 (小小说)
  8. eclipse多行注释 (eclipse开发工具)
  9. winmail 数据库设置_Windows - 2003下搭建邮件服务器教程和使用 - Winmail - Server - 轻松架设邮件服务器 - 图文...
  10. 欧拉角速度与角速度的关系推导——欧拉运动方程