2013-04-11 44 views
9

मैं अपनी नोटबुक (win7) और मेरे एंड्रॉइड फोन (एंड्रॉइड 4.2) के बीच एक यूएसबी कनेक्शन बनाने की कोशिश करता हूं। नोटबुक को एंड्रॉइड फोन को पावर करने के लिए मेजबान के रूप में कार्य करना चाहिए। लक्ष्य है कि नोटबुक और फोन भेजने और एक्सएमएल तारएंड्रॉइड (एक्सेसरी मोड) और विंडोज पीसी (होस्ट) के बीच यूएसबी संचार

प्राप्त मैं एंड्रॉयड पेज कि गौण मोड (http://developer.android.com/guide/topics/connectivity/usb/accessory.html) बताते हैं अनुसरण करने की कोशिश कर सकते हैं।

  • 1: मैं एक गौण फिल्टर को परिभाषित करना होगा जैसे वे यहाँ किया:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <usb-accessory model="DemoKit" manufacturer="Google" version="1.0"/> 
    </resources> 
    

    है क्योंकि मैं नहीं चाहता एक विशेष हार्डवेयर मान्यता प्राप्त होना। मैं सभी प्रकार के विंडोज कंप्यूटरों को पहचानना चाहता हूं (उदाहरण के लिए मैं फोन को किसी अन्य पीसी में प्लग करता हूं)।

  • 2: मैंने अभी विंडोज़ पक्ष पर कुछ भी नहीं किया है। मैंने बस एंड्रॉइड पेज का पालन किया, यूएसबी केबल में प्लग किया और लॉग देखा। ऐप स्टार्टेट अनुमति के लिए पूछता है, लेकिन सहायक शून्य है। कोई संकेत क्यों यह शून्य है? कोड:

    public class MainActivity extends Activity { 
    private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; 
    private static final String TAG = "USB_PERMISSION"; 
    UsbAccessory accessory; 
    
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 
    
    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, 
         new Intent(ACTION_USB_PERMISSION), 0); 
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); 
    registerReceiver(mUsbReceiver, filter); 
    accessory = (UsbAccessory) getIntent().getParcelableExtra(
         UsbManager.EXTRA_ACCESSORY); 
    manager.requestPermission(accessory, mPermissionIntent); 
    } 
    
    private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { 
    
    public void onReceive(Context context, Intent intent) { 
        String action = intent.getAction(); 
        if (ACTION_USB_PERMISSION.equals(action)) { 
         synchronized (this) { 
          if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { 
           String manufacturer; 
           Log.d(TAG, "permission accepted for accessory " + accessory); 
           if (accessory != null) { 
            manufacturer = accessory.getManufacturer(); 
            Log.d(TAG, "Manufacturer: " + manufacturer);      } 
          } else { 
           Log.d(TAG, "permission denied for accessory "+ accessory); 
          } 
         } 
        } 
    } 
    }; 
    } 
    
  • 3: वहाँ किसी भी libarys/परियोजनाओं मैं Windows पक्ष पर यूएसबी कनेक्शन की पहचान के लिए उपयोग कर सकते हैं कर रहे हैं?

  • 4: मुझे और भी कुछ चीजों के बारे में सोचना चाहिए? चीजें जो गलत हैं?
  • 5: आपकी मदद :)
+0

तो मुझे लगता है कि # 1 अब स्पष्ट है। Intentfilter केवल स्वचालित deteciton – B770

उत्तर

-3

ठीक है के लिए THX, मुझे लगता है मैं इस सवाल का जवाब अपने आप को मिल गया। एंड्रॉइड यूएसबी एक्सेसरी मोड केवल एंड्रॉइड फोन और एंड्रॉइड चलाने वाले अन्य डिवाइस (जैसे Arduino) के बीच संभव है। तो इस सेटिंग के साथ यह संभव नहीं है।

+0

के लिए आवश्यक है यह उत्तर गलत है - एक Arduino एंड्रॉइड नहीं चलाता है, और यूएसबी होस्ट ऐसा करने की कोई आवश्यकता नहीं है। हालांकि, यूएसबी एक्सेसरी मोड का समर्थन करने के लिए आवश्यक विशिष्ट तरीकों से बात करने में सक्षम होना आवश्यक है। –

4

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

यूएसबी फ़ोल्डर में, आप अपने एंड्रॉइड एसडीके के नमूनों में एंड्रॉइड पक्ष के लिए एक उदाहरण पा सकते हैं।

+0

और यह किसी भी स्रोत ऐप को कैसे प्राप्त किया जा सकता है? –

+2

क्या आपको एंड्रॉइड से डेटा प्राप्त करने के लिए कोई नमूना पीसी-साइड मिला? – badoualy

+0

@seed वास्तव में मैंने इसका उपयोग नहीं किया है। एक बार इसका उपयोग शुरू करना संभव हो गया, इसलिए मैं इससे परिचित हो गया, हालांकि इसे स्थगित कर दिया गया था और तब से मैंने इसका सामना नहीं किया है। हालांकि मुझे लगता है कि प्रोटोकॉल को जानने के बाद, इसे समझने के लिए यह एक बड़ा सौदा नहीं होना चाहिए। – helleye

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