मैं ओटीजी केबल के साथ एक्सओओएम के साथ ओटीजी केबल का उपयोग कर बाहरी स्टोरेज फाइल सिस्टम पढ़ने के लिए आवेदन करने की कोशिश कर रहा हूं। मैं इस कोड का उपयोग कर रहा फ्लैश डिवाइसएंड्रॉइड यूएसबीहोस्ट फ्लैश ड्राइव
final UsbDeviceConnection connection = manager.openDevice(device);
UsbInterface inf = device.getInterface(0);
if (!connection.claimInterface(inf, true)) {
Log.v("USB", "failed to claim interface");
}
UsbEndpoint epOut = null;
UsbEndpoint epIn = null;
// look for our bulk endpoints
for (int i = 0; i < inf.getEndpointCount(); i++) {
UsbEndpoint ep = inf.getEndpoint(i);
if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
epOut = ep;
} else {
epIn = ep;
}
}
}
if (epOut == null || epIn == null) {
throw new IllegalArgumentException("not all endpoints found");
}
final UsbEndpoint inEndPoint = epIn;
यह सामान्य काम करता है साथ संचार के लिए और बाहर endpoint निर्धारित करने के लिए। तो मैं FAT32 बूट क्षेत्र पाने के लिए
ByteBuffer arg1 = ByteBuffer.allocate(512);
UsbRequest request = new UsbRequest();
request.initialize(connection, inEndPoint);
request.queue(arg1, inEndPoint.getMaxPacketSize());
UsbRequest result = connection.requestWait(); // halt here
connection.releaseInterface(inf);
connection.close();
पहले 512 बाइट्स पढ़ने के लिए कोशिश कर रहा हूँ, लेकिन यह कनेक्ट किए गए डिवाइस से किसी भी डेटा को पढ़ने नहीं है। यह सब कोड अलग थ्रेड पर चलाने के प्रसारण रिसीवर में डिवाइस
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(USBHostSampleActivity.this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);
manager.requestPermission(lDevices.get(position),mPermissionIntent);
पर अनुमति granding के बाद मैं सिर्फ पिछले कोड के साथ नया धागा शुरू; मैं भी f0 डेटा और/या hwstats पाने के लिए libusb नमूने में USBDeviceConnection.controlTransfer
byte[] b = new byte[0x10];
int cTransfer = connection.controlTransfer(128, 6, 16, 0,b, 12, 0);
की तरह करने के लिए कॉल करने के लिए करने की कोशिश की लेकिन यह हमेशा वापस आ -1 भी मैं bulkTransfers सिंक करने के लिए USBRequst का उपयोग कर async अनुरोध की जगह की कोशिश की लेकिन नतीजा है वही। क्या किसी ने एंड्रॉइड एसडीके के इस हिस्से के साथ काम किया है? धन्यवाद!
मैं कुछ ऐसा करने की कोशिश कर रहा हूं - एक यूएसबी छिपा डिवाइस को ज़ूम चलाना आईसीएस से कनेक्ट करें। कुछ शोध करने के बाद, मुझे पता है कि यूएस-शिप किए गए ज़ूम में अधिकांश समय यूएसबी होस्ट एपीआई के साथ कोई समस्या नहीं है लेकिन किसी भी अन्य (जैसे ईयू या ऑस्ट्रेलिया-शिप किए गए) डिवाइसों में मेजबान एपीआई इस तरह से लागू होती है जो एक बनाने की अनुमति नहीं देती है नियंत्रण स्थानांतरण। मैं अलग-अलग छवियों के साथ अपने डिवाइस को फ्लैश करने की कोशिश कर रहा हूं, जब मैं आगे बढ़ता हूं तो मैं आपको बता दूंगा। क्या आपको कल से कुछ उपयोगी लगता है? – syntagma
हां, मैं लगभग usbhost api का उपयोग कर fat32 पार्सिंग को कार्यान्वित करना समाप्त कर दिया। और मैं आपको बता सकता हूं कि आपको नियंत्रण ट्रांसफर का उपयोग करने की आवश्यकता नहीं है। आपको केवल bulk_transfer और छुपा आधिकारिक दस्तावेज – Alexandr