Android

ANDROID

Alarma de cuenta atrás

 

En esta practicas realizamos  una alarma de cuenta atrás.
Para esta alarma empleamos la clase de CountDownTimer .
Ver http://developer.android.com/intl/es/reference/android/os/CountDownTimer.html .

Lo primero es dar nombre a nuestra aplicación.


Seleccionamos un icono bajado de internet.


Elegimos una Activity vacía, sin menú.


Colocamos todos los elementos , botones, textos, etc...
Aún no tengo pillado el truco para colocar los elementos en el lugar que yo quiero, por lo que tardo tiempo en colocarlos a mi gusto.
Para ampliar la imagen en el navegador, dar el botón derecho, y en menú dar ver imagen.


Ejecutando el programa en un dispositivo físico.
La alarma es como máximo de 60 minutos.



Para este programa empleamos la clase de CountDownTimer .

Creamos el tipo ContadorAbajo
private CountDownTimer ContadorAbajo;
Empezamos la cuenta atrás pulsando el botón START . Colocamos el tiempo a descontar (timer) en milisegundos, y descontamos 1 milisegundo cada vez.  Luego lo activamos con ContadorAbajo.start();
ContadorAbajo = new MyCountDownTimer(timer, 1);
ContadorAbajo.start();
Si queremos parar la cuenta atrás pulsamos el botón STOP.
ContadorAbajo.start();
Cada milisegundo se llama a la clase CountDownTimer
//Cuenta atras
    public class MyCountDownTimer extends CountDownTimer
     {
        public MyCountDownTimer(long startTime, long interval)
                {
                       super(startTime, interval);
                }         
              @Override
        public void onFinish() {
                  Mtext1.setText("Cuenta terminada!");
                  toneG.startTone(ToneGenerator.TONE_DTMF_S, 1000);
              }
              @Override
        public void onTick(long millisUntilFinished)
              {
                 long i;
                 long min,seg;
                  Mtext1.setText( " " + millisUntilFinished/100 );
                  i=millisUntilFinished ;
                  i/=1000;
                  min=i/60;
                  seg= i%60;
                  Mcuenta.setText(min + " min. "+ seg +" seg.");

              }
     }
Cuando termina la cuenta y el contador está a cero se produce un sonido de 1000mS creado al inicio con:
toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100);
toneG.startTone(ToneGenerator.TONE_DTMF_S, 1000);


PROGRAMA


Recordar:

Debemos hacer dos ajustes:
El primero en la pantalla de activity_main cambiar para que utilice la API 15 Android 4.0.3  .
Por defecto viene Android 4.4W,  este es para sistemas wearable (relojes,...). Estos modelos no permiten EditText por lo que nos dará error.


Segundo - Si giramos el dispositivo quedan ocultos algunos botones, quedando sin funcionalidad el programa.
Para arregla esto debemos modificar el fichero "AndroidManifest.xml" y añadir:
android:screenOrientation="portrait"
en la línea:
<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />


Saludos
Juan Galaz


Bibliografía:

http://developer.android.com/intl/es/reference/android/os/CountDownTimer.html
http://developer.android.com/intl/es/reference/android/media/ToneGenerator.html
http://androidbite.blogspot.com.es/2012/11/android-count-down-timer-example.html