Android设备与外接设备与外接U盘实现数据读取操作的示例盘实现数据读取操作的示例
本篇文章主要介绍了Android设备与外接U盘实现数据读取操作的示例,小编觉得挺不错的,现在分享给大家,
也给大家做个参考。一起跟随小编过来看看吧
现在越来越多手机支持OTG功能,通过OTG可以实现与外接入的U盘等USB设备实现数据传输。
USB OTG(On The Go)作为USB2.0的补充协议,于2001年由USB-IF提出。它提出的背景是移动消费类电子产品的迅猛增
加,而之前USB协议的主从协议标准让这些电子产品在离开PC电脑时的数据传输变得艰难,OTG技术正是为了解决这一问题
的标准。
通过OTG技术实现设备间端到端互联
OTG协议规定连接时默认情况作为Host的设备为A设备,A设备负责为总线供电;默认作为Device的设备为B设备(USB OTG
标准在完全兼容USB2.0标准的基础上,增加了一个ID pin;ID拉低为默认A设备);而有些设备由于集成了Host控制器和
Device控制器,既可以作A设备又可以做B设备,称为dura-role device。
最近项目上用到了该功能,项目上用的是安卓7.1的盒子,要实现与插入的U盘进行数据操作。通过大量的找资料,终于实现
了项目上需要的功能。找资料主要是解决两个问题:
1. U盘权限问题
2. U盘文件路径及文件操作
废话不多说,感觉还是喜欢直接上代码才爽快。项目中用到了一个开源框架,开源地址是:
https://github.com/magnusja/libaums。
代码部分:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//输入的内容
private EditText u_disk_edt;
//写入到U盘
private Button u_disk_write;
//从U盘读取
private Button u_disk_read;
//显示读取的内容
private TextView u_disk_show;
//自定义U盘读写权限
private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
//当前处接U盘列表
private UsbMassStorageDevice[] storageDevices;
//当前U盘所在文件目录
private UsbFile cFolder;
private final static String U_DISK_FILE_NAME = "u_disk.txt";
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 100:
showToastMsg("保存成功");
break;
case 101:
String txt = msg.obj.toString();
if (!TextUtils.isEmpty(txt))
u_disk_show.setText("读取到的数据是:" + txt);
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);