में एकाधिक नेटवर्क इंटरफेस का उपयोग करें मैंने एक ऐप लिखा है जो वाईफाई पर सोनी क्यूएक्स स्मार्टफोन अटैच करने योग्य कैमरा ट्रिगर कर रहा है। हालांकि मुझे वास्तविक समय में फोन को अन्य स्थानीय नेटवर्क पर फोन से स्थानांतरित करने की आवश्यकता है। चूंकि वाईफ़ाई कार्ड का उपयोग क्यूएक्स कनेक्शन के लिए किया जा रहा है, इसलिए मुझे फोन से छवियों को स्थानांतरित करने के लिए यूएसबी पर ईथरनेट का उपयोग करने में सक्षम होना चाहिए। एचटीपी अनुरोध कैमरे को ट्रिगर करने और फोन से छवियों को भेजने के लिए इस्तेमाल किया जाएगा।ऐप
क्या एक नेटवर्क इंटरफ़ेस सेटअप के साथ एक नेटवर्क पर एक एंड्रॉइड ऐप में एक नेटवर्क इंटरफ़ेस का उपयोग करने के लिए कुछ और अन्य नेटवर्क इंटरफ़ेस का उपयोग करने के लिए यह निर्दिष्ट करना संभव है? क्या यह रूटिंग टेबल के माध्यम से किया जाना चाहिए, जावा नहीं?
मैं जिस फोन का उपयोग कर रहा हूं वह एक रूट नेक्सस 6 पी है।
अद्यतन:
वर्तमान में, मैं एक ईथरनेट डिवाइस (Nexus 6P) के साथ काम एडाप्टर प्राप्त करने में सक्षम था। डिवाइस ईथरनेट पर स्थानीय नेटवर्क से जुड़ा हुआ है। जब वाई-फाई इंटरफ़ेस बंद होता है, तो मैं स्थानीय नेटवर्क पर सभी डिवाइसों को पिंग कर सकता हूं, डिवाइस ईथरनेट से कनेक्ट है। हालांकि, मैं उस नेटवर्क पर किसी भी डिवाइस के वेब सर्वर (DNS का उपयोग नहीं कर रहा) तक पहुंचने में असमर्थ हूं (जो मुझे पता है कि वे चल रहे हैं), यानी ब्राउज़र ऐप के माध्यम से एचटीपी। नेक्सस 6 पी एक यूबिनेट स्टेशन के माध्यम से ईथरनेट पर नेटवर्क से जुड़ा हुआ है। यह एक रूटिंग मुद्दा प्रतीत होता है।
मैं टेदर (यूएसबी इंटरफेस) कर सकता हूं और एक ऐप में वाई-फाई का उपयोग कर सकता हूं, जिससे मुझे विश्वास होता है कि ईथरनेट और वाई-फाई का उपयोग करना संभव है।
Update2:
अधिक परीक्षण के बाद, यह हो सकता है कि यह एक अनुमतियाँ मुद्दा है लगता है। चूंकि जब मैं नेटवर्क को पिंग करता हूं तो डिवाइस टर्मिनल में पहले su
चलाने के बिना ईथरनेट से कनेक्ट होता है, नेटवर्क मौजूद नहीं होता है। हालांकि, जब मैं su
चलाता हूं तो पिंग, मैं नेटवर्क को पिंग कर सकता हूं। इस प्रकार ऐसा लगता है कि मेरे ऐप को ईथरनेट तक पहुंचने से पहले सुपरसुर अनुमति प्राप्त करने की आवश्यकता है। मैंने इसे सुपरसुर एक्सेस दिया है, लेकिन कुछ भी नहीं बदला है। मैंने पढ़ा है कि su
चल रहा है post में टिप्पणियों में से एक से पर्याप्त नहीं है। ऐसा इसलिए है क्योंकि su
बस एक रूट खोल खोलता है जो मर जाता है। यह भी बताता है कि मैं ब्राउज़र नेटवर्क के माध्यम से इस नेटवर्क पर किसी भी वेब सर्वर का उपयोग क्यों नहीं कर सका। क्या HTTP ऐप बनाने के दौरान ईथरनेट इंटरफ़ेस तक पहुंचने के लिए संभव है, जैसे HttpURLConnection
रूट पहुंच दें, अगर यह कोई समझ में आता है (su
काम नहीं करता है)? ऐसा लगता है कि HttpURLConnection यूएसबी टेदरिंग इंटरफेस पर कॉल कर सकता है (नेक्सस 6 पी इसे rndis0
कहते हैं) ठीक है।
अद्यतन 3:
मैं ऑनलाइन here पाया, कि मैं अपने अनुप्रयोग एक सिस्टम एप्लिकेशन बना सकते हैं (सोचा इस एप्लिकेशन eth0 को पहुंच देने सकता है)। मैंने बस अपना ऐप /system/app
पर ले जाया और फिर रीबूट किया। हालांकि, ऐसा लगता है कि ऐप अब और विशेषाधिकार नहीं दे रहा है (इस प्रकार समस्या को हल नहीं कर रहा है), या ऐप सिस्टम को सिर्फ /system/app
पर कॉपी करने के लिए कुछ और आवश्यक है।
अद्यतन 4:
तो मैं जड़ अनुमतियों के बिना ईथरनेट हर एप्लिकेशन पर काम कर प्राप्त करने में सक्षम था! ऐसा लगता है कि यह केवल डीएचसीपी पर काम करता है और मुझे स्थिर कनेक्शन पसंद नहीं है, जिसका मैं उपयोग कर रहा था। यह वाई-फाई सक्षम के साथ काम करता है, हालांकि, जब ईथरनेट सक्षम होता है तो मैं वाई-फाई नेटवर्क पर किसी भी डिवाइस से संपर्क नहीं कर सकता। क्या इसके चारों ओर एक रास्ता है?क्या इसे दो डिफ़ॉल्ट गेटवे सेट करने के साथ करना है?
तो मैंने अभी इस विधि की कोशिश की। 'connectivityManager.getAllNetworks() 'केवल वाई-फाई इंटरफ़ेस (लंबाई = 1) लौटाता है, जब मेरे पास ईथरनेट और वाई-फाई है, और यह केवल ईथरनेट चालू होने पर कुछ भी नहीं लौटाता है (लंबाई = 0)। एक इंटरफ़ेस के रूप में 'ifconfig' रिटर्न' eth0' चलाने के बाद डिवाइस में स्पष्ट रूप से इंटरफ़ेस है, और जैसा कि मैंने ऊपर बताया है, मैं डिवाइस को पिंग कर सकता हूं। मैंने अपने ऐप को सिस्टम एप में ले जाने की भी कोशिश की। हालांकि, मुझे लगता है कि ऐप सिस्टम को '/ system/app' पर ले जाने के बाद से मुझे एक कदम याद आया, ऐसा लगता है कि बिल्कुल कुछ भी नहीं करना है। – dylan7
रूट पर स्विच करें, एपीके के उपयोगकर्ता और समूह के मालिक को रूट में संशोधित करें। फिर एपीके की अनुमति 644 पर बदलें। 'su',' chown root.root/system/app/your.apk', 'chmod 644/system/app/your.apk'। फिर आपके कोड में eth0 डिवाइस तक पहुंचने की अनुमति हो सकती है। – alijandro
यदि आपको लगता है कि सिस्टम ऐप बनाने में कोई समस्या है, तो लॉगकैट की जांच करें। जब ऐप खोल कमांड चलाने की कोशिश करता है तो आपको अनुमति त्रुटि मिल जाएगी। – ekilic