写一个Android 的kotlin语言的闹钟
时间: 2024-03-22 22:42:01 浏览: 14
好的,下面是一个使用 Kotlin 语言编写的 Android 闹钟应用的示例代码。这个应用包含了设置闹钟、取消闹钟、闹钟响铃等功能。
首先,在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.SET_ALARM"/>
```
然后,在 MainActivity.kt 文件中添加以下代码:
```kotlin
import android.app.AlarmManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.TimePicker
import android.widget.Toast
import java.util.*
class MainActivity : AppCompatActivity() {
lateinit var timePicker: TimePicker
lateinit var alarmManager: AlarmManager
lateinit var pendingIntent: PendingIntent
lateinit var mediaPlayer: MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
timePicker = findViewById(R.id.timePicker)
alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
mediaPlayer = MediaPlayer.create(this, R.raw.alarm_sound)
}
fun setAlarm(view: View) {
val calendar = Calendar.getInstance()
calendar.set(Calendar.HOUR_OF_DAY, timePicker.hour)
calendar.set(Calendar.MINUTE, timePicker.minute)
calendar.set(Calendar.SECOND, 0)
val intent = Intent(this, AlarmReceiver::class.java)
pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0)
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
Toast.makeText(this, "Alarm set for ${timePicker.hour}:${timePicker.minute}", Toast.LENGTH_SHORT).show()
}
fun cancelAlarm(view: View) {
alarmManager.cancel(pendingIntent)
mediaPlayer.stop()
Toast.makeText(this, "Alarm canceled", Toast.LENGTH_SHORT).show()
}
inner class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
mediaPlayer.start()
Toast.makeText(context, "Alarm", Toast.LENGTH_SHORT).show()
}
}
}
```
其中,setAlarm() 方法用于设置闹钟,cancelAlarm() 方法用于取消闹钟。在 setAlarm() 方法中,我们首先创建一个 Calendar 对象,然后设置闹钟时间。接着,创建一个 PendingIntent 对象,用于启动一个 BroadcastReceiver。最后,使用 AlarmManager 来设置闹钟,将 PendingIntent 传递给 AlarmManager。在 cancelAlarm() 方法中,我们直接调用 AlarmManager 的 cancel() 方法来取消闹钟,并停止播放音乐。
在这个示例中,我们使用了一个内部类 AlarmReceiver 来处理闹钟响铃的逻辑。当闹钟时间到达时,系统会启动 AlarmReceiver 广播,然后在 onReceive() 方法中播放音乐和显示 Toast 提示。
最后,我们需要在 AndroidManifest.xml 文件中添加以下代码,注册 AlarmReceiver 广播:
```xml
<receiver android:name=".MainActivity$AlarmReceiver"/>
```
这就是一个简单的使用 Kotlin 编写的 Android 闹钟应用。希望能对你有所帮助。