2014-09-13 6 views
19

मैं मोबाइल एप्लिकेशन (iOS और Android) Wi-Fi पर एक डिवाइस को नियंत्रित करने के विकास कर रहा हूँ सब कुछ के लिए फोन का उपयोग मोबाइल नेटवर्क है कैसे। डिवाइस वायरलेस नेटवर्क (सॉफ्टएप) बनाता है लेकिन इंटरनेट तक पहुंच प्रदान नहीं करता है।एंड्रॉयड: विशिष्ट मेजबान के लिए एक वाईफ़ाई नेटवर्क का उपयोग लेकिन बाकी

iOS पर, मैं डिवाइस से कनेक्ट और उसके आईपी पते (192.168.70.1) से अनुरोध करती हैं, लेकिन अन्य सभी अनुरोधों को वापस मोबाइल नेटवर्क से गिर सकता है। यह वाई-फाई पर डिवाइस से कनेक्ट होने पर फोन को इंटरनेट कनेक्टिविटी बनाए रखने की अनुमति देता है।

एंड्रॉयड पर, अगर मैं डिवाइस वायरलेस नेटवर्क से कनेक्ट, इंटरनेट अनुरोध वापस मोबाइल कनेक्शन के लिए गिर नहीं है, वे सिर्फ असफल।

अपने Android एप्लिकेशन में, मैं ConnectivityManager.requestRouteToHost का उपयोग मोबाइल नेटवर्क का उपयोग करने के लिए अपने एप्लिकेशन से अनुरोध मजबूर करने के लिए कर सकते हैं। हालांकि, अन्य ऐप्स द्वारा किए गए अनुरोध अभी भी डिवाइस वाईफ़ाई नेटवर्क का उपयोग करते हैं और असफल होते हैं।

ConnectivityManager.setNetworkPreference (ConnectivityManager.TYPE_MOBILE)

यह सभी के लिए मोबाइल नेटवर्क का उपयोग करने के लिए फोन का कारण बनता है:

मैं भी ConnectivityManager का उपयोग करने के साथ नेटवर्क प्राथमिकता को बदलने की कोशिश की है सभी अनुप्रयोगों से अनुरोध। वाई-फाई अक्षम है। ऐसा लगता है एंड्रॉयड वाई-फाई के पिछले संस्करणों में अभी भी इस्तेमाल किया जा सकता है कि भले ही वह "पसंदीदा" नेटवर्क नहीं है, लेकिन यह किटकैट में काम करने के लिए प्रतीत नहीं होता। यह संभवतः Android 4.2 में बदलाव से संबंधित है: https://code.google.com/p/android/issues/detail?id=73509 "ConnectivityManager 4.2 आँसू नीचे नेटवर्क NetworkPreference नहीं हैं के बाद से"

वहाँ एक समाधान है कि एक Android ऐप्लिकेशन एक विशिष्ट आईपी पते और के लिए वाई-फाई का उपयोग करने की अनुमति देता है है सब कुछ के लिए मोबाइल नेटवर्क? शायद यह एनडीके के माध्यम से किया जा सकता है?

+0

आप डायन नेटवर्क आप सभी Android संस्करण पर उपयोग करना चाहते हैं निर्दिष्ट करने के लिए एक समाधान मिला? – DjimOnDev

+0

नहीं, ये भी हो सकते हैं लॉलीपॉप के लिए एक समाधान है, लेकिन मैं अभी तक यह जांच करने के लिए समय नहीं था। –

+0

@PaulGreyson, आपने आईओएस के लिए यह कैसे किया? मैं वाईफाई पर डिवाइस के दौरान मोबाइल नेटवर्क पर http अनुरोध करने के लिए एक समान समाधान की तलाश में हूं। – keno

उत्तर

2

एंड्रॉइड आम तौर पर उन नेटवर्कों को आँसू देता है जो नेटवर्क वरीयता नहीं हैं। एक काम के आसपास आप इस्तेमाल कर सकते हैं मोबाइल एप्लिकेशन के माध्यम से एक एपी बना सकते हैं और डिवाइस इसे करने के लिए संपर्क कर सकते हैं है। इस तरह मोबाइल इंटरनेट कनेक्टिविटी बनाए रख सकते हैं और साथ ही उपकरण के साथ संवाद।

कार्यान्वयन विवरण के लिए निम्न लिंक देखें:

https://github.com/opengarden/android-tether

https://code.google.com/p/android-wifi-tether/

+0

सुझाव के लिए धन्यवाद, लेकिन मैं एक समाधान है कि डिवाइस एपी के रूप में कार्य करने की अनुमति देता जरूरत है। –

1

इसी Enable simultaneouly wifi and 3G interface on Android के रूप में पहले पूछे जाने वाले और त्वरित जवाब नहीं था।

लेकिन यह वास्तव में संभव है और SuperDownload जैसे कुछ सॉफ्टवेयर में लागू है (stackexchange देखें)

कि सॉफ्टवेयर जड़ आवश्यकता होती है।

http://geeknizer.com/wp-content/uploads/2012/08/super-download-3g-wifi.jpg

दो चैनल डाउनलोड भी कुछ नए Android फ़ोन में advertized है।(मैं लिंक नहीं मिल रही है, वे नई विपणन अवधि के लिए वाई-फाई + 3 जी एक साथ इस्तेमाल किया इस्तेमाल किया)

वहाँ एक समाधान है कि एक Android ऐप्लिकेशन एक विशिष्ट आईपी पते और बाकी सब कुछ के लिए मोबाइल नेटवर्क के लिए वाई-फाई का उपयोग करने की अनुमति देता है है ? शायद यह एनडीके के माध्यम से किया जा सकता है?

संभवतः क्योंकि केवल स्थानीय पते के लिए वाईफाई की आवश्यकता है, तो आप विशेष वाईफाई ड्राइवर बनाने का तरीका जा सकते हैं, लेकिन फिर से, यह आसान नहीं होगा।

और आगे सॉफ्टवेयर में नीचे जा रहा:

इस सुविधा टीसीपी/आईपी संकुल मार्ग है। यदि आप जानते हैं कि लिनक्स पर कैसे कार्यान्वित किया जाए, तो आप आधा हो गए हैं। अगला यह एंड्रॉइड पर काम करेगा। लेकिन मुझे लगता है कि यह गैर-सिस्टम ऐप के लिए सक्षम नहीं होगा, क्योंकि यह आसान शोषण योग्य सुरक्षा (उदाहरण के लिए विकल्प बैंक सर्वर आईपी)

+0

रूट की आवश्यकता मेरे लिए एक विकल्प नहीं है और न ही एक विशेष वाईफाई ड्राइवर बना रहा है। सीधे टीसीपी/आईपी रूटिंग के साथ काम कर रहा है, प्रश्न वास्तव में है कि मैं कनेक्टिविटीमैनेजर.सेटनेटवर्क प्रेफरेंस का उपयोग करने के बाद वाईफाई सिस्टम को संचालित कर सकता हूं ताकि बाकी डिवाइस को मोबाइल नेटवर्क पर मजबूर किया जा सके। –

9

वास्तव में आप कर सकते हैं, लेकिन केवल लॉलीपॉप (एपीआई 21) के बाद से।

एंड्रॉयड एपीआई 21 प्रलेखन से

:

Android 5.0 provides new multi-networking APIs that let your app dynamically scan for available 
networks with specific capabilities, and establish a connection to them. This functionality is useful 
when your app requires a specialized network, such as an SUPL, MMS, or carrier-billing network, or if 
you want to send data using a particular type of transport protocol. 

तो तुम एक NetworkRequest कि एक निश्चित Transport Type से अधिक अनुरोध भेजता है बनाने के लिए NetworkRequest.Builder वर्ग का उपयोग कर सकते हैं।

निम्नलिखित समारोह का उपयोग करें:

NetworkRequest.Builder addTransportType(int transportType) 

आपके अनुरोधों के लिए परिवहन के प्रकार (WIFI, ETHERNET या CELLULAR उदाहरण के लिए) सेट करने के लिए।

+0

यह सही समाधान की तरह दिखता है। धन्यवाद! –

+0

दूसरे विचार पर, मुझे सत्यापित करने के लिए इसका परीक्षण करने की आवश्यकता होगी।सवाल यह है कि इस नए एपीआई ConnectivityManager.setNetworkPreference (ConnectivityManager.TYPE_MOBILE) के साथ संयोजन में सफलतापूर्वक इस्तेमाल किया जा सकता है कि क्या –

+1

आशा व्यक्त की कि वाईफाई नेटवर्क का अनुरोध के बाद, setNetworkPreference() मोबाइल नेटवर्क से डिवाइस के बाकी स्विच और छोड़ देंगे जगह में वाईफाई नेटवर्क। –

0

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

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

+0

दुर्भाग्य से यह मेरी स्थिति में कार्य नहीं करेगा, क्योंकि मैं डिवाइस के लिए एक लगातार टीसीपी कनेक्शन को बनाए रखने की जरूरत है। –

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