b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

HID蓝牙TouchScreen协议让你的安卓手机变成触摸屏(图)

电脑杂谈  发布时间:2021-05-06 16:02:01  来源:网络整理

相关文章:“蓝牙HID触摸屏协议将您的Android手机变成触摸屏”

一直有一种想法来编写一个APP,以将Android手机模拟为鼠标/键盘,在紧急情况下可用于替换鼠标/键盘。之前,我也在网站上寻找过各种解决方案,但是这些解决方案并不是很好,直到Google发布API28之后,终于有了一个好的解决方案。为了实现这个想法,我走了很多弯路,也许方法是错误的,但是看到最终可以完美运行的APP,我仍然感到有成就感。经过测试,带有此APP的手机可以与几乎所有的Android手机和WIN10笔记本电脑连接并使用。苹果设备需要IOS13及更高版本才能支持蓝牙鼠标/键盘。鼠标功能在Apple系统下是正常的,并且键盘输入文本没有问题,但是其他功能键(例如:Win,Menu,PageUp / Down,上,下,左,右键...)没有问题。效果。

BluetoothHidDevice

android.bluetooth.BluetoothHidDevice是完成任务的核心类。它将我们的应用程序注册为具有HID特性的蓝牙设备,并发送HID设备的报告描述符。如果我们的报告描述符没有问题,那么我们的设备将成功模拟所需的HID设备。

代码砖创意

首先将我们的应用程序注册为HID设备;

BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, mProfileServiceListener,BluetoothProfile.HID_DEVICE);
public static BluetoothProfile.ServiceListener mProfileServiceListener = new BluetoothProfile.ServiceListener() {
    @Override
    public void onServiceDisconnected(int profile) { }
    @SuppressLint("NewApi") @Override
    public void onServiceConnected(int profile, BluetoothProfile proxy) {
        bluetoothProfile = proxy;
        if (profile == BluetoothProfile.HID_DEVICE) {
            HidDevice = (BluetoothHidDevice) proxy;
            HidConsts.HidDevice = HidDevice;
            BluetoothHidDeviceAppSdpSettings sdp = new BluetoothHidDeviceAppSdpSettings(HidConsts.NAME, HidConsts.DESCRIPTION, HidConsts.PROVIDER,BluetoothHidDevice.SUBCLASS1_COMBO, HidConsts.Descriptor);
            HidDevice.registerApp(sdp, null, null, Executors.newCachedThreadPool(), mCallback);
        }
    }
};
public static final BluetoothHidDevice.Callback mCallback = new BluetoothHidDevice.Callback() {
    @Override
    public void onAppStatusChanged(BluetoothDevice pluggedDevice, boolean registered) { }
    @Override
    public void onConnectionStateChanged(BluetoothDevice device, int state) {
        if(state == BluetoothProfile.STATE_DISCONNECTED){
            HidUitls.IsConnected(false);
            if(connectionStateChangeListener != null){
                connectionStateChangeListener.onDisConnected();
            }
        }else if(state == BluetoothProfile.STATE_CONNECTED){
            HidUitls.IsConnected(true);
            if(connectionStateChangeListener != null){
                connectionStateChangeListener.onConnected();
            }
        }else if(state == BluetoothProfile.STATE_CONNECTING){
            if(connectionStateChangeListener != null){
                connectionStateChangeListener.onConnecting();
            }
        }
    }
};

然后确定您要连接的蓝牙设备是否已配对(双方必须配对),如果没有配对,则需要建立配对;

public static boolean Pair(String deviceAddress){
    if(BluetoothAdapter.checkBluetoothAddress(deviceAddress)){
        try {
            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            if(BtDevice == null){
                BtDevice = mBluetoothAdapter.getRemoteDevice(deviceAddress);
            }
            if(BtDevice.getBondState() == BluetoothDevice.BOND_NONE){
                BtDevice.createBond();
                return false;
            }else if(BtDevice.getBondState() == BluetoothDevice.BOND_BONDED){
                return true;
            }else if(BtDevice.getBondState() == BluetoothDevice.BOND_BONDING){
                return false;
            }
        }catch (Exception ex){ ex.printStackTrace(); }
    }
    return false;
}

完成配对后获取蓝牙设备的MAC地址,然后使用该MAC地址连接到目标设备;

public static boolean Connect(String deviceAddress){
    if(TextUtils.isEmpty(deviceAddress)){return false;}
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if(BtDevice == null){
        BtDevice = mBluetoothAdapter.getRemoteDevice(deviceAddress);
    }
    boolean ret = HidDevice.connect(BtDevice);
    return ret;
}

IOS13相关设置

在安装HidDroid来控制iPhone之后,需要在Android机器上完成以下设置,这些设置可以在iPhone上找到:设置->辅助功能->触摸->辅助触摸->设备,选择已配对的已连接的Android在手机上,设置成功后,屏幕上会出现一个白色的球,该球是鼠标指针。

在这里插入图片描述

代码运行效果

将您的Android手机变成键盘和鼠标

202 0. 1 1. 11编辑

最近,我们研究了基于鼠标和键盘的多媒体控制功能的添加。媒体控制包括7个功能,即:上一首歌曲,下一首歌曲,音量+,音量-,停止播放,播放/暂停和静音。在实施HID媒体播放的过程中,发现Android与报表描述符具有很好的兼容性。只要看起来正确的描述符运行,基本上就没有问题,而win10则没有这么好的兼容性。理论分析是正确的在Win10下描述符可能不起作用。经过无数次尝试,我终于能够编写与win10兼容的描述符。另外,由于它与Android兼容,因此智能电视的媒体控制自然是理所当然的。

让我们看一下效果:

媒体控制界面

安卓模拟 键盘_安卓模拟键盘_安卓键盘模拟

win10下媒体控制效果

[win10下的媒体控制效果]

ios13媒体控制效果

[ios13媒体控制效果]

说明:使用Media Player在win10下播放视频。上一个和下一个功能是快退/快进。仅当您使用音乐播放器时,才可以播放歌曲。如果手机上未安装音乐播放器,则切/播放/暂停/停止歌曲功能将不起作用,只能调节音量。

202 0. 1 1. 15编辑

就在实施媒体控制功能之后,我无意间在Microsoft网站上看​​到了与显示器亮度调整有关的HID描述符,并决定尝试一下。看看微软的官方网站是如何描述显示器亮度调节的:

安卓模拟 键盘

可以看出这里使用了2bit。当我们实现媒体控制时,我们使用7个按钮来对应7位。要集成亮度控制,我们需要9位,这显然超过一个字节。纠缠了很长时间以删除媒体控件的停止功能,因为播放/暂停可以实现类似的功能。您可能会问,报告描述符中的主要项目不能超过8个控件?例如,给他9个控件,然后用7位填充填充它?我尝试了所有这些。尽管无法在Android中调整屏幕亮度,但其他功能不会受到影响,但win10中的所有功能都会受到影响。最终结论是将所有控件暂时控制在一个字节内,然后慢慢研究超出一个字节的控件。

多媒体控制界面

[多媒体控制界面]

win10亮度调节

[win10亮度调整]

最后,我想强调一下,该亮度调整目前仅受Microsoft的win8 / win10支持,它是一种移动设备(电池供电的设备)。如果找到Mac和Linux的亮度调整用法,则使其兼容。

202 0. 1 1. 22编辑

最近,小度X8智能屏幕扬声器已添加到家庭中。将Xiaodu X8与Hidroid连接起来没有问题。出乎意料的是,发现在小度X8的DuerOS下也可以支持调节屏幕亮度的功能。调整音量也可以。

以下博客讨论如何通过蓝牙将Android手机模拟为游戏方向盘:通过蓝牙支持Android手机成为PC游戏方向盘手柄,以支持旋转轮胎

相关文章:“蓝牙HID触摸屏协议将您的Android手机变成触摸屏”

完整的源代码下载地址

“仅通过Bluetooth HID模仿Android手机作为鼠标和键盘的源代码”

“仅使用蓝牙HID将Android手机模拟为鼠标和键盘”(媒体控件+ win8 / 10屏幕亮度)+“使用蓝牙将Android手机变成PC游戏方向盘手柄-支持旋转轮胎“两次源代码包下载


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-373481-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 叶季良
        叶季良

        我们就应该是没有敌对情绪亲密同胞

      热点图片
      拼命载入中...