手机控制电脑之手机端模拟鼠标滑动处理
最近做了一个手机通过wifi控制电脑的小demo,其中进行鼠标移动控制的时候,出现了一些小bug,这里记录一下正确的移动方法,第一个方法也是最容易想到的,就是自己通过记忆上一次鼠标位置,计算距离偏差,代码如下:
int x= (int) event.getX();int y= (int) event.getY();int distantX=0;int distantY=0;synchronized (msgInfo){switch (event.getAction()){case MotionEvent.ACTION_DOWN:msgInfo.setX(x);msgInfo.setY(y);msgInfo.setEventType(MsgInfo.MOUSE_MOVED);msgInfo.setId(MsgInfo.ID_MOUSE);oldx=x;oldy=y;msgInfo.setX(0);msgInfo.setY(0);//发送按下指令break;case MotionEvent.ACTION_MOVE:msgInfo.setX(x);msgInfo.setY(y);++flag;if (flag==1){oldx=x;oldy=y;}distantX=x-oldx;distantY=y-oldy;oldx=x;oldy=y;msgInfo.setX(distantX);msgInfo.setY(distantY);//发送移动指令break;case MotionEvent.ACTION_UP:msgInfo.setX(x);msgInfo.setY(y);flag=0;distantX=x-oldx;distantY=y-oldy;oldx=x;oldy=y;msgInfo.setX(distantX);msgInfo.setY(distantY);//发送抬起指令break;}
但是实际上android给我们提供了更方便的方法,那就是利用GestureDetector,也就android的手势识别,他提供了scroll方法帮我们计算滑动的距离,实现起来非常简单。所以第二个方法代码量不多,贴代码:
final GestureDetector detector=new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {synchronized (msgInfo){msgInfo.setX((-(int)distanceX)*mouseDpi);//转化为相反数,否则方向相反msgInfo.setY((-(int)distanceY)*mouseDpi);msgInfo.setEventType(MsgInfo.MOUSE_MOVED);msgInfo.setId(MsgInfo.ID_MOUSE);Log.i("TAG", "onScroll: "+distanceX+","+distanceY);Log.i("TAG", "e1: "+e1.getPointerCount()+",e2:"+e2.getPointerCount());if (e2.getPointerCount()==2){if (distanceY>0){msgInfo.setEventType(MsgInfo.WHEEL_DOWN_PRESSED);}else {msgInfo.setEventType(MsgInfo.WHEEL_UP_PRESSED);}}}return true;}});
detector.onTouchEvent(event);//在监听函数onTouch里添加这句,替换掉原来的监听事件,最后记得返回true
注:1.msgInfo为需要通过socket发送的数据的包装
2.方法二后面的判断语句是为了判断多点触摸,然后模拟鼠标滚轮滑动
手机控制电脑之手机端模拟鼠标滑动处理相关推荐
- 手机控制电脑之手机端模拟鼠标移动
最近做了一个手机通过wifi控制电脑的小demo,其中进行鼠标移动控制的时候,出现了一些小bug,这里记录一下正确的移动方法,第一个方法也是最容易想到的,就是自己通过记忆上一次鼠标位置,计算距离偏差, ...
- 基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄
基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄 这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机 ...
- linux键盘控制鼠标软件下载,手机控制电脑软件(Mouse Server)
Mouse Server(手机控制电脑软件)是WiFi Mouse的配套软件,快速把你手机变成无线鼠标.键盘.触摸板的应用,它还支持语音识别直接输出文本到电脑端,安装软件后连接手机可以让手机控制电脑! ...
- 如何用手机控制电脑或电脑控制手机?
近期,App Store应用商店限免迎来一款强大的电脑遥控软件--MiniMouse.这款软件原价为12元,目前已经支持免费下载.MiniMouse不仅支持连接Windows XP/Vista/7/8 ...
- 免费远程协助软件,可以手机控制电脑,电脑控制电脑!
前言 有时候想躺在床上玩电脑,有时候想拿手机连接电脑办公,有时候自己电脑太卡,想连接高端设备玩游戏,这就不可避免需要一款远程软件了,你会跟我说,不是有QQ远程嘛?都知道啊,你还来介绍什么?..那你就继 ...
- html控制电脑关机,用手机控制电脑关机 方法介绍【图文】
有时候当你忙完一切上 床 准备睡觉时,却忽然发现远在 客厅 的电脑没有关机,此时你就会很烦,可你又不得不跑出去把电脑关了.如果你能够通过手机远程控制电脑关机,那就可以解决问题了.打开手机,把电脑关了就 ...
- 图解:手机控制电脑的软件的使用教程
在使用IP软件时总是掉线,有时又要出去,不能总呆在电脑旁,所以使用了一个手机控制电脑的软件 使用方法:电脑下载一个这个软件,手机下载一个 下载地址官网:https://www.teamviewer.c ...
- VLC用手机控制电脑播放视频
需要下载安装VLC电脑端程序,以及手机端控制软件 获取安卓手机端安装包点这里 电脑端软件的设置 1.打开VLC,点击 工具=>偏好设置 2.勾选 全部 3.点击 主界面,然后勾选 Web 4.点 ...
- 基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端
基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端 这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机虚拟 ...
最新文章
- svpwm仿真_案例12:三相三线PWM整流仿真建模
- 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
- python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
- makefile如何减小可执行文件的大小(没有用到的函数不参与链接)
- CuteEditor—Html在线编辑器的领航者,超强的asp.net编辑器控件
- 哔哩哔哩公司swot分析_「127」一个简单的工具分析自己的优势与劣势
- 初识C++之剖析const与#define
- 【Level 08】U06 Good Feeling L3 Fun-filled concert
- package.json和bower的参数解释
- C加加学习之路 1——开始
- java 编码解码_深入解析Java中的编码转换以及编码和解码操作
- 天翼网关 ddns设置_19,微服务网关之Zuul
- Centos7配置阿里YUM源
- Tomcat9的安装和配置
- SSM汽车租赁管理系统毕业设计源码052158
- ASO优化:马甲包上架优化方法总结
- could not initialize proxy -the owning Session was closed解决方法
- Python——青蛙旅行项目
- 部署无鱼工时系统,超详细教程,并成功部署
- banner中居中的page显示完全,其余显示百分之20--仿网易云首页轮播图
热门文章
- 精通正则表达式的 12 个有用资源
- JAVA方法3-方法的重载
- PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)
- 一款基于springboot开发的经典后台管理系统
- linux dd新建文件,linux dd命令 创造一个文件
- 2006年星座运势 天蝎座
- 知网CAJ转PDF(硕博论文带书签)
- 谷歌浏览器打包扩展程序和导入扩展程序
- 【电商】电商后台设计—库存模块
- 个人学习(解决)练习ssm框架遇到的问题No qualifying bean of type ‘service.BookTypeService‘ available: