Comunidad de diseño web y desarrollo en internet online

Detectar la conexión 3G o Wifi en aplicaciones AIR para Android

Es probable que en una aplicación para teléfono móvil nos interese saber si estamos conectando a la red a través de la conexión 3G o a través de WIFI, para ejecutar diferentes acciones, permitir descargas de contenido etc.. O simplemente para saber si disponemos de conexión a internet o no.

Con la clase NetworkInfo de AIR 2 nos permite acceder a todos los accesos a la red que tenemos disponibles en el dispositivo. Cada uno de ellos estará incluido en un objeto NetworkInterface con la propiedad active en valor true o false según sea el acceso en uso.

La siguiente clase que muestro es un ejemplo de uso:

Supongamos que tenemos un MovieClip con tres fotogramas. En el primero tendremos un icono para el estado "sin conexión", en el segundo un icono para 3G, y el tercero un icono para Wifi.

Ahora nos interesará que el MovieClip nos muestre el fotograma que indica que tipo de conexión estamos utilizando en nuestro dispositivo móvil.

Esta sería la clase para asignar al MovieClip:

Código :

package com.cristalab.controls.mobile
{
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.net.NetworkInfo;
   import flash.net.NetworkInterface;
   //------------------------------------------------------
   public class NetworkInterfaceUI extends MovieClip
   {
      private var ni:NetworkInfo = NetworkInfo.networkInfo;
      public var active:String = "none";
      //------------------------------------------------------
      public function NetworkInterfaceUI()
      {   
         ni.addEventListener(Event.NETWORK_CHANGE,checkNetworkInterface);
         checkNetworkInterface();   
      }
      private function checkNetworkInterface(event:Event = null):void
      {
         var interfaceVector:Vector.<NetworkInterface > = ni.findInterfaces();
         for each (var item:NetworkInterface in interfaceVector)
         {
            active = (item.active == true) ? item.name : active;
         }
         switch (active)
         {
            case "mobile" :
               this.gotoAndStop(2);
               break;
            case "WIFI" :
               this.gotoAndStop(3);
               break;
            default :
               this.gotoAndStop(1);
               break;
         }
      }
   }
}


Como podemos ver estamos guardando todas las NetworkInterfaces disponibles en un vector y realizamos una comprobación de cual es la que está activa.

Tambien detectamos los cambios en la red para actualizar nuestro icono.

Listo!

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate