Android Studioを使用して、時計やカレンダー形式でアラームを設定する方法について説明します。
以下は、基本的なレイアウトXMLです。この例では、アラームを設定するためにTimePicker、EditText、Buttonを使用しています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AlarmActivity">
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/edit_text_note"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="メモを入力"/>
<Button
android:id="@+id/button_set_alarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="アラーム設定"/>
</LinearLayout>
アラームがトリガーされたときに表示されるダイアログの処理です。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
String note = bundle.getString("note");
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setTitle("時間になりました!");
dialog.setMessage(note);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "閉じる", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
dialog.show();
}
}
次に、アラームを設定するためのJavaコードです。CalendarクラスとAlarmManagerを使用して指定された時間を設定し、PendingIntentを作成します。
public void setupAlarm(View view) {
EditText editText = findViewById(R.id.edit_text_note);
DatePicker datePicker = findViewById(R.id.date_picker);
String noteText = editText.getText().toString().trim();
Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("note", noteText);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
// DatePickerから日付情報を取得してcalendarオブジェクトに設定
calendar.set(Calendar.YEAR, datePicker.getYear());
calendar.set(Calendar.MONTH, datePicker.getMonth());
calendar.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
// 時間を午前0時0分に設定
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(this, "アラームが設定されました", Toast.LENGTH_SHORT).show();
}