Android 轻松连接 Usb Device —— UsbConnector

先上文档 : Android Usb 官方文档

Git 库地址: UsbConnector

简介:由于安卓连接 USB device 颇为繁琐,因此本着不重复造轮子的原则写了一个 UsbConnector 库。运用该库可省略 USB 状态监听及 USB 连接权限的处理,三步即可轻松实现安卓连接 USB device ,以及各种状态的监听的功能!

一.基本配置

1.导入 USBConnector 库

Step 1. Add the JitPack repository to your build file .

Add it in your root build.gradle at the end of repositories:

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Step 2. Add the dependency

dependencies {
	        implementation 'com.github.Ysj001:UsbConnector:x.x.x'
	}

2.创建 Usb Device 过滤文件

  • 在 res 目录下建立一个 xml 文件夹,并在其中建立一个 device_filter.xml 文件内容如下所示
  • usb-device 可设置多个,用于过滤多个连接的设备
  • product-id 和 vendor-id 为必须设置的参数,用于后面记住 usb 设备的连接权限
  • interface-id 和 interface-subclass 则用于自动过滤用于打开连接的设备的连接接口(UsbInterface),若设置正确则库会自动初始化 UsbDeviceConnection
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <usb-device product-id="65535" vendor-id="2663" interface-id="3" interface-subclass="0" />
    <usb-device product-id="111111" vendor-id="1212" interface-id="13" interface-subclass="10" />
    <usb-device product-id="222" vendor-id="1212" interface-id="31" interface-subclass="01" />
</resources>

二.初始化连接器 / 释放连接器

  • 在任意位置都可调用 UsbConnector.init(context) 来对该库进行初始化,如下为在 Activity 的 onCreate() 函数中初始化

  • 在任意位置都可调用 UsbConnector.release(context) 来释放该库,如下为在 Activity 的 onDestroy() 函数中释放

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UsbConnector.init(this);
    }
    ... ... 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        UsbConnector.release(this);
    }

以上步骤完成后

三.对 USB device 进行操作

初始化 UsbOperate

  • 在对 usb device 进行操作前要先初始化 UsbOperate
IUsbOperate mOperate = new UsbOperate();

监听 usb device 的状态

确定设备的基本状态:

  • 是否插入
  • 插入的设备是否是过滤文件中的设备
  • 是否已经连接上

以上状态均可用以下方法监听:

mOperate.setOnDeviceStateListener(new OnDeviceStateListener() {
            @Override
            public void onDeviceState(String action) {
                
            }
        });

确定是否具有 usb 连接权限

可在以下方法中监听:

mOperate.setOnDevicePermissionListener(new OnDevicePermissionListener() {
            @Override
            public void onDevicePermission(boolean hasPermission) {
                
            }
        });

连接 USB device

  • 在完成上述几个步骤后只需要如下步骤就可以连接 usb device 啦
mOperate.connected(this);

其他操作

  • 若想获取一下内容均可在 USBHolder. getInstance() 中
    // 用于过滤设备的 filters
    List<UsbFilter> filters = new ArrayList<>();
    // usb 的广播接收器
    USBReceiver usbReceiver;
    // usb 设备
    UsbDevice usbDevice;
    // 该设备的连接接口
    UsbInterface usbInterface;
    // 设备的连接
    UsbDeviceConnection usbDeviceConnection;
    // 输入端点
    UsbEndpoint endpointIn;
    // 输出端点
    UsbEndpoint endpointOut;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y-S-J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值