Detalles publicacion - CGastrell/phonegap GitHub Wiki

Ademas del incompleto paso de limpieza nos quedan algunos items por ver:

  • que pasa cuando la aplicacion va a background
  • donde y como ubicamos los iconos para la aplicacion
  • como hacemos para que funcionen los splash screen
  • donde y como ubicamos los splash screens para la aplicacion
  • la verdad de la milanesa del archivo config.xml

Aplicacion en background

Revisando la documentacion de Cordova podemos ver que dispara muchos eventos, entre los cuales se encuentra pause.

Este evento se dispara cuando el dispositivo apaga la pantalla o se abre otra aplicacion. El evento se dispara, como se ve en la documentacion, en el document.

Entonces, si queremos evitar que la aplicacion siga grabando/reproduciendo cuando pasa a background podemos agregar un handler para este evento. Donde? Cuando terminamos de inicializar fileApi. Por que ahi? Porque es el momento en que ya estan todos los componentes inicializados.

En el archivo index.js inicializamos fileApi y luego ejecutamos un callback:

  fileApi.initialize(function(err, apiRef){
    if(err) {
      console.log('file api error');
      console.log(err);
      return;
    }
    guias.initialize();
    entrevistas.initialize();
    recordApi.initialize();

    // este seria un buen lugar
  });

Podemos ubicar nuestro handler justo antes de cerrar el callback:

  fileApi.initialize(function(err, apiRef){
    if(err) {
      console.log('file api error');
      console.log(err);
      return;
    }
    guias.initialize();
    entrevistas.initialize();
    recordApi.initialize();

    // este seria un buen lugar
    document.addEventListener('pause', function(){
      recordApi.stop();
      revisionApi.stop();
    });
  });

Llamamos a recordApi.stop() y revisionApi.stop() cuando la aplicacion entre en background. Revisar que las funciones de stop() en ambos objetos contemplen la variable recordApi.isRecording y revisionApi.isPlaying para no hacer una llamada de stop() cuando nuestro archivo de audio no esta grabando/reproduciendo.