2011-09-19 39 views
7

तक पहुंचने की अनुमति कैसे दें मैं अपने एंड्रॉइड ऐप (जावा जीयूआई + देशी (सी ++) कोर में libusb का उपयोग करना चाहता हूं)। मैंने पहले से ही libusb संकलित किया है और अपने कार्यों को कॉल करने का प्रयास किया है, लेकिन libusb_open वापसी LIBUSB_ERROR_ACCESS। मुझे लगता है कि यूएसबी एक्सेस अनुमतियों में कोई समस्या है, लेकिन मुझे नहीं पता कि इस मुद्दे को कैसे हल किया जाए। तो, यहां 2 प्रश्न: 1) एक एंड्रॉइड 3.1 डिवाइस पर libusb कैसे चल रहा है? 2) क्या एक unrooted, फैक्ट्री-डिफ़ॉल्ट डिवाइस पर libusb का उपयोग करना संभव है?एंड्रॉइड एप्लिकेशन में libusb का उपयोग: एप्लिकेशन को यूएसबी

अग्रिम धन्यवाद।

पी एस प्रश्न 1 के लिए, मैंने/dev/bus/usb के लिए chmod 666 की कोशिश की है, लेकिन यह कहता है "अनुमति अस्वीकार" (ध्यान दें कि मेरा डिवाइस रूट है)।

पी.पी.एस. usbfs को माउंट करें/proc/bus/usb -o devmode = 0666 निष्पादित भी नहीं करता है, जैसे कि मैंने कुछ गलत टाइप किया है (लेकिन मैंने नहीं किया)।


मैं जानता हूँ कि यह सुनिश्चित करें के लिए यह USB होस्ट के साथ एक निहित एंड्रॉयड डिवाइस पर काम कर libusb प्राप्त करना संभव है, लेकिन मैं इसे कभी नहीं कामयाब रहे, तो मैं Android के लिए 3.1+ एप्लिकेशन को प्रतिबंधित करने और यूएसबी API का उपयोग किया था।

+0

आप जाहिरा तौर पर एंड्रॉयड 3.1 के साथ काम कर रहे हैं के रूप में, आप [यूएसबी एपीआई] का उपयोग माना जाता है (http://developer.android.com/ एंड्रॉइड एसडीके में गाइड/विषय/यूएसबी/index.html)? – Frxstrem

+0

@Frxstrem: हाँ, मुझे उस समाधान का सहारा लेना पड़ा। मैं इसके साथ काफी खुश नहीं हूं, लेकिन यह काम करता है और यह एंड्रॉइड पर यूएसबी का उपयोग करने का मानक तरीका है, इसलिए मुझे लगता है कि मुझे सवाल बंद करना चाहिए। –

+2

इसे बंद न करें, बस इसका उत्तर दें। –

उत्तर

0

एंड्रॉइड में, आप libusb का उपयोग करके सीधे यूएसबी डिवाइस नहीं खोल सकते हैं (यह निष्कर्ष है कि आप आए थे :)।

आप क्यों खोलने में सक्षम नहीं थे?

आपको डिवाइस खोलने के लिए एंड्रॉइड सिस्टम (! = कर्नेल) से अनुमति प्राप्त करने की आवश्यकता है।

जावा में इसे अभी करें:

जब आप अनुरोध, एक पॉप उपयोगकर्ता स्वीकार या अस्वीकार करने के लिए दिखाया गया है। इसलिए आपको जावा में डिवाइस खोलने की जरूरत है, और जावा का उपयोग करके एफडी निकालें और libusb पर पास करें ताकि यह डिवाइस के साथ संवाद कर सके।

अब libusb fd से हैंडल कैसे बनाएगा?

अपडेट: मैं एंड्रॉइड के लिए संशोधित एक libusb संस्करण को बनाए रखता हूं (अधिक फिक्स - परीक्षण/एंड्रॉइड 5.1 और कम पर काम करने के साथ)। देख https://gitlab.com/madresistor/libusb/blob/android/README

पुराने लिंक (नहीं लिंक) यहाँ समाधान: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

+0

लिंक टूटा हुआ है। – jayeffkay

+0

@Jayeffkay अद्यतन लिंक। धन्यवाद। –