本文主要是介绍APP使用Usb被占用独占模式问题记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
app中用到外接usb 设备,但是其他应用也是用到了usb,那么就存在一个问题,当别的应用先通过授权的方式获取到usb 权限,并且申请了独占模式,别的应用就无法再通过usb 传输数据,即使你已经通过了usb 获取到权限,并且可以正常的获取到
UsbDevice 设备,并且通过openDevice获取到UsbDeviceConnection,也可以获取到设备id.但是就是无法读写数据.
这是我的正常操作:
UsbDevice device = (UsbDevice) intent.getParcelableExtra (UsbManager.EXTRA_DEVICE);
UsbManager usbManager= (UsbManager) getSystemService (Context.USB_SERVICE);
UsbDeviceConnection connection = usbManager.openDevice (device);
独占模式:
connection.claimInterface (device.getInterface (0),true);
connection.releaseInterface (device.getInterface (0));
当设置这两个参数后表示启动了独占模式,claimInterface 方法是告诉linux 断开这个端口的设备,releaseInterface 是启动这个端口独占模式.
可以参考android api 文档的解释:http://www.android-doc.com/reference/android/hardware/usb/UsbDeviceConnection.html#claimInterface(android.hardware.usb.UsbInterface,%20boolean)
解决问题:
在获取到UsbDeviceConnection 后通过设置
connection.claimInterface (device.getInterface (0),true);
connection.releaseInterface (device.getInterface (0));
独占模式,可以解决usb 被占用的问题,当然别的设备也可以通过这种方式,重新获取到设备.
这篇关于APP使用Usb被占用独占模式问题记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!