2012-03-26 31 views
9

है, मुझे यह निर्धारित करने की आवश्यकता है कि डिवाइस किस कनेक्शन प्रकार का उपयोग कर रहा है। वाईफ़ाई और 3 जी के बीच अंतर आईओएस (NetworkInfo ANE का उपयोग करके) और एंड्रॉइड (मूल नेटवर्कइन्फो क्लास का उपयोग करके) में कोई समस्या नहीं प्रतीत होता है, लेकिन मुझे कोई संकेत नहीं है कि एक तेज (3 जी, 4 जी) के बीच और अंतर कैसे करें। धीमा (EDGE) कनेक्शन। क्या एडोब एयर के साथ ऐसा करने का कोई तरीका है?एडोब एयर - पता लगाएं कि कनेक्शन वाईफ़ाई, 3 जी, या EDGE

उत्तर

13

iOS पर बनाम वाईफ़ाई मोबाइल का पता लगाने के लिए यह प्रयास करें। यह एडोब देशी एक्सटेंशन "NetworkInfo" की आवश्यकता है

import com.adobe.nativeExtensions.Networkinfo.InterfaceAddress; 
import com.adobe.nativeExtensions.Networkinfo.NetworkInfo; 
import com.adobe.nativeExtensions.Networkinfo.NetworkInterface; 

var vNetworkInterfaces:Object; 
if (flash.net.NetworkInfo.isSupported) 
{ 
    vNetworkInterfaces = getDefinitionByName('flash.net.NetworkInfo')['networkInfo']['findInterfaces'](); 
    mytrace("fall 1"); 
} 
else 
{ 
    vNetworkInterfaces = getDefinitionByName('com.adobe.nativeExtensions.Networkinfo.NetworkInfo')['networkInfo']['findInterfaces'](); 
    mytrace("fall 2"); 
} 

var hasWifi: Boolean = false; 
var hasMobile: Boolean = false; 

for each (var networkInterface:Object in vNetworkInterfaces) 
{ 
    if (networkInterface.active && (networkInterface.name == "en0" || networkInterface.name == "en1")) hasWifi = true; 
    if (networkInterface.active && (networkInterface.name == "pdp_ip0" || networkInterface.name == "pdp_ip1" || networkInterface.name == "pdp_ip2")) hasMobile = true; 

    mytrace("active: " + networkInterface.active); 
    mytrace("displayName: " + networkInterface.displayName); 
    mytrace("name: " + networkInterface.name); 
    mytrace("hwAddress: " + networkInterface.hardwareAddress); 
    mytrace("--------------------"); 
} 

mytrace("has Mobile Internet: " + hasMobile); 
mytrace("has Wifi Internet: " + hasWifi); 
+2

यह आशाजनक लग रहा है! उसके लिए बहुत अधिक धन्यवाद! एंड्रॉइड उपकरणों के लिए कुछ समान है तो कोई विचार? – AlBirdie

0

मुझे पता नहीं है कि कोई समाधान सीधे समाधान है, लेकिन जब आप एक फ़ाइल डाउनलोड कर रहे हैं तो आप लोड बाइट्स के साथ संयोजन और कुल बाइट्स के अनुपात के साथ getTimer फ़ंक्शन का उपयोग करके उस फ़ाइल को डाउनलोड कर सकते हैं जिस पर फ़ाइल डाउनलोड की जाती है।

उदाहरण

function init() 
{ 
    startTime = getTimer(); 
    loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoaderInit); 
    loader.load("some-site.com/myasset.png"); 
} 

function onLoaderInit(e:ProgressEvent) 
{ 
    $timePassed = (getTimer() - startTime) * 0.001; //it's in millisecounds convert to secounds 
    $newBytes = loader.contentLoaderInfo.bytesLoaded - oldBytes; 
    var $rate:Number = $newBytes * $timePassed; //returns a value of bytes per sec. 
    startTime = getTimer(); 
    oldBytes = loader.contentLoaderInfo.bytesLoaded;  
} 
+0

सिद्धांत रूप में, जहां मोबाइल कनेक्शन स्थिर है, आप ऐसा कर सकते हैं, लेकिन यह देखते हुए कि 3 जी नेटवर्क भी स्थिर हैं (जाने पर विचार करें एक पुल के नीचे, या लंबी इमारतों के बीच जहां 3 जी संभवतः EDGE तक गिर सकता है) आपको अपनी कनेक्शन की गति की जांच करने के लिए फ़ाइल को लगातार डाउनलोड करना होगा। वास्तव में व्यावहारिक नहीं है। मेरा कामकाज मोबाइल नेटवर्क पर पूरी तरह से अपने पुश तंत्र को छोड़ना होगा और मतदान में जाना होगा। बहुत अच्छा नहीं है, हालांकि एक स्थिर 3 जी कनेक्शन डेटा धक्का देने के लिए बहुत तेज़ है। – AlBirdie

0

अच्छा ... अगर यह काम करता है ... पता वहाँ एक समाधान एक सीधा समाधान है, लेकिन जब आप एक फ़ाइल डाउनलोड कर रहे हैं आप गति की जांच कर सकता है, जिस पर फ़ाइल को डाउनलोड बाइट्स के साथ मिलकर GetTimer फ़ंक्शन का उपयोग करके और कुल बाइट्स का अनुपात