2012-08-31 27 views
5

को गड़बड़ कर दिया ताकि कुछ महीने पहले मैंने कुछ वाईफाई-डायरेक्ट एप्लिकेशन विकसित करना शुरू कर दिया हो। कुछ दिन पहले, मैंने अपने गैलेक्सी नेक्सस को जेली बीन (4.1.x) में अपडेट किया और मेरे अनुप्रयोगों का परीक्षण किया, लेकिन ऐसा लगता है कि कुछ गड़बड़ हो गई है .. मुख्य कार्यक्षमता सेट प्राप्त करने के लिए पहले से ही गधे में दर्द था आईसीएस पर, लेकिन अब यह अब काम नहीं करता है।जेलीबीन पर वाईफाई-डायरेक्ट, डब्ल्यूपीए प्रदायक ने

सभी मैं मिल मेरी logcat में कुछ इस तरह है:

/wpa_supplicant( 392): p2p0: P2P-PROV-DISC-PBC-REQ a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-x name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0 
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0 
I/wpa_supplicant( 392): p2p0: P2P-GO-NEG-REQUEST a2:0b:ba:xx:zz:xy dev_passwd_id=4 
I/wpa_supplicant( 392): p2p0: P2P-FIND-STOPPED 
I/wpa_supplicant( 392): p2p0: P2P-GO-NEG-FAILURE status=7 
W/Netd ( 120): No subsystem found in netlink event 
D/NetlinkEvent( 120): Unexpected netlink message. type=0x11 
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-LOST p2p_dev_addr=a2:0b:ba:xx:zz:xy 
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xx:zz:xy p2p_dev_addr=a2:0b:ba:xx:zz:xy pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0 

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

मेरे निमंत्रण इस तरह बाहर भेज दिया जाता:

public void onPeersAvailable(WifiP2pDeviceList peers) { 
    if (isInvitationSent) 
     return; 
    for (WifiP2pDevice dev : peers.getDeviceList()) { 
     WifiP2pConfig c = new WifiP2pConfig(); 
     c.deviceAddress = dev.deviceAddress; 
     c.wps.setup = WpsInfo.PBC; 

     if (initiator 
       && !isInvitationSent 
       && WiFiSupport.compareMacAddressesInsensitive(MAC_ADDRESS, 
         dev.deviceAddress)) { 
      isInvitationSent = true; 
      sendInvitation(c); 
     } 
    } 
} 

private void sendInvitation(final WifiP2pConfig config) { 
    log("Sending invitation to " + config.deviceAddress); 
    mWifiManager.connect(mChannel, config, new ActionListener() { 
     @Override 
     public void onSuccess() { 
      log("Invitation sent!"); 
     } 

     @Override 
     public void onFailure(int reason) { 
      log("Invitation failed!"); 
      Toast.makeText(getApplicationContext(), "Could not connect to peer, reason:"+reason, Toast.LENGTH_LONG).show(); 
      if (!retryChannel) { 
       log("Retrying to send invitation."); 
       retryChannel = true; 
       sendInvitation(config); 
      } 
     } 
    }); 
} 

मैं वाईफ़ाई पर बहुत कुछ एंड्रॉयड पर प्रत्यक्ष पढ़ा है, और जब तक मैं जेली बीन करने के लिए फोन के अद्यतन यह ठीक काम कर रहा है .. किसी को भी जानता है, क्या गलत हो सकता है? यदि आपको कोड के अधिक नमूने या कोड के किसी भी विशिष्ट भाग की आवश्यकता है, तो बस मुझे बताएं, क्योंकि मुझे नहीं पता कि इसके लिए क्या विश्वसनीय हो सकता है।

आपकी मदद के लिए धन्यवाद।

संपादित करें:

बदल दिया WifiP2pConfig.wps.setup विधि के लिए "प्रदर्शन", जिसमें # 1 डिवाइस परिणामस्वरूप एक इनपुट फ़ील्ड के साथ एक संवाद को पॉपिंग एक पिन कोड, उपकरण # 2 प्रदर्शित - सही प्रवेश करने के बाद

08-31 15:13:28.241: I/wpa_supplicant(384): p2p0: P2P-GO-NEG-SUCCESS 
08-31 15:13:28.241: I/wpa_supplicant(384): rfkill: Cannot open RFKILL control device 
08-31 15:13:29.850: W/wpa_supplicant(384): p2p-p2p0-3: Could not connect to kernel driver 
08-31 15:13:30.264: E/wpa_supplicant(384): Using interface p2p-p2p0-3 with hwaddr a2:0b:ba:x:y:z and ssid 'DIRECT-ps-Android_e9f0' 
08-31 15:13:30.491: I/wpa_supplicant(384): p2p-p2p0-3: CTRL-EVENT-CONNECTED - Connection to a2:0b:ba:x:y:z completed (auth) [id=0 id_str=] 
08-31 15:13:43.491: I/wpa_supplicant(384): p2p0: P2P-GROUP-FORMATION-FAILURE 
08-31 15:13:43.491: I/wpa_supplicant(384): p2p0: P2P-GROUP-REMOVED p2p-p2p0-3 GO 
08-31 15:13:43.491: W/wpa_supplicant(384): p2p-p2p0-3: Could not connect to kernel driver 
08-31 15:13:44.061: E/wpa_supplicant(384): Failed to remove interface (ifidx=15) 
08-31 15:13:44.178: W/Netd(120): No subsystem found in netlink event 
08-31 15:13:44.178: D/NetlinkEvent(120): Unexpected netlink message. type=0x11 
08-31 15:13:44.248: W/Netd(120): No subsystem found in netlink event 
08-31 15:13:44.248: D/NetlinkEvent(120): Unexpected netlink message. type=0x11 
08-31 15:13:44.280: I/wpa_supplicant(384): p2p0: P2P-DEVICE-LOST p2p_dev_addr=a2:0b:ba:x:y:z 
08-31 15:13:46.155: I/wpa_supplicant(384): p2p0: P2P-DEVICE-FOUND a2:0b:ba:x:y:z p2p_dev_addr=a2:0b:ba:x:y:z pri_dev_type=10-0050F204-5 name='Android_755f' config_methods=0x188 dev_capab=0x27 group_capab=0x0 

दिलचस्प होगा:: 08-31 15: 13: पिन यह क्या logcat ने मुझे बताया है 43.491: डब्ल्यू/wpa_supplicant (384): पी 2 पी-p2p0-3: ड्राइवर कर्नेल

कनेक्ट नहीं कर सका

मुझे लगता है। ऐसा लगता है कि एंड्रॉइड के अपने वाईफाई-डायरेक्ट-फ्रेमवर्क में एक बग की तरह है?

+1

ऐसा लगता है कि समूह निर्माण केवल तभी विफल रहता है जब आप किसी अन्य वाईफ़ाई नेटवर्क में हों, जैसे कि आपके घर में वाईफ़ाई या ऐसा .. इसलिए एंड्रॉइड इसे अक्षम करने में विफल रहता है - इस प्रकार वाईफ़ाई डायरेक्ट के माध्यम से कनेक्ट करने में विफल रहता है। – damian

+1

क्या आपको इसके लिए कोई समाधान मिला? – Zach

+0

मैंने दो एचटीसी वन बनाम (जो रैम प्रतिबंधों के कारण जेली बीन को अपडेट नहीं कर सका) और एचटीसी वन एक्स + (जिसमें 4.1 है) पर विकसित किया गया था। मेरे अनुभव में, वन वी ने ज्यादातर समय काम किया जहां एक एक्स + अधिक बार विफल हो जाएगा। – Chucky

उत्तर

0

इस सवाल चिह्नित करने के लिए जवाब के रूप में, मैं सिर्फ इस समस्या का मेरे "समाधान" कॉपी कर देंगे:

समूह गठन की तरह लगता है केवल विफल रहता है यदि आप किसी अन्य वाईफाई नेटवर्क में हैं, अपने घर वाईफ़ाई या इस तरह की तरह .. तो एंड्रॉयड उसे निष्क्रिय करने में विफल रहता है - इस प्रकार वाईफाई डायरेक्ट के माध्यम से कनेक्ट करने के लिए विफल रहता है।

मुझे यह सुनिश्चित करना था कि डिवाइस वाईफाई नेटवर्क में नहीं थे।

-1

एंड्रॉयड एपीआई स्तर 16 में अद्यतन Jelly Bean के साथ Wi-Fi प्रत्यक्ष एपीआई आप पहले से ही जानते हैं कोर API प्रथम एपीआई स्तर में आईसीएस 14. यहाँ आप जोड़ा Wi-Fi प्रत्यक्ष के बारे में कक्षाएं पा सकते हैं के साथ जोड़ा गया है,

WifiP2pDnsSdServiceInfo 
WifiP2pDnsSdServiceRequest 
WifiP2pServiceInfo 
WifiP2pServiceRequest 
WifiP2pUpnpServiceInfo 
WifiP2pUpnpServiceRequest 

यहां कुछ कक्षाएं WifiP2pManager कक्षा पैरामीटर के रूप में उपयोग करती हैं। बेहतर होगा कि तुम अपने आप को उन पर एक नज़र डालें:

http://developer.android.com/reference/android/net/wifi/p2p/nsd/package-summary.html

IMO आपके आवेदन, भ्रष्ट हो सकता है चालाकी से या क्या-तो-कभी एपीआई 16. में इस अद्यतन के बाद मुझे लगता है कि आप भेजने के लिए अपनी खुद की विधि बनाया है अन्य सहकर्मी के लिए निमंत्रण, बिल्कुल यह वास्तव में जरूरी नहीं है। पीईआर को वाई-फाई डायरेक्ट में स्वचालित रूप से निमंत्रण मिलता है। इस प्रकार, आप इसे निमंत्रण प्रक्रिया को स्वयं ही संभाल सकते हैं। एक बार फिर, मैं जब तक आप इसे पहले किया था आप here पर एक नज़र डालें सुझाव देते हैं।

+0

नहीं, मेरा आवेदन अभी भी एक आकर्षण की तरह काम करता है .. लेकिन नए जेबी एपीआई में यह बेहतर हो रहा है, कुछ त्रुटियां अब और दिखाई नहीं दे रही हैं। विशेष रूप से उन ड्राइवर-संबंधित जो "पकड़ने" के लिए वास्तव में कठिन थे। – damian