最近做了一个手机通过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.方法二后面的判断语句是为了判断多点触摸,然后模拟鼠标滚轮滑动

手机控制电脑之手机端模拟鼠标滑动处理相关推荐

  1. 手机控制电脑之手机端模拟鼠标移动

    最近做了一个手机通过wifi控制电脑的小demo,其中进行鼠标移动控制的时候,出现了一些小bug,这里记录一下正确的移动方法,第一个方法也是最容易想到的,就是自己通过记忆上一次鼠标位置,计算距离偏差, ...

  2. 基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄

    基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄 这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机 ...

  3. linux键盘控制鼠标软件下载,手机控制电脑软件(Mouse Server)

    Mouse Server(手机控制电脑软件)是WiFi Mouse的配套软件,快速把你手机变成无线鼠标.键盘.触摸板的应用,它还支持语音识别直接输出文本到电脑端,安装软件后连接手机可以让手机控制电脑! ...

  4. 如何用手机控制电脑或电脑控制手机?

    近期,App Store应用商店限免迎来一款强大的电脑遥控软件--MiniMouse.这款软件原价为12元,目前已经支持免费下载.MiniMouse不仅支持连接Windows XP/Vista/7/8 ...

  5. 免费远程协助软件,可以手机控制电脑,电脑控制电脑!

    前言 有时候想躺在床上玩电脑,有时候想拿手机连接电脑办公,有时候自己电脑太卡,想连接高端设备玩游戏,这就不可避免需要一款远程软件了,你会跟我说,不是有QQ远程嘛?都知道啊,你还来介绍什么?..那你就继 ...

  6. html控制电脑关机,用手机控制电脑关机 方法介绍【图文】

    有时候当你忙完一切上 床 准备睡觉时,却忽然发现远在 客厅 的电脑没有关机,此时你就会很烦,可你又不得不跑出去把电脑关了.如果你能够通过手机远程控制电脑关机,那就可以解决问题了.打开手机,把电脑关了就 ...

  7. 图解:手机控制电脑的软件的使用教程

    在使用IP软件时总是掉线,有时又要出去,不能总呆在电脑旁,所以使用了一个手机控制电脑的软件 使用方法:电脑下载一个这个软件,手机下载一个 下载地址官网:https://www.teamviewer.c ...

  8. VLC用手机控制电脑播放视频

    需要下载安装VLC电脑端程序,以及手机端控制软件 获取安卓手机端安装包点这里 电脑端软件的设置 1.打开VLC,点击 工具=>偏好设置 2.勾选 全部 3.点击 主界面,然后勾选 Web 4.点 ...

  9. 基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端

    基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端 这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机虚拟 ...

最新文章

  1. svpwm仿真_案例12:三相三线PWM整流仿真建模
  2. 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
  3. python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
  4. makefile如何减小可执行文件的大小(没有用到的函数不参与链接)
  5. CuteEditor—Html在线编辑器的领航者,超强的asp.net编辑器控件
  6. 哔哩哔哩公司swot分析_「127」一个简单的工具分析自己的优势与劣势
  7. 初识C++之剖析const与#define
  8. 【Level 08】U06 Good Feeling L3 Fun-filled concert
  9. package.json和bower的参数解释
  10. C加加学习之路 1——开始
  11. java 编码解码_深入解析Java中的编码转换以及编码和解码操作
  12. 天翼网关 ddns设置_19,微服务网关之Zuul
  13. Centos7配置阿里YUM源
  14. Tomcat9的安装和配置
  15. SSM汽车租赁管理系统毕业设计源码052158
  16. ASO优化:马甲包上架优化方法总结
  17. could not initialize proxy -the owning Session was closed解决方法
  18. Python——青蛙旅行项目
  19. 部署无鱼工时系统,超详细教程,并成功部署
  20. banner中居中的page显示完全,其余显示百分之20--仿网易云首页轮播图

热门文章

  1. 精通正则表达式的 12 个有用资源
  2. JAVA方法3-方法的重载
  3. PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)
  4. 一款基于springboot开发的经典后台管理系统
  5. linux dd新建文件,linux dd命令 创造一个文件
  6. 2006年星座运势 天蝎座
  7. 知网CAJ转PDF(硕博论文带书签)
  8. 谷歌浏览器打包扩展程序和导入扩展程序
  9. 【电商】电商后台设计—库存模块
  10. 个人学习(解决)练习ssm框架遇到的问题No qualifying bean of type ‘service.BookTypeService‘ available: