如何用手机控制pc鼠标——Java开发与学习记实

使用Wifi的Hid实现andriod控制pc鼠标

一、使用到的Java类及简单介绍

1.Server端(pc端)

· WirelessHidServer类

1.MouseInfo类

得到本机鼠标位置坐标,使用形如MouseInfo.getPointerInfo().getLocation();的函数获得坐标信息,可以通过mousepoint.x,mousepoint.y来分别获得x,y轴坐标

2.MulticastSocket类

使用MulticastSocket类来进行实现多点广播,DatagramSocket只允许数据报发送给指定的目标地址,而MulticastSocket可以将数据报以广播的方式发送到多个客户端,MulticastSocket既可以将数据报发送到多点广播地址,也可以接收其他主机的广播信息

public static final int HID_MULTICAST_PORT = 34568;      //Contast的定义
multicastSocket = new MulticastSocket(Constant.HID_MULTICAST_PORT);      //得到Contast类中的HID_MULTICAST_PORT的地址信息
3.Inetadress类

InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名。
你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。InetAddress类内部隐藏了地址数字
getLocalHost()仅返回象征本地主机的InetAddress对象。
本机地址还为localhost,127.0.0.1,这三个地址都是一回事。
getByName()方法返回一个传给它的主机名的InetAddress
如果这些方法不能解析主机名,它们引发一个UnknownHostException异常。

4.Robot类

实现对于机器的模拟操作,在这里我们采用鼠标的移动以及鼠标的左右键输入

mouseMove(x,y)

将鼠标移动到指定的x,y位置

robot.mouseMove(300, 400);  //将鼠标移动到距离左边框300px,距离上边框400px的位置

mousePress()

按下鼠标上的某个键

robot.mousePress(InputEvent.BUTTON1_MASK); //按下左键

robot.mousePress(InputEvent.BUTTON2_MASK); //按下滚轴键robot.mousePress(InputEvent.BUTTON3_MASK); //按下右键

mouseRelease()

松开鼠标上的某个键

robot.mouseRelease(InputEvent.BUTTON1_MASK); //松开左键

robot.mouseRelease(InputEvent.BUTTON2_MASK); //松开滚轴键robot.mouseRelease(InputEvent.BUTTON3_MASK); //松开右键
————————————————
版权声明:本文为CSDN博主「Javee-Y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38901340/article/details/99225140

Client端(Android端)

wirelessHidServer.java

1.Service

要创建服务,你需要创建一个继承自Service基类或者它的已知子类的Java类。Service基类定义了不同的回调方法和多数重要方法。你不需要实现所有的回调方法。虽然如此,理解所有的方法还是非常重要的。实现这些回调能确保你的应用以用户期望的方式实现。具体的讲解可以参看:
https://www.runoob.com/android/android-services.html
讲的非常详细了

2.Handler

Android为了线程安全,并不允许我们在UI线程外操作UI;很多时候我们做界面刷新都需要通过Handler来通知UI组件更新

Handler的相关方法:
void handleMessage(Message msg):处理消息的方法,通常是用于被重写!
sendEmptyMessage(int what):发送空消息
sendEmptyMessageDelayed(int what,long delayMillis):指定延时多少毫秒后发送空信息
sendMessage(Message msg):立即发送信息
sendMessageDelayed(Message msg):指定延时多少毫秒后发送信息
final boolean hasMessage(int what):检查消息队列中是否包含what属性为指定值的消息 如果是参数为(int what,Object object):除了判断what属性,还需要判断Object属性是否为指定对象的消息
可以参看:https://www.runoob.com/w3cnote/android-tutorial-handler-message.html

3.BroadcastReceiver类

广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。
应用程序通过在AndroidManifest.xml中注册广播接收器来监听制定的广播意图。假设我们将要注册MyReceiver来监听系统产生的ACTION_BOOT_COMPLETED事件。该事件由Android系统的启动进程完成时发出。
参考:https://www.runoob.com/android/android-broadcast-receivers.html

posted @ 2020-06-12 18:16  Hatfield  阅读(547)  评论(0编辑  收藏  举报