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

Androidプログラミングのアラーム設定方法の詳細

この記事では、Androidプログラミングでのアラーム設定方法について説明します。以下に詳しく説明します:

アラームは生活中最も一般的なものの一つで、AndroidではAlarmManagerを使用してアラームを実現できます。AlarmManagerクラスは特定の指定された時間に特定のタスクを実行するために使用されます。AlarmManagerはonReceive()メソッドを通じてこれらのイベントを実行します。システムが待機状態であっても、これらの実行に影響を与えません。Context.getSystemServiceメソッドを使用してこのサービスを取得できます。AlarmManagerには多くのメソッドがあります。以下に示します:

メソッド

説明

Cancel

AlarmManagerサービスをキャンセル

Set

AlarmManagerサービスを設定

setInexactRepeating

不精確な周期を設定

SetRepeating

繰り返し周期を設定

setTimeZone

時区を設定


アラームを実装するには、まずBroadcastReceiverを継承したクラスを作成し、onReceiveメソッドを実装してこのAlarmサービスを受け取ります。その後、IntentとPendingIntentを結びつけてAlarmコンポーネントを呼び出します。TimerPickerDialogを使用してアラーム時間を設定し、指定された時間に達したらonReceiverメソッドがAlarmサービスを受け取った後のインターフェースを受け取ります。

まずAlarmサービスを受け取るAlarmReceiverクラスを実装し、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 メディア操作技術まとめ(オーディオ、ビデオ、録音など)》、《Android 基本コンポーネントの使い方まとめ》、《Android ビュー View 技術まとめ》、《Android レイアウト layout 技術まとめ》および《Android コントロールの使い方まとめ》

この記事で述べたことが皆様のAndroidプログラムデザインに役立つことを願っています。

声明:この記事の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。このサイトは所有権を持ちません。また、人工的な編集は行われていません。著作権侵害の内容が見つかった場合は、メールを送信してください:notice#oldtoolbag.com(メール送信時は、#を@に変更してください)で通報し、関連する証拠を提供してください。一旦確認がとりつかれ、このサイトは侵害された内容をすぐに削除します。

基本チュートリアル
おすすめ