2011-09-23 24 views
6

के साथ एंड्रॉइड यूएसबी होस्ट समस्या सैमसंग गैलेक्सी टैबलेट पर यूएसबी होस्ट क्षमता का लाभ उठाने का प्रयास कर रहा हूं। मैंने सैमसंग से लगाव डोंगल खरीदा (http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA)। जब मैंने पहली बार इस डोंगल के माध्यम से एक यूएसबी डिवाइस को जोड़ा, तो गैलेक्सी टैबलेट से मुझे एक उच्च शक्ति त्रुटि मिली - एफवाईआई एक बाहरी संचालित यूएसबी हब का उपयोग करता है और आप इसे द्विपक्षीय बना सकते हैं।सैमसंग गैलेक्सी 10.1 टैबलेट

अब जब मैं इसे संलग्न करता हूं तो डिवाइस स्वयं यूएसबी परिधीय के अस्तित्व को स्वीकार कर रहा है, मैंने एंड्रॉइड के एंड्रॉइड.hardware.usb.UsbDevice का उपयोग करने का प्रयास किया; आयात android.hardware.usb.UsbManager; पुस्तकालय। मैंने देखा है जब मैं किसी भी उपकरण, अजीब देते हैं के माध्यम से

IntentFilter usbIntentFilter = new IntentFilter(); 
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_ATTACHED");   
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_DETACHED"); 
registerReceiver(mUsbReceiver,usbIntentFilter); 

USB डिवाइस को पहचानने के लिए दो तरीकों, एक प्रसारण रिसीवर को उद्देश्य के लिए सुनने दर्ज की यह किसी भी उद्देश्य फायरिंग नहीं है देखते हैं कि ... ठीक है। तो मैं पर चला गया अगली विधि की कोशिश करने के लिए: स्पष्ट रूप से UsbManager के माध्यम से एक डिवाइस सूची के लिए क्वेरी - यह इस प्रकार पूरा किया गया था:

HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); 
    int count = deviceList.size(); 
    Iterator<UsbDevice> iterator = deviceList.values().iterator(); 

    if(iterator.hasNext()){ 
    UsbDevice deviceVal = iterator.next(); 
    testTxtView1.setText("set device " + deviceVal); 
    } 

यह शायद एक हड़पने होगा (केवल एक यूएसबी डिवाइस वर्तमान में प्रति गूगल प्रलेखन समर्थित) यूएसबी डिवाइस जो वर्तमान में जुड़ा हुआ है। इसका परीक्षण करने के लिए मैं उपरोक्त कोड को बटन पर क्लिक करके कॉल करता हूं और डिवाइस के परिणाम प्रदर्शित करता हूं। किसी कारण से, मुझे हर बार डिवाइस सूची से डिवाइस मिल रहा है, चाहे यूएसबी डोंगल कनेक्ट हो या नहीं। इसके अलावा, डिवाइस यूएसबी डोंगल (या इसकी कमी) के बावजूद हर बार एक ही है।

डिवाइस usbDevice [mName =/dev/बस/USB/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid: इस प्रकार उत्पादन होता है .os.Parcelable; @ 406ff4d8]

^^ @ 406ff4d8 मूल्य हर बार जब मैं इस कोड को क्वेरी में परिवर्तन (मैं सिर्फ यह का एक उदाहरण प्रस्तुत)

मैं हर जगह खोज की है और करने में सक्षम नहीं किया गया है मेरी स्थिति पर लागू होने वाली किसी भी तरह की समस्या या समाधान ढूंढें। मैंने Google के यूएसबी उदाहरणों को लागू करने का प्रयास किया है (जो वास्तव में मेरे पास है, मैंने उन्हें फटकारा) और इन समस्याओं में भाग ले रहा हूं।

मैं अपने प्रकट की मेकअप का उल्लेख करना चाहिए:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="edu.mit.ll.drm4000" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-feature android:name="android.hardware.usb.host" /> 
<uses-sdk android:minSdkVersion="12" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 


    <activity android:name=".DRM4000Activity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
     </intent-filter> 

     <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
      android:resource="@xml/device_filter" /> 

    </activity> 

</application> 

और उपकरण फिल्टर:


(मैं हटा दिया डिवाइस फिल्टर पर मापदंड लेकिन डी के बारे में विशिष्ट जानकारी डालने का भी प्रयास किया है evice मैं देख रहा हूँ ... दोनों का कोई फायदा नहीं हुआ।)

इस समस्या के बारे में कोई भी मदद की सराहना की जाएगी!


कोई अन्य अपडेट: डिवाइस मैं शिकायत की के बारे में हमेशा डिवाइस सूची पर प्रगणित किया जा रहा

डिवाइस usbDevice [mName =/dev/बस/USB/001/002, mVendorId = 1256, mProductId = 27033, mClass = 0, mSubClass = 0, mProtocol = 0, mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]

एंड्रॉइड साइड यूएसबी पोर्ट या कुछ होना चाहिए ...क्योंकि मैंने अपने कोड में विभिन्न उपकरणों का एक गुच्छा संलग्न करना शुरू किया और पाया कि (इस लिंक के समान: USB_DEVICE_ATTACHED Intent not firing) छुपा डिवाइस, आर्डिनो डिवाइस..और दुख की बात है ... मेरा यूएसबी डिवाइस किसी इरादे को आग लगने या गिनने के लिए प्रतीत नहीं होता है यूएसबी हब मैंने एक यूएसबी फ्लैश ड्राइव के साथ प्रयास किया और यह डीआईडी ​​ने इसे समझाया और काम किया ... हालांकि यह सूची में दूसरे डिवाइस के रूप में दिखाई देता है, पहला ऊपर सूचीबद्ध वर्तमान यूएसबीडिवाइस है। हालांकि इरादों के साथ आग लगती है।

क्या कोई भी एचआईडी उपकरणों और अन्य यूएसबी उपकरणों के साथ इरादे की आग बनाने के लिए एक कामकाज जानता है सिवाय इसके कि कुछ एंड्रॉइड अब कुछ ऐसा लगता है?

+0

क्या आप सत्यापित कर सकते हैं कि यूएसबी होस्ट किसी अन्य ऐप्स के लिए काम करता है? एक पीटीपी कैमरा जोड़ने का प्रयास करें और देखें कि क्या गैलरी प्रसारण का इरादा नोटिस करता है। मुझे लगता है कि आपने रीबूट करने का प्रयास किया है और अपने टैब को नवीनतम संस्करण में अपडेट किया है। –

+0

जब मैं कीबोर्ड में प्लग करता हूं, तो ऐसा लगता है कि यह काम करता है। जब मैं इसे प्लग करता हूं तो मुझे "यूएसबी डिवाइस कनेक्टेड" संदेश मिलता है। हालांकि, उपरोक्त कोड मुझे एक कीबोर्ड के साथ एक ही आउटपुट देता है, अन्य यूएसबी डिवाइस प्लग इन करता है, या प्लग इन नहीं होता है। मुझे समझ में नहीं आता कि यह क्यों देखने का दावा कर रहा है यूएसबी डिवाइस परवाह किए बिना।मुझे पता है कि यह मेरे कोड के साथ कुछ होना चाहिए क्योंकि कीबोर्ड को ठीक से पहचाना जाता है। बीटीडब्लू: जब मैं अन्य डिवाइस से कनेक्ट करता हूं तो यह कहता है "अज्ञात यूएसबी डिवाइस कनेक्ट किया गया" – hinklecw

+0

एक और अपडेट: डिवाइस की सूची पर हमेशा गिनती होने वाली डिवाइस को एंड्रॉइड यूएसबी पोर्ट या कुछ होना चाहिए ... क्योंकि मैंने अलग-अलग समूह को जोड़ना शुरू किया मेरे कोड के लिए डिवाइस और पाया कि (इस लिंक के समान: USB_DEVICE_ATTACHED इरादा नहीं फायरिंग) छुपा डिवाइस, आर्डिनो डिवाइस, और मेरा यूएसबी डिवाइस किसी इरादे को आग लगाना या यूएसबी हब द्वारा गणना नहीं करना है। मैंने एक यूएसबी फ्लैश ड्राइव के साथ प्रयास किया और यह डीआईडी ​​ने इसे समझाया और काम किया ... हालांकि यह सूची में दूसरे डिवाइस के रूप में दिखाई देता है, पहला ऊपर सूचीबद्ध वर्तमान यूएसबीडिवाइस है। हालांकि इरादों के साथ आग लगती है। – hinklecw

उत्तर

4

एसओओ दुर्भाग्यवश ऐसा लगता है कि सैमसंग गैलेक्सी टैबलेट बस यूएसबीमेनगर के साथ अच्छी तरह से नहीं खेलता है और दुनिया में लगभग आधे यूएसबी डिवाइसों के साथ अच्छी तरह से नहीं खेलता है। सैमसंग में कर्नेल स्टोरेज डिवाइसेज और इसी तरह के इरादे से आग लग रहा है, लेकिन छिपाई और अन्य यादृच्छिक उपकरणों (जैसे आर्डिनो, और मेरे यूएसबी सेंसर, और छिपाई उपकरणों के लिए भी नहीं।) यह सैमसंग कर्नेल में एक बग प्रतीत होता है। दिलचस्प बात यह है कि छुपा उपकरण टैबलेट पर काम करते हैं, लेकिन UsbManager पर गणना नहीं की जाती है। मुझे एक ही समस्या के कई लिंक मिल गए हैं, और ऐसा लगता है कि कर्नेल पैच (या एसर टैबलेट) इस एटीएम के आसपास एकमात्र तरीके हैं। उम्मीद है कि सैमसंग भविष्य में ठीक हो जाएगा। यहां एक ऐसे व्यक्ति का लिंक है जिसने कर्नेल को पुनर्निर्माण करने पर कर्नेल पैच किया है और आपको वास्तव में UsbManager काम करने की आवश्यकता है। मैंने परीक्षण नहीं किया है लेकिन अंततः योजना बना रहा है, और मेरे विचारों पर एक टिप्पणी छोड़ दूंगा। http://forum.xda-developers.com/showthread.php?t=1233072

+0

आपके द्वारा लिंक किया गया कर्नेल पैच यहां लागू नहीं होता है। यह सैमसंग गैलेक्सी टैब 7 के लिए है, लेकिन माता-पिता सैमसंग गैलेक्सी टैब 10.1 के बारे में बात कर रहे हैं क्योंकि वह हनीकॉम को अपने मैनिफेस्ट में न्यूनतम एसडीके के रूप में लक्षित कर रहा है। –

+0

क्या अभी भी सैमसंग पर काम करने के लिए यूएसबी होस्ट मोड प्राप्त करने के लिए कोई अपडेट उपलब्ध नहीं है बिना किसी झुकाव के? मैं एक एसर आइकोनिया 500 का उपयोग कर रहा हूं, और वहां सबकुछ बिना किसी समस्या के काम करता है - मुझे इसे सैमसंग पर भी रखना अच्छा लगेगा – user387184

1

मैं का सामना करना पड़ रहा एक ही समस्या से यूएसबी एपीआई हटा दिया गया है, लेकिन आप एक विधि DEVICENAME (उपयोग कर सकते हैं, इस उपकरण की गणना के बाद आप एक स्ट्रिंग device.getdeviceName का उपयोग करने में डिवाइस का नाम स्टोर कर सकते हैं() तरीका।

आपको डिवाइस की पूरी जानकारी से सटीक डिवाइस नाम एपर्ट मिलेगा।

0

मुझे लगता है कि आपको उस उपकरण को परिभाषित करना चाहिए जिसे आप संसाधन/xml/device_filter.xml में पहचानना चाहते हैं। आप एंड्रॉइड एपीआई का जिक्र कर सकते हैं।

-2

मैंने अपने सैमसंग गैलेक्सी टैब 10 P7500 में सफलतापूर्वक मेरे Arduino Uno को संलग्न किया है। यदि आपको इसे जोड़ने में कोई समस्या है, तो ऐसा इसलिए है क्योंकि टैबलेट उन यूएसबी उपकरणों के लिए अनुमति अस्वीकार करता है जिनमें बाहरी शक्ति नहीं है। पहली बार 5 या 3.3 वोल्ट एसी/डीसी एडाप्टर का उपयोग करके अपने डिवाइस को बाहरी रूप से पावर करने का प्रयास करें, अगर आपको अपना डिवाइस संलग्न होता है और इरादा को आग लगती है, तो पावर एडाप्टर को अनप्लग करें, और आपका डिवाइस बाहरी शक्ति के बिना संचालित होगा, टैबलेट स्वयं यूएसबी ओटीजी

0

के माध्यम से बिजली प्रदान करेगा एक और (बुरा) कारण हो सकता है कि आप अपना छुपा डिवाइस क्यों नहीं देख सकते हैं।

UsbHostManager.beginUsbDeviceAdded() "नए यूएसबी उपकरणों की रिपोर्ट करने के लिए मॉनीटर यूएसबीहोस्टबस() में जेएनआई से कॉल किया गया"। इस विधि में एक निजी विधि isBlackListed() है जो बिना शर्त रूप से सभी हब के फ़िल्टर और छिपाई सबक्लास बूट के साथ छिपाएगी। यही कारण है किसी को भी इस के लिए एक समाधान है, तो जब आप एक getDeviceList()

कर तुम क्यों HID डिवाइस नहीं दिख रहा है हो सकता है, मुझे लगता है कि वहाँ उन भी पर्याप्त मात्रा में इसे कौन देख सराहना करेंगे देखते हैं कि।

संबंधित मुद्दे