我正在开发一个充当Android USB附件并连接到USB设备(主机)的应用程序。这在大多数设备上都能正常工作,但我在Nexus 5x(OS 7.1.1)和Galaxy S7(OS 7.0)上遇到了问题。 Android 7中的USB有什么问题吗?
我只有2部手机作为样本尺寸,但它似乎是Android 7 / Nougat问题。问题是在初始化后尝试使用它们时,InputStream上的任何操作都会失败。
代码很标准:
InputStream inputStream = null;
OutputStream outputStream = null;
UsbAccessory usbAccessory;
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
if (usbManager != null && usbManager.getAccessoryList() != null)
{
for (UsbAccessory a : usbManager.getAccessoryList())
{
// Find accessory we want
{
usbAccessory = a;
break;
}
}
{
ParcelFileDescriptor parcelFileDescriptor = usbManager.openAccessory(usbAccessory);
if (parcelFileDescriptor != null)
{
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
// Have also tried using:
// FileInputStream inputStream
// and
// BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(fileDescriptor);
inputStream = new FileInputStream(fileDescriptor);
outputStream = new FileOutputStream(fileDescriptor);
// Here any operations on inputStream just hang on the Nexus 5x and S7
// ex:
// inputStream.skip(Long.MAX_VALUE);
// or
// byte[] buffer = new byte[BUFFER_SIZE];
// inputStream.read(buffer)
}
我尝试使用AOA连接Android应用程序和使用AOA的第三方硬件,并且都在Nougat上产生相同的问题。
任何人遇到此问题并能够找到解决方案吗?