STF-minitouch的使用

更新时间:2023-07-14 08:36:04 阅读: 评论:0

STF-minitouch的使⽤
我们经常会遇到这样⼦的情况,需要演⽰⼀些⼿机上的⼀些界⾯的时候。不能够把⼿机上的影像投影到电脑上,同时在电脑上操作⼿机。也可能是我了解的⽐较少吧。
介绍
minitouch提供了⼀个socket接⼝⽤来出来在Android设备上的多点触摸事件以及⼿势。它能够⽀持api 10以上的设备且不需要通过root.但是根据不同的cpu的ABI需要使⽤不同的minitouch。
使⽤
1. ⾸先我们需要找出你的设备所⽀持的ABI
ABI=$(adb shell getprop ro.product.cpu.abi | tr -d '\r')
注意:如果你有多台设备连接的情况下并且你没有设置$ANDROID_SERIAL的话,你需要去指定设备 -s <rial>
2. 推送对应的⽂件到设备上。
adb push libs/$ABI/minitouch /data/local/tmp/
注意如果你的SDK<16的情况下,你需要使⽤minitouch-nopie
当然你还需要更改下minitouch的执⾏权限。
chmod777 /data/local/tmp/minitouch
并且通过下⾯的命令来判断是否已经操作成功了。
adb shell /data/local/tmp/minitouch -h
3. 下来我们可以直接通过adb shell /data/local/tmp/minitouch 来执⾏,这个时候设备就开始监听了。
女性严重脱发是什么病4. 这个时候除⾮出现错误的消息或者说程序退出,我们需要进⾏端⼝转发 通过如下命令:
adb forward tcp:1111localabstract:minitouch
5. 现在我们就需要去连接对应的端⼝,获取数据了。
提⽰⽂档⾥⾯给的是通过nc localhost 1111,但是我们肯定不是这样⼦的,我们需要⾃⼰去创建⼀个socket来进⾏连接。获取socket对应的数据。
生牛排
socket命令
d <contact> <x> <y> <pressure>
例如:d 0 10 10 50
压⼒值50 在点 10,10 使⽤⼀个触点按下。
m <contact> <x> <y> <pressure>
例如: m 0 10 10 50
压⼒值为50在 10,10滑动。
u <contact>
例如:u 0
⼿势抬起
实现
这⾥我们只说明⿏标的⼀些事件的实现。
mp.addMouListener(new MouListener() {和讼
@Override
public void mouClicked(MouEvent e) {
}
@Override失恋进行曲
public void mouPresd(MouEvent e) {
System.out.println("i press"+e.getX()+","+e.getY());
Point point = Point());
if (outputStream != null) {
String command = String.format("d 0 %s %s 50\n", (X(), (Y());
executeTouch(command);
}
}
@Override
public void mouRelead(MouEvent e) {
System.out.println("i relea");
if (outputStream != null) {
String command =  "u 0\n";
executeTouch(command);
}
}
@Override
public void mouEntered(MouEvent e) {
}
@Override
public void mouExited(MouEvent e) {
}
});
mp.addMouMotionListener(new MouMotionListener() {
@Override
public void mouDragged(MouEvent e) {
System.out.Point().getX()+","+e.getPoint().getY());
Point point = Point());
真菌
if (outputStream != null) {
String command = String.format("m 0 %s %s 50\n", (X(), (Y());
最浪漫的事简谱
executeTouch(command);
}
}
@Override
public void mouMoved(MouEvent e) {
}
});
private Point pointConvert(Point point)
{
Point realpoint = new Point((int)((X()*1.0 / width) * MaxX()) , (int)((Y()*1.0 /height) * MaxY()) );
return realpoint;
}
private void executeTouch(String command) {
if (outputStream != null) {
try {
System.out.println("command" + command);
泰国旅游注意事项outputStream.Bytes());
outputStream.flush();
String endCommand = "c\n";
outputStream.Bytes());
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
具体可参考代码。
参考⽂档
感想
雀啄脉上⾯的项⽬基本上都没改什么,只是简单的加了⼏句代码⽽已。还是要感谢⼏个⼤神。

本文发布于:2023-07-14 08:36:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1095837.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:需要   设备   情况   对应
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图