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

Explicação detalhada da configuração do alarme no Android

Este exemplo mostra como configurar um relógio alarme em programação Android. Compartilho com vocês para referência, conforme a seguir:

Os relógios alarme são muito comuns na vida cotidiana, no Android podem ser implementados através do AlarmManager, a classe AlarmManager é especializada em configurar que algo seja feito em um tempo específico. O AlarmManager executará esses eventos através do método onReceive(), mesmo que o sistema esteja em modo de espera, não afetando o funcionamento. Pode-se obter este serviço através do método getSystemService do Context. Existem muitos métodos no AlarmManager, como os seguintes:

Método

Descrição

Cancel

Cancelar serviço AlarmManager

Set

Configurar serviço AlarmManager

setInexactRepeating

Configurar período não exato

SetRepeating

Configurar período de repetição

setTimeZone

Configurar fuso horário


Para implementar um relógio alarme, é necessário criar uma classe que herda de BroadcastReceiver, implementar o método onReceive para aceitar este serviço Alarm, e então conectar Intent e PendingIntent para chamar o componente Alarm. Use TimerPickerDialog para configurar o tempo do alarme, e quando o tempo especificado chegar, o método onReceiver receberá o serviço Alarm e a interface.

Primeiro, implemente a classe AlarmReceiver que aceita o serviço Alarm, use Toast para notificar o usuário

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context arg0, Intent arg1) {
    // TODO Auto-metodo de esboço gerado
    Toast.makeText(arg0, "O tempo do alarme que você configurou chegou", Toast.LENGTH_LONG).show();
  }
}

Devido ao uso do serviço BroadcastReceiver, é necessário declarar no AndroidManifest.xml:

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

Então, é necessário configurar e cancelar o alarme e ouvir o tempo:

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 {
  /** Chamado quando a atividade é criada pela primeira 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-metodo de esboço gerado
        calendar.setTimeInMillis(System.currentTimeMillis());
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        new TimePickerDialog(AlarmActivity.this, new TimePickerDialog.OnTimeSetListener() {
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            // TODO Auto-metodo de esboço gerado
            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 = "definir o tempo do despertador para" + format(hourOfDay) + : +format(minute);
            mTextView.setText(tmps);
          }
        }, hour, minute, true).show();
      }
    });
    mButton2.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        // TODO Auto-metodo de esboço gerado
        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("O alarme foi cancelado!");
      }
    });
  }
  private String format(int time){
    String str = "" + time;
    if(str.length() == 1{
      str = "0" + str;
    }
    return str;
  }
}

O efeito é o seguinte:

Configurar alarme

Agora é a hora configurada para o alarme:

Cancelar alarme:

Leitores interessados em mais conteúdo sobre Android podem consultar as seções especializadas deste site: 'Resumo de técnicas de operação de data e hora no Android', 'Tutorial de entrada e avançamento de desenvolvimento do Android', 'Resumo de técnicas de depuração e soluções de problemas comuns no Android', 'Resumo de técnicas de operação de multimídia no Android (áudio, vídeo, gravação, etc.)', 'Resumo de uso dos componentes básicos do Android', 'Resumo de técnicas do View do Android', 'Resumo de técnicas do layout do Android' e 'Resumo de uso dos controles do Android'.

Espero que o conteúdo deste artigo ajude a todos a melhorar a programação de Android.

Declaração: o conteúdo deste artigo é proveniente da Internet, pertence ao respectivo proprietário, foi contribuído e carregado voluntariamente pelos usuários da Internet, este site não possui direitos de propriedade, não foi editado artificialmente e não assume responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de infringir direitos autorais, por favor, envie e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Caso seja confirmado, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)

Você também pode gostar