# Android-PL2303HXA
**Repository Path**: supermay/Android-PL2303HXA
## Basic Information
- **Project Name**: Android-PL2303HXA
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-03-28
- **Last Updated**: 2020-12-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Android-PL2303HXA
A Android USB driver and demo for PL2303HXA(only pl2303hxa), implemented with Java.
Android上PL2303HXA(仅针对PL2303HXA,其他型号不行)的USB驱动实现,基于Java应用层的,因此无需修改内核、无需Root权限。Android3.0以上,需要USBHOST功能。带OTG的设备基本都可以。
### 背景
PL2303HX的其他型号(如PL2303HXD)官方已经出了驱动库了,但是HXA的官方已经没再出了,原因是官方已经停产HXA了,但是在国内,还有很多山寨的HXA型号在卖(没错,说的就是淘宝上),对于这类器件该库也是适用的。
补充一点大部分代码来自于之前的工作单位,它们形成于两年前(2013年底),当时因为做Android平板和单片机之间的通信而积累了这部分代码,弯路走了不少,现在放出代码也正是希望后面做接触这块的同行可以少走点弯路:)
### 说明
核心的实现是PL2303Driver类,封装了PL2303HXA的基本操作。该类通过一个UsbDevice(当然必须是PL2303HXA设备的)对象进行构造。
注意:AndroidManifest.xml文件中需添加两项USB权限
```xml
```
下面是部分代码片段,详细试用请看demo。
```java
// 通过PL2303Driver的getAllSupportedDevices方法来获取当前Android设备上关在的PL2303器件列表
List devices = PL2303Driver.getAllSupportedDevices(this);
if (devices.size() == 0) {
AddLog("请先插入PL2303HXA设备");
} else {
AddLog("当前PL2303HXA设备:");
for (UsbDevice d : devices) {
AddLog(" " + d.getDeviceId());
}
// 使用找到的第1个PL2303HXA设备
// 通过USB设备来创建一个PL2303Driver对象用于PL2303的操作
PL2303Driver dev = new PL2303Driver(this, devices.get(0));
openPL2302Device(dev);
}
// 如果有多个PL2303器件,那么就打开选择对话框的方式
PL2303Selector.createSelectDialog(this, 0, false, new PL2303Selector.Callback() {
@Override
public boolean whenPL2303Selected(PL2303Driver driver) {
openPL2302Device(driver);
return true;
}
}).show();
// 打开USB设备会涉及到一个权限请求的过程,在代码里面已经封装了。
// PL2303Driver.checkPermission方法会查看设备权限,如果没有授权的话会打开权限请求。
// PL2303Driver.setBaudRate用于设置通信波特率。
// 设置完毕之后通过PL2303Driver.open方法初始化并打开PL2303HXA设备
// 创建完PL2303Driver对象之后就可以对它进行读写操作了。
// 为了方便流式使用,封装了PL2303InputStream和PL2303OutputStream,通过传人PL2303Driver进行构造。
```
对于Android获取当前挂载的USB设备可以参考我的另外一个工程 [AndroidDemos](https://github.com/sintrb/AndroidDemos)的ListUSBDevice子项,或者直接安装[ListUSBDevice](https://github.com/sintrb/AndroidDemos/blob/master/APK/ListUSBDevice.apk?raw=true) 。
如果想直接体验的话这里有编译好的apk:[https://github.com/sintrb/Android-PL2303HXA/tree/master/APK](https://github.com/sintrb/Android-PL2303HXA/tree/master/APK)
来个简单的截图:
