android安卓远程协助控制电脑PC端

前提:界面xy已经变化

测试1:

 float y =0;
    float x = 0;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
            y+=1;
            x+=1;

}

手机端:鼠标点击的坐标是左上角横屏的X,Y值

然而:到了电脑PC端,也是左上角X,Y值

测试2:

 float y =0;
    float x = 0;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
            y+=2;
            x+=1;

}

手机端:鼠标点击的坐标是左上角横屏的X,Y值

然而:到了电脑PC端,也是左上角X,Y值,横的是X,竖的是Y

测试3:

 float y =0;
    float x = 0;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
           
x = event.getX();
y = event.getY();

}

 分别点手机屏幕四个角落:

x=691.0402,y=40.933647 左上角

x=695.03467,y=1124.0874 左下角

 x=39.944523,y=71.90945 右上角

坐标应该就=手机像素

然而我们要先转换成电脑位置就得这么改:

要对XY坐标进行镜像处理,将手机左角落的坐标原点转换成电脑的左角落原点,就需要转成手机的右角落原点

  //横屏x
                float phoneX = event.getX();
                //横屏y
                float phoneY = event.getY();
                //高度
                // mScreenHeight;
                //长度
                // mScreenWidth;
                cur_x = phoneX;
                cur_y = phoneY;
                float y = v.getWidth() - phoneX;
                float x = phoneY;
                //get dst video size and zoom 
                double scaleWidth = dstWidth * 1.0 / v.getHeight();
                double scaleHeight = dstHeight * 1.0 / v.getWidth();
             
                if(scaleWidth>scaleHeight) {
                    y = (float) (scaleWidth * y);
                    x = (float) (scaleWidth * x);
                }else{
                    y = (float) (scaleHeight * y);
                    x = (float) (scaleHeight * x);

                }

完成!

需要注意的是,远程控制横屏时最上面的一行手指很难定位到,可能是手机屏幕这部分无法点击,全屏时无法控制PC电脑端的放大缩小,所以我们这个VIEW是需要MARGIN=5dp差不多就OK了

猜你喜欢

转载自blog.csdn.net/jasonhongcn/article/details/85799000