2012-03-26 35 views
9

我需要確定設備正在使用哪種連接類型。 WIFI和3G之間的區別似乎並不(使用NetworkInfo ANE)和Android(使用本機NetworkInfo類)是iOS上的問題,但我有不知道如何快速(3G,4G)之間的進一步區分和慢(EDGE)連接。 有沒有辦法用Adobe Air來做到這一點?Adob​​e Air - 檢測連接是WIFI,3G還是EDGE

回答

13

嘗試此在iOS檢測移動與無線網絡連接。這就需要Adobe原始擴展名「的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

看起來很有希望!非常感謝你!任何想法,如果有類似的Android設備? – AlBirdie 2012-04-19 07:20:55

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

從理論上講,在移動連接是穩定的,你能做到這一點,但考慮到即使3G網絡是什麼,但穩定(考慮去在橋下,或3G可能會降至EDGE的高層建築之間),您必須不斷下載文件以檢查連接速度。不太實際。我的解決方法是完全放棄移動網絡上的推送機制並轉到輪詢。不是很好,但作爲穩定的3G連接對於推送數據來說非常快。 – AlBirdie 2012-03-27 06:13:28

0

尼斯...如果它的工作原理......說不上來,如果有一個解決一個直接的解決方案,但是,當你下載一個文件,你可以檢查的速度,文件被下載,通過與加載的字節一起和總字節數的比率使用getTimer函數