在Android中设置闹钟是通过AlarmManager来实现。
首先我们新建Activity与布局文件。
布局文件代码如下
<?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:id="@+id/activity_clock"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.myapplication.ClockActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="setAlarm"
android:text="设置闹钟" />
</LinearLayout>
在Activity的onCreate方法中
//获取闹钟管理者
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
设置闹钟的代码为
Calendar calendar = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
Intent intent = new Intent();
intent.setAction("com.example.myapplication.RING");
//将来时态的跳转 ang eng ing ong
PendingIntent pendingIntent = PendingIntent.getBroadcast(ClockActivity.this, 0x101, intent, 0);
//设置闹钟
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
Toast.makeText(ClockActivity.this, "com.example.myapplication.RING", Toast.LENGTH_SHORT).show();
}
}, calendar.get(calendar.HOUR_OF_DAY), calendar.get(calendar.MINUTE), true);
timePickerDialog.show();
这是普通的设置仅响铃一次的闹钟。设置重复式闹钟只需要
//设置周期闹钟
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 5000, pendingIntent);
根据实测,在真机上周期最小也要一分钟。