2013-06-11 9 views
5

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

धन्यवाद!

public class Reflector { 
static Method turnOnICS; 
static Method turnOnJB; 
static Method turnOffICS; 

public static void turnOnP2P(WifiP2pManager m, Channel c) { 
    //Log.v("button", "turnOnP2P"); 
    if (android.os.Build.VERSION.SDK_INT == 14 || android.os.Build.VERSION.SDK_INT == 15) { 
     //Log.v("version", "Version is ICS"); 
     try { 
      turnOnICS = WifiP2pManager.class.getDeclaredMethod("enableP2p",WifiP2pManager.Channel.class); 
      turnOnICS.setAccessible(true); 
      turnOnICS.invoke(m, c); 
     } catch (NoSuchMethodException e) { 
      Log.v("ics_error", "ICS enableP2p() not found"); 
     } catch (Exception e) { 
      Log.v("ics_error", "turnOnICS invocation failure"); 
     } 
    } else if (android.os.Build.VERSION.SDK_INT == 16 || android.os.Build.VERSION.SDK_INT == 17) { 
     //Log.v("version", "Version is JB"); 
     try { 
      turnOnJB = NsdManager.class.getDeclaredMethod("setEnabled", boolean.class); 
      turnOnJB.setAccessible(true); 
      turnOnJB.invoke(NsdManager.class, true); 
      //must feed it an nsdmanager, but none exists in wifidirectactivity 
      Log.v("nsd", "problem"); 
     } catch (NoSuchMethodException e) { 
      Log.v("jb_error", "JB setEnabled() not found"); 
     } catch (Exception e) { 
      Log.v("jb_error", "turnOnJB invocation failure"); 
      e.printStackTrace(); 
     } 
    } 
} 

public static void turnOffP2P(WifiP2pManager m, Channel c) { 
    //Log.v("button", "turnOffP2P"); 
    if (android.os.Build.VERSION.SDK_INT == 14 || android.os.Build.VERSION.SDK_INT == 15) { 
     //Log.v("version", "Version is ICS"); 
     try { 
      turnOffICS = WifiP2pManager.class.getDeclaredMethod("disableP2p", WifiP2pManager.Channel.class); 
      turnOffICS.setAccessible(true); 
      turnOffICS.invoke(m, c); 
     } catch (NoSuchMethodException e) { 
      Log.v("ics_error", "ICS disableP2P() not found"); 
     } catch (Exception e) { 
      Log.v("ics_error", "turnOffICS invocation failure"); 
     } 
    } 
} 

public static void printAll(){ 
    Method[] list = WifiP2pManager.class.getDeclaredMethods(); 
    for(Method m : list){ 
     Log.v("tag",m.getName()); 
    } 
} 

}

+0

क्या आपको वाईफ़ाई डायरेक्ट को रखने का कोई तरीका मिला है? मुझे एक ही समस्या का सामना करना पड़ता है कि एक बार वाईफाई सीधे निकलता है, मुझे इसे चालू करने के लिए मैन्युअल रूप से सेटिंग्स पर जाना होगा। – windchime

+0

नहीं, हमने इसे कभी नहीं समझा। उम्मीद है कि एंड्रॉइड देवताओं ने अब तक इस कार्यक्षमता को और अधिक सुलभ बना दिया है। – cbartondock

उत्तर

0

इस सवाल पूछने के लिए धन्यवाद है एक सवाल हम साथ हम जोड़ने के रूप में वाईफाई डायरेक्ट हमारे अनुप्रयोग के लिए सुविधाओं कुश्ती किया गया है किया गया है ... यह: यहाँ हमारे वर्तमान कोड है।

विभिन्न निर्माताओं के कई फोनों पर सेटिंग्स को देखने के बाद, और this और this (जो स्वीकार्य रूप से विवरण में बहुत सटीक नहीं हैं, लेकिन यह सर्वोत्तम है जो हम पा सकते हैं) पढ़ने के बाद, हम निष्कर्ष पर आ गए हैं कि वाईफाई डायरेक्ट प्रति से पर अलग-अलग चालू करने की आवश्यकता नहीं है: वाईफाई सक्षम होने पर यह सक्षम है। तो, सबसे अधिक, आपके ऐप को turn on WiFi की आवश्यकता होगी।

हालांकि, वाईफाई डायरेक्ट स्कैनिंग (और स्कैन किए जाने की दृश्यता) आप वाईफाई डायरेक्ट सेटिंग्स पेज पर जाकर शुरू करते हैं।

कि पेज स्कैनिंग बंद कर सकता है (हालांकि 3 तीय-पक्ष appscananddo अपने स्वयं के स्कैनिंग शुरू करें) छोड़कर, लेकिन वाईफाई डायरेक्ट अक्षम नहीं करना चाहिए। इससे कोई मतलब नहीं होगा ... जैसा कि आप कहते हैं, इससे ऐप्स को वाईफाई डायरेक्ट का उपयोग करना मुश्किल हो जाएगा, लेकिन apps इसका सफलतापूर्वक उपयोग करें। आपने क्या देखा है कि ऐसा लगता है कि जब आप उस सेटिंग पेज को छोड़ देते हैं तो वाईफाई डायरेक्ट अक्षम किया जा रहा था?

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