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

热门文章

  1. arm push/pop/b/bl汇编指令
  2. # JAVA实现评论功能设计开发
  3. creator 面试
  4. CentOS 7安装Docker
  5. web页面设计中使用阿里字体(包含图标)
  6. 【存储过程造数mysql】
  7. stm32 RO RW ZI
  8. 华为WeAutomate RPA介绍
  9. SpringBoot框架的基于java的疫情期间网课管理系统
  10. c语言周长和面积计算