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

Подробное объяснение метода настройки будильника на Android

Этот пример рассказывает о методе настройки будильника Android-программирования. Поделюсь с вами для вашего参考, подробности см. ниже:

Будильник является наиболее распространённым в жизни, в Android его можно реализовать с помощью AlarmManager, который специально предназначен для выполнения определённых действий в указанное время. AlarmManager исполнит эти события через метод onReceive(), даже если система находится в спящем режиме, это не повлияет на её работу. Получить этот сервис можно через метод getSystemService(Context) класса Context. В AlarmManager множество методов, например:

Метод

Объяснение

Cancel

Отключение услуги AlarmManager

Set

Настройка услуги AlarmManager

setInexactRepeating

Настройка не точной периодичности

SetRepeating

Настройка периодичности повторения

setTimeZone

Настройка часового пояса


Чтобы реализовать будильник, сначала необходимо создать класс, наследующий BroadcastReceiver, реализовать метод onReceive для принятия Alarm сервиса, затем через Intent и PendingIntent свяжитесь с компонентом Alarm. Настройте время будильника с помощью TimerPickerDialog. Когда время придёт, метод onReceiver получит Alarm сервис и покажет интерфейс.

Сначала реализуйте класс AlarmReceiver, который принимает Alarm сервис, и используйте класс Toast для уведомления пользователя

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context arg0, Intent arg1) {
    // TODO Автоматически сгенерированный метод
    Toast.makeText(arg0, "Время, которое вы установили для будильника, наступило", Toast.LENGTH_LONG).show();
  }
}

Поскольку используетсяслужба BroadcastReceiver, поэтому необходимо объявить её в файле AndroidManifest.xml:

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

Затем необходимо настроить время включения и отключения будильника для мониторинга:

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 {
  /** Вызвано при первом создании активности. */
  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 Автоматически сгенерированный метод
        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 Автоматически сгенерированный метод
            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 = "Настройка времени будильника: " + format(hourOfDay) + ":" +format(minute);
            mTextView.setText(tmps);
          }
        }, hour, minute, true).show();
      }
    });
    mButton2.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        // TODO Автоматически сгенерированный метод
        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("Будильник отменен!");
      }
    });
  }
  private String format(int time){
    String str = "" + time;
    if(str.length() == 1){
      str = "0" + str;
    }
    return str;
  }
}

Эффект будет следующим:

Установить будильник

Время достигло времени установки будильника:

Отменить будильник:

Дополнительную информацию о содержании Android, которая может вас заинтересовать, можно найти в разделе: "Сводка技巧 по работе с датой и временем в Android", "Введение и продвинутый курс по разработке Android", "Сводка技巧 по отладке и решению проблем в Android", "Сводка技巧 по работе с мультимедиа в Android (аудио, видео, запись и т.д.), "Сводкаusage по базовым компонентам в Android", "Сводкаusage по компонентам View в Android", "Сводкаusage по компонентам layout в Android" и "Сводкаusage по компонентам в Android".

Надеюсь, что описание статьи поможет вам в разработке приложений для Android.

Заявление: содержимое статьи предоставлено из Интернета, авторское право принадлежит автору, контент предоставлен пользователями Интернета, веб-сайт не имеет права собственности, не был обработан вручную, и не несет ответственности за связанные с этим юридические обязательства. Если вы обнаружите содержимое,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. Если подтвердится, сайт немедленно удалят涉嫌侵权的内容.

Основной учебник
Вам может понравиться