Android---AlarmManager闹钟设置

本文详述如何使用Android的AlarmManager来设置和取消闹钟,并结合BroadcastReceiver实现闹钟触发事件响应。内容包括在主界面创建设置和取消按钮,定制BroadcastReceiver,AndroidManifest.xml中注册接收器及添加权限,以及MainActivity中的关键事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本片文章主要介绍闹钟的管理,使用到了BroadcastReceiver。

1.在主界面上放置两个按钮,一个用于设置闹钟,一个用于取消闹钟。

这里写图片描述

2.自定义BroadcastReceiver用于响应闹钟时间到后的触发事件。

public class MyReceiver extends BroadcastReceiver {

    private Vibrator mVibrator;
    @Override
    public void onReceive(Context context, Intent intent) {
        mVibrator = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE);
        mVibrator.vibrate(new long[]{100,2000,1000,1000}, -1);
        Toast.makeText(context, "闹钟时间到了!", Toast.LENGTH_LONG).show();
    }
}

3.在AndroidManifest.xml文件中注册MyReceiver,并添加震动权限。

<receiver android:name="com.example.alarmtest.MyReceiver"></receiver>
<uses-permission android:name="android.permission.VIBRATE"/>

4.MainActivity.java文件中定义事件

设置闹钟

private void setAlarm() {   
        //取得系统时间作为TimePicker的默认时间
        mCalendar.setTimeInMillis(System.currentTimeMillis());
        int mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
        int mMinute = mCalendar.get(Calendar.MINUTE);
        new TimePickerDialog(this, listener, mHour, mMinute, true).show();
    }

取消闹钟

private void cancelAlarm() {
        Intent intent = new Intent(MainActivity.this,MyReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
        am.cancel(pi);
        Toast.makeText(MainActivity.this, "闹钟已取消!", Toast.LENGTH_SHORT).show();
    }
private OnTimeSetListener listener = new OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
            mCalendar.set(Calendar.MINUTE, minute);
            mCalendar.set(Calendar.SECOND, 0);

            Intent intent = new Intent(MainActivity.this,MyReceiver.class);
            PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
            am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);

            String temp = format(hourOfDay) + ": " + format(minute);
            Toast.makeText(MainActivity.this, "闹钟时间为:" + temp, Toast.LENGTH_SHORT).show();
        }
    };

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值