android蓝牙控制PC——PC端代码

本文介绍了如何使用Android设备通过蓝牙发送指令到PC,PC端的Java程序接收指令后利用robot库执行相应操作。主要涉及两个类:remotePC.java和BluetoothServer.java。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

在安卓端通过蓝牙发送指令到PC端,java程序接收指令,并执行相应的动作。其中指令格式有所规范,PC端的java程序通过robot库进行操作

代码

控制类remotePC.java
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class remotePC {
   
    //保存当前鼠标指针的坐标(px,py)
    private static int px;
    private static int py;
    //最大延迟时间:1秒
    public static final int MAX_DELAY = 1000;
    //最小间隔时间:1毫秒
    public static final int SAMPLE_TIME_DIV = 1;
    //魔法数字,用于设置默认的事件delay时间间隔
    private final double magicX = 1.0;
    //视觉延迟:默认100ms
    private final int VISIBAL_MOVEMENT = 100;
    //PC屏幕尺寸
    private int screenWidth;
    private int screenHeight;
    //手机屏幕尺寸
    private int mobileWidth;
    private int mobileHeight;
    //手机电脑尺寸转换的比例
    private double widScale;
    private double heiScale;
    //用于控制的robot类
    private Robot robot;

    //默认构造函数
    public remotePC() throws AWTException{
        this(1366, 768);
    }
    //构造函数,指定手机屏幕尺寸
    public remotePC(int mobileWidth, int mobileHeight) throws AWTException{
        robot = new Robot();
        robot.setAutoDelay((int)magicX);
        setScreenSize();
        this.mobileHeight = mobileHeight;
        this.mobileWidth = mobileWidth;
        setScale();
    }
    public void moveToCenter(){
        this.move(screenWidth/2, screenHeight/2, 1);
    }
    //[鼠标光标移动]
    //dt:间隔时间,时间长短对应速度
    //dx,dy:手机上移动的相对横纵位移,自动转换为pc上应该移动的尺寸
    public void move(int dx, int dy, int dt){
        double deltaX = (1.0*dx/widScale);
        double deltaY = (1.0*dy/heiScale);
        int dxpms = (int)deltaX/dt;
        int dypms = (int)deltaY/dt;
        for(int i=0; i<dt; i++){
            px += dxpms;
            py += dypms;
            if(px <= 0){
                px = 0;
            }else if(px >= screenWidth){
                px = screenWidth;
            }
            if(py <= 0){
                py = 0;
            }else if(py >= screenHeight){
                py = screenHeight;
            }
            robot.mouseMove((int)px, (int)py);
        }
    }
    //[按下鼠标左键]
    public void pressMouseL(){
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    }
    //[释放鼠标左键]
    public void releaseMouseL(){
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    }
    //[点击一下鼠标左键]
    public void clickMouseL(){
        this.pressMouseL();
        this.releaseMouseL();
    }
    //[按下鼠标右键]
    public void pressMouseR(){
        robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
    }
    //[释放鼠标右键]
    public void releaseMouseR(){
        robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
    }
    //[点击鼠标右键]
    public void clickMouseR(){
        this.pressMouseR();
        this.releaseMouseR();
    }
    //[按下滚轮]
    public void pressWheel(){
        robot.mousePress(InputEvent.BUTTON2_DOWN_MASK);
    }
    //[释放滚轮]
    public void releaseWheel(){
        robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK);
    }
    //[滚轮往下移动]:step是移动步数,相对于滚轮的一格
    public void wheelDown(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值