首先,先声明一下,我用的传输协议是UDP传输,当然就是跟电脑端那边定义好字节码,然后通过某一个操作,发送哪一个指令,进行对电脑端的控制,这个当然也是pc端的人该做的事情

那么先说一下android端吧。

首先,我们要实现一个触摸板的功能,意思就是说,我们要在手机上实现一个功能,这个功能就类似于我们的电脑的触摸板一样,在你触发某一个点的时候,在电脑上,相应的就会出现你鼠标对应的位置,从而来控制你鼠标的移动

首先,我们需要定义一个view,这个view是什么都行,我用的就是ImageVIew,这个触摸板其实就是一个图片,而我操控这个电脑,就需要在这个图片上进行一系列的操作即可!

首先,我们要明白一件事情,就是,你操控电脑端,想跟鼠标一样的,能实现点击,能实现滑动效果的,就需要你用到onTouch事件和OnClick事件,这两种,所以,对于这个view,我们就要监听他的哦你Touch事件和onClick事件,在OnTouch事件中,去实现他的onClick事件

然后,在实现这个OnClick事件时,我们会用到OnTouch事件中的三个方法,MotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVE,MotionEvent.ACTION_UP

这三个方法分别是鼠标或者手指按下,移动,起来的监听

在你鼠标按下的时候,获取他的坐标点,


<span >				</span>x = event.getX();
				y = event.getY();
				downX = Math.round(x);
				downY = Math.round(y);

一定要记住,这里要将获取到的坐标点定义成全局的,还有一点要注意,我们通过get方式获取到的坐标点其实他是float类型的,你这样强转成int类型的是不可以的,所以,我们只能把它通过round方法,专成int类型的,当然你也可以通过截取小数点的方式,方式很多,就不一一举例了

获取到鼠标按下的时候,获取到了坐标点,然后,我们接下来做的事情就是move方法了,就是移动的时候

鼠标移动的时候,我们要做的同样也是要获取他的坐标点,因为,我们要计算出他移动的位移来,然后把它移动的这个距离发动给电脑端,然后才能让鼠标跟随你手指的移动而移动

同样的方法,获取到x,y的大小,坐标轴

float Mx = event.getX();
				float My = event.getY();
				float MoveX = Mx - x;
				float MoveY = My - y;
				int RMX = Math.round(MoveX);
				int RMY = Math.round(MoveY);
				/**
<span >				</span>发送指令
<span >				</span>*/
				x = Mx;
				y = My;

在我们发送完指令之后,要将移动的上一个点的坐标赋值给之前的x,y然后才能保证当移动到下一个点的时候,不至于鼠标点一直在那里不动,因为他的坐标点是在变化的

这样,就可以实现鼠标的移动了

当然,我们还有一个up,就是鼠标起来的时候,需要做一些操作

其实,当鼠标起来的时候,我们本身是不需要进行操作的,但是如果用户想点击这个东西,并且打开他,你不能让他去点击左键啊,所以,我们就需要获取到up事件

我们需要获取up时候得到的x,y,并用他减去你down时候获取到的x,y,通过计算,如果x轴的距离少于三,并且y轴的距离少于三的话,那我们就认为他是在触发点击事件了


x = event.getX();
				y = event.getY();
				upX = Math.round(x);
				upY = Math.round(y);
				int sizeX = upX - downX;
				int sizeY = upY - downY;
				if (sizeX < 3 && sizeY < 3) {
					/**
<span >					</span>发送指令
<span >					</span>*/
				}
			}

至于那个指令么,就贴出一段让大家看一下吧,其实这个东西,主要还是在pc端需要定义好这些东西,而我们只负责通过协议进行发送即可


String sendMouseCommand = HHAppCommandEntity.getMouseCommand(
						HHAppCommandEntity.MOVE, RMX, RMY);
				HHRequestProxy.getInstance().sendMessage(sendMouseCommand);

这是移动的时候发送的指令


public static String getMouseCommand(int flag, int x, int y) {
		JSONObject anno = new JSONObject();
		JSONObject mouse = new JSONObject();
		try {
			mouse.put("flag", flag);
			mouse.put("x", x);
			mouse.put("y", y);

			anno.put("type", SYSTEM_TYPE);
			anno.put("action", MOUSE_ACTION);
			anno.put("data", mouse);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return anno.toString();
	}




这个就是我们获取这个指令的方法,将pc需要的数据,给存放到一个对象中去了

然后通过sendMessage将这个指令发送出去


public void sendMessage(String data) {
		IpMsgInterface.senMessage(serverIP, data);
	}



至此,就可以完成整个触摸板的移动点击了!