Android USB Accessory无法在Android 7.x / Nougat

时间:2017-05-19 22:25:38

标签: android usb android-7.0-nougat

我正在开发一个充当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上产生相同的问题。

任何人遇到此问题并能够找到解决方案吗?

0 个答案:

没有答案