java - 我无法获得可在 Android 附件模式连接上读取的剩余字节数
问题描述
我试图获取在 AOA 连接上可用于读取的字节数,但是当我调用available ()
方法时,FileInputStream
我得到一个 IOException 并显示消息:'ioctl failed: EINVAL (Invalid argument)'
注 1:我使用 JNI 从 C++ 调用 Java 方法
注意2:available()
如果我尝试阅读而不是调用方法,它会完美地工作
我究竟做错了什么?在从 AOA 连接上的套接字读取之前,是否有另一种方法来询问可用字节?
这是Java代码:
public int testConnection () throws Exception {
UsbManager usbManager = (UsbManager) this.context.getSystemService(Context.USB_SERVICE);
final UsbAccessory[] accessoryList = usbManager.getAccessoryList();
if (accessoryList == null || accessoryList.length == 0) {
return -1;
} else {
UsbAccessory usb = accessoryList[0];
try {
ParcelFileDescriptor fileDescriptor = usbManager.openAccessory(usb);
if (fileDescriptor != null) {
FileDescriptor fd = fileDescriptor.getFileDescriptor();
FileInputStream inStream = new FileInputStream(fd);
inStream.available ();
} else {
return -2;
}
} catch (IOException e) {
return -3;
} catch (Exception e) {
return -4;
}
}
return 0;
}
解决方案
如果您对该方法执行“Ctrl”+“Clic” available
,您将看到该方法不适用于 Android 目标。该工具从裸本机更改并始终返回异常。