手机控制电脑之手机端模拟鼠标移动
最近做了一个手机通过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套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机虚拟 ...
最新文章
- 文本匹配_如何又好又快的做文本匹配
- 【ubuntu+opencv3】ubuntu16.04+qt5+opencv3.2.0编译与安装
- 64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口
- A Common Framework for Interactive Texture Transfer(CVPR 2018)学习笔记
- 计算机辅助设计工业产品cad竞赛试题,2017计算机辅助设计(工业产品CAD)赛项样题...
- java string类型_java中String类型
- C++中绘图工具EasyX基本操作
- python中的对象列表_Python内建的对象列表
- 【转】Android 避免APP启动闪黑屏(Theme和Style)
- AD Keepout layer在3D视图中显示过孔、穿层
- 如何使用Mac的屏幕时间功能限制访问网站?
- java 读取yaml配置文件
- layui下select大数据卡顿问题
- python中空字符串是什么_python为空怎么表示 python如何判断字符串为空
- D. Little Girl and Maximum XOR(贪心)
- html和ui关系,ue和ui的区别是什么
- 拥有数据报表模板,不再愁如何制作数据报表
- php webshell 分析,一款奇葩的PHP Webshell后门分析
- python狗狗年龄换算程序_狗狗年龄VS人类年龄(换算/对照表)
- 2022年 新华三杯决赛题目