English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Detalles del método de configuración del reloj de alarma en Android

Este artículo describe el método de configuración del reloj de alarma en programación Android. Compartimos con todos para referencia, como se muestra a continuación:

El reloj de alarma es muy común en la vida diaria, en Android se puede implementar el reloj de alarma a través de AlarmManager, la clase AlarmManager se utiliza específicamente para configurar que se complete una tarea específica en un tiempo específico. AlarmManager ejecutará estos eventos a través del método onReceive(), incluso si el sistema está en estado de espera, no afectará su ejecución. Puede obtener este servicio a través del método Context.getSystemService(). Hay muchos métodos en AlarmManager, como se muestra a continuación:

Método

Descripción

Cancelar

Cancelar el servicio AlarmManager

Set

Configurar el servicio AlarmManager

setInexactRepeating

Configurar el período inexacto

SetRepeating

Configurar el período de repetición

setTimeZone

Configurar la zona horaria


Para implementar el reloj de alarma, primero necesita crear una clase que herede de BroadcastReceiver, implementar el método onReceive para recibir este servicio Alarm, luego conectarlo a través de Intent y PendingIntent para llamar al componente de alarma. Configure la hora de la alarma utilizando TimerPickerDialog, y cuando llega la hora especificada, el método onReceiver recibe el servicio Alarm y muestra la interfaz.

Primero, implemente la clase AlarmReceiver que recibe el servicio Alarm, utilice Toast para notificar al usuario

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context arg0, Intent arg1) {
    // TODO Auto-método de plantilla generado
    Toast.makeText(arg0, "El tiempo de alarma que configuraste ha llegado", Toast.LENGTH_LONG).show();
  }
}

Debido a que se utiliza el servicio BroadcastReceiver, se debe declarar en AndroidManifest.xml:

<receiver>
  android:name=".AlarmReceiver"
  android:process=":remote">
</receiver>

Luego es necesario configurar y cancelar el temporizador de alarma para monitorear el tiempo:

package cn.edu.pku;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
public class AlarmActivity extends Activity {
  /** Llamado cuando la actividad se crea por primera vez. */
  Button mButton1;
  Button mButton2;
  TextView mTextView;
  Calendar calendar;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    calendar=Calendar.getInstance();
    mTextView=(TextView)findViewById(R.id.TextView01);
    mButton1=(Button)findViewById(R.id.Button01);
    mButton2=(Button)findViewById(R.id.Button02);
    mButton1.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        // TODO Auto-método de plantilla generado
        calendar.setTimeInMillis(System.currentTimeMillis());
        int hora = calendar.get(Calendar.HOUR_OF_DAY);
        int minuto = calendar.get(Calendar.MINUTE);
        new TimePickerDialog(AlarmActivity.this, new TimePickerDialog.OnTimeSetListener() {
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            // TODO Auto-método de plantilla generado
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
            calendar.set(Calendar.MINUTE, minute);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            Intent intent = new Intent(AlarmActivity.this, AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, intent, 0);
            AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), + (10 * 1000),
                (24 * 60 * 60 * 1000), pendingIntent);
            String tmps = "establecer el tiempo de alarma a" + format(hourOfDay) + : +format(minute);
            mTextView.setText(tmps);
          }
        }, hour, minute, true).show();
      }
    });
    mButton2.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        // TODO Auto-método de plantilla generado
        Intent intent = new Intent(AlarmActivity.this, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, intent, 0);
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
        mTextView.setText("¡La alarma se ha cancelado!");
      }
    });
  }
  private String format(int time){
    String str = "" + time;
    if(str.length() == 1{
      str = "0" + str;
    }
    return str;
  }
}

El efecto es el siguiente:

Establecer alarma

Llegó el tiempo establecido para la alarma:

Cancelar alarma:

Los lectores interesados en más contenido relacionado con Android pueden ver la sección especial de este sitio: 'Resumen de técnicas de manejo de fechas y horas en Android', 'Tutorial de inicio y avanzado de desarrollo de Android', 'Resumen de técnicas de depuración y resolución de problemas comunes en Android', 'Resumen de técnicas de manejo de multimedia (audio, video, grabación, etc.) en Android', 'Resumen de uso de componentes básicos en Android', 'Resumen de técnicas de uso de vistas View en Android', 'Resumen de técnicas de uso de layout en Android' y 'Resumen de uso de controles en Android'.

Espero que lo descrito en este artículo sea útil para la programación de aplicaciones Android.

Declaración: el contenido de este artículo se obtiene de la red, pertenece al autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione la evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te puede gustar