viernes, 27 de mayo de 2011

Monitorear si hay servicio de Internet con AIR

Una de las enormes ventajas de AIR es que podemos determinar si hay conexión en Internet en nuestra aplicación, con lo cual podemos sincronizar datos y muchas cosas más. Las clases necesarias para esta tarea son:

import air.net.URLMonitor;
import flash.net.URLRequest;
import flash.events.StatusEvent;


var q:URLRequest=new URLRequest("http://www.google.com");
q.method="HEAD";
var monitor:URLMonitor=new URLMonitor(q);
monitor.addEventListener( StatusEvent.STATUS, onStatusEvent);
monitor.pollInterval=1000;
monitor.start();

function onStatusEvent(e:StatusEvent):void {
    //Recibimos el status del monitoreo
    var monitor:URLMonitor=e.target as URLMonitor;
    //Preguntamos si hay servicio
    if (monitor.available) {
        conexion_txt.text="Con conexión";
    } else {
        conexion_txt.text="Sin conexión";
    }
}

Necesitamos una caja de texto con nombre de instancia conexion_txt.

MUCHO OJO:

Según el manual:

Para utilizar el paquete air.net en Adobe ® Flash ® CS4 Professional:
  1. Seleccione el comando Archivo > Configuración de publicación.
  2. En el panel Flash, haga clic en el botón Configuración de Seleccionar ruta de biblioteca de ActionScript 3.0.
  3. Haga clic en el botón Navegar hasta el archivo SWC (Ruta de bibloteca en CS5). En la carpeta de instalación de Adobe Flash CS4, navegue hasta Adobe Flash CS4/AIK1.1/frameworks/libs/air/ y seleccione el archivo servicemoniter.swc.
  4. En CS5 sería C:\Archivos de programa\Adobe\Adobe Flash CS5\AIK2.0\frameworks\libs\air\servicemonitor.swc
  5. Haga clic en el botón Aceptar.
  6. Añada la siguiente sentencia import al código ActionScript 3.0: import air.net.*

Como siempre, el código se ve más bonito en una clase: 

 package  com.misitio.miproyecto{
    import air.net.URLMonitor;
    import flash.net.URLRequest;
    import flash.events.StatusEvent;
  
    public class DetectarInternet {
        private var _bandera:Boolean;

        public function DetectarInternet() {
            var q:URLRequest=new URLRequest("http://www.google.com");
            q.method="HEAD";
            var monitor:URLMonitor=new URLMonitor(q);
            monitor.addEventListener( StatusEvent.STATUS, onStatusEvent);
            monitor.pollInterval=1000;
            monitor.start();  
            _bandera = false;
        }
      
        function onStatusEvent(e:StatusEvent):void {
            //Recibimos el status del monitoreo
            var monitor:URLMonitor=e.target as URLMonitor;
            //Preguntamos si hay servicio
            _bandera = monitor.available;
        }
        public function get estado ():Boolean{
            return _bandera;
        }
    }
}

 

    1 comentario:

    1. hola me sale este erro me pueden ayudar
      ReferenceError: Error #1069: No se encontró la propiedad followRedirects en flash.net.URLRequest y no hay ningún valor predeterminado.
      at air.net::URLMonitor()
      at conection_fla::MainTimeline/frame1()

      ResponderEliminar