【Android】アラーム機能 ~ 入門編 ~

■ はじめに

目覚まし機能(アラーム機能)について、まとめる

目次

【1】アラーム実装の手順
【2】Hello World
【3】アラーム種類

【1】アラーム実装の手順

1)アラーム通知を受け取るためのクラスを作成
 ⇒ 以下「【2】Hello World」の「AlarmBroadcastReceiver.kt」を参照

2)マニフェストファイルに1)を追加
 ⇒ 以下「【2】Hello World」の「app/manifests/AndroidManifest.xml」を参照

3)AlarmManageを使ってアラームを設定する
 ⇒ 以下「【2】Hello World」の「MainActivity.kt」を参照

【2】Hello World

app/manifests/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
...
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
...
        <!-- ★ここ★ -->
        <receiver android:name=".alarm.AlarmBroadcastReceiver"></receiver>
    </application>
</manifest>

AlarmBroadcastReceiver.kt

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast

// アラーム通知を受け取るための BroadcastReceiver 継承したクラスを作成
class AlarmBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        Toast.makeText(
            context,
            "時間です",
            Toast.LENGTH_SHORT).show()
    }
}

MainActivity.kt

import android.app.AlarmManager
import android.app.PendingIntent
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.annotation.RequiresApi
import com.dk.jpalarm.alarm.AlarmBroadcastReceiver
import java.util.*

class MainActivity : BaseActivity() {
    @RequiresApi(Build.VERSION_CODES.KITKAT)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var calendar = Calendar.getInstance()
        calendar.timeInMillis = System.currentTimeMillis()
        calendar.add(Calendar.SECOND,5)

        val intent = Intent(
            this,
            AlarmBroadcastReceiver::class.java)
        val pending =
            PendingIntent.getBroadcast(
                this,0,intent,0)

        var alarmManager : AlarmManager =
            getSystemService(ALARM_SERVICE) as AlarmManager
        alarmManager.setExact(
            AlarmManager.RTC_WAKEUP,
            calendar.timeInMillis,
            pending)
    }
}

参考文献

https://tanalab.com/2017/10/28/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92kotlin%E3%81%A7/

関連記事

アラーム機能 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/08/06/000000
Androidアプリから端末のアラームを設定する
https://dk521123.hatenablog.com/entry/2018/05/06/234117
Kotlin / Realm で英単語帳を作る
https://dk521123.hatenablog.com/entry/2020/07/20/232009
ダイアログ表示 ~ 基本編 / アラートダイアログ ~
https://dk521123.hatenablog.com/entry/2013/10/05/214058
ダイアログ表示 ~ 基本編 / 日付・時間ダイアログ ~
https://dk521123.hatenablog.com/entry/2020/07/26/000000
音声を再生するには
https://dk521123.hatenablog.com/entry/2020/07/18/000000
Kotlin ~ 基本編 / Enum・列挙型関連 ~
https://dk521123.hatenablog.com/entry/2020/08/10/125112