Adobe Air - определить, подключен ли WIFI, 3G или EDGE - PullRequest
9 голосов
/ 26 марта 2012

Мне нужно определить, какой тип соединения использует устройство. Различение между WIFI и 3G, по-видимому, не является проблемой для iOS (с использованием NetworkInfo ANE ) и Android (с использованием собственного класса NetworkInfo), но я понятия не имею, как еще больше отличить быстрый (3G, 4G) и медленное (EDGE) соединение. Есть ли способ сделать это с Adobe Air?

Ответы [ 3 ]

13 голосов
/ 18 апреля 2012

Попробуйте это для обнаружения мобильного и Wi-Fi на 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 );
0 голосов
/ 26 апреля 2012

Хорошо ... если это работает ... не знаю, есть ли решение для прямого решения, но когда вы загружаете файл, вы можете проверить скорость загрузки файла, используя функцию getTimer в сочетании с загруженными байтами и соотношение общих байтов

0 голосов
/ 26 марта 2012

Я не знаю, есть ли решение прямого решения, но когда вы загружаете файл, вы можете проверить скорость загрузки файла, используя функцию 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;    
}
...