项目中需要写一个小闹钟提醒用户。

时间选择器使用的是 TimePickerDialog

    private AlarmManager alarm; // 闹钟管理private Calendar calendar = Calendar.getInstance() ;//取得Calender对象new TimePickerDialog(getContext(), 0, new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker timePicker, int i, int i1) {hour=i;min=i1;calendar.setTimeInMillis(System.currentTimeMillis());//设置当前时间calendar.set(Calendar.HOUR_OF_DAY,hour);calendar.set(Calendar.MINUTE,min);calendar.set(Calendar.SECOND,0);calendar.set(Calendar.MILLISECOND,0);Intent intent=new Intent(getContext(),SampleBootReceiver.class);//指定跳转的Intentintent.setAction("org.campass.action.setalarm") ;//定义广播的ActionPendingIntent sender=PendingIntent.getBroadcast(getContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);showNotification(i,i1);try {alarm.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),sender);//设置闹钟Toast.makeText(getContext(),"设置闹钟成功",Toast.LENGTH_SHORT).show();}catch (Exception e){Toast.makeText(getContext(),"设置闹钟失败",Toast.LENGTH_SHORT).show();}}},hour,min,true).show();

然后在跳转的 SampleBootReceiver 指定需要跳转的Activity

public class SampleBootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Intent it = new Intent(context, AlarmActivity.class);//定义要操作的Intentit.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//传递一个新的任务标记context.startActivity(it);//启动Intent}
}

同时需要在AndroidManifest.xml 注册

    <receiver android:name=".service.SampleBootReceiver" android:enabled="true"android:process=":remote">//.配置广播器<intent-filter><action android:name="org.alarm.action.setalarm" /></intent-filter></receiver>

最后写AlarmActivity 闹钟的 提示框和铃声

public class AlarmActivity extends Activity {MediaPlayer mPlayer;private AlertDialog mAlertDialog;private AlertDialog.Builder mBuilder=null;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);alarmMusic_play();mAlertDialog=null;mBuilder=new AlertDialog.Builder(this);mAlertDialog=mBuilder.setIcon(R.drawable.ic_launcher_background).setTitle("这是闹钟标题").setMessage("这是闹钟内容").setNegativeButton("延迟一小时", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {alarmMusic_stop();alarmdelay();AlarmActivity.this.finish();}}).setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {alarmMusic_stop();//关闭通知NotificationManager manager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);manager.cancel(1);AlarmActivity.this.finish();}}).create();//创建mAlertDialog.show();}private void alarmMusic_play(){//加载指定音乐,并为之创建MediaPlayer对象mPlayer=MediaPlayer.create(this,R.raw.shape);mPlayer.setLooping(true);//播放闹钟mPlayer.start();}private void alarmMusic_stop(){//停止音乐mPlayer.stop();if (mManager!=null){mManager.cancel(alarmIntent);}}private AlarmManager mManager;private PendingIntent alarmIntent;/*延时一个小时
*/private void alarmdelay(){mManager= (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);Intent intent=new Intent(this,MainActivity.class);alarmIntent=PendingIntent.getBroadcast(this,0,intent,0);Calendar calendar=Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());int hour=calendar.get(Calendar.HOUR);int min=calendar.get(Calendar.MINUTE);calendar.set(Calendar.HOUR,hour);calendar.set(Calendar.MINUTE,min);mManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),1000*60*60,alarmIntent);}
}

最后一定要在AndroidManifest.xml中 写权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

定时闹钟功能(带铃声 可延时)相关推荐

  1. 基于51单片机的智能护眼台灯带闹钟功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/工作模式/灯光亮度 2.具备闹钟功能,到达闹钟时间,蜂鸣器报警 3.自动模式下,有人灯亮,人离开后15s, ...

  2. android大作业闹钟的功能,定时闹钟课程设计大作业.doc

    定时闹钟课程设计大作业 微型计算机控制 技术大作业 设计题目: 定时闹钟课程设计 院 系:计算机科学与信息工程学院 学生姓名: 曹紫莹 学 号: 201103010036 专业班级: 计算机科学与技术 ...

  3. 51单片机+ds1302+lcd1602简易电子时钟(带闹钟功能)

    51单片机+ds1302+lcd1602简易电子时钟(带闹钟功能) AT89C52.LCD1602.DS1302.speaker. Proteus仿真 实例代码 #include<reg52.H ...

  4. 【Proteus仿真】简易51单片机时钟,带闹钟功能,可调整时间

    [Proteus仿真]简易51单片机时钟,带闹钟功能,可调整时间 Proteus仿真效果图 简易电子钟 功能简介 数码管段选为P1口 数码管段选P3口 蜂鸣器P27 按键P20–P23. 数码管显示目 ...

  5. python定时发送邮件_Python3实现带附件的定时发送邮件功能

    本文实例为大家分享了Python3定时发送邮件功能的具体代码,供大家参考,具体内容如下 1. 导入模块 import os import datetime #定时发送,以及日期 import shut ...

  6. python和c#做一个简单的有铃声的定时闹钟

    思路 简单的说就是用Python做一个定时器和c#做一个播放音乐的框体,这个定时器会根据当前的时间去和你设定的时间去匹配,当匹配得上的时候,就会去执行c#框体所生成的exe可执行文件的程序,这时就会有 ...

  7. stm32数码管显示实时时间并有闹钟功能

    stm32数码管显示实时时间并有闹钟功能 功能描述 数码管介绍 数码管芯片 段选与位选 驱动数码管显示代码 实验思路 完整代码 Led.h Led.c Key.h Key.c beep.h beep. ...

  8. Android自定义定时闹钟开发详解

    这篇文章主要为大家详细介绍了Android自定义定时闹钟开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Android开发之自定义闹钟实现,供大 ...

  9. 闹钟Android实验报告,定时闹钟我的实验报告.doc

    定时闹钟我的实验报告 DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY 课程名称: 单片机原理及接口技术 论文题目: 定时闹钟 系 ...

最新文章

  1. 关于AVR单片机熔丝位的设置和拯救方法大全 AVR单片机熔丝位的设置和详细的拯救方法...
  2. 上千个电脑文件怎么搬?用Python一键复制移动
  3. github删除错误的commit并保留之前的提交
  4. php表单写入数据库,php表单写入数据库
  5. Linux禁止ip拒绝访问80,Linux iptables 设置允许(禁止)IP范围
  6. 我对软件开发的一点思考
  7. 多线程python实现方式_python多线程的两种实现方式(代码教程)
  8. rmmod无法卸载驱动_AMD芯片组驱动更新:优化了RYZEN CPU供电调节
  9. ct图像去噪 matlab,NSCT 图像去噪 matlab
  10. Ubuntu安装Chrome的方法
  11. 2020年python工资一般多少-武汉Python薪资一般是多少?真实数据告诉你
  12. php对接抖音快手小红书短视频去水印接口的代码
  13. 【武汉加油!中国加油!】挑战七天 实现机器视觉检测有没有戴口罩系统——第四五六七天
  14. 简单工厂方法模式(Simple Factory Methord)
  15. 微信企业邮箱登陆入口在哪?企业邮箱忘记密码怎么修改?
  16. XCTF easyCpp
  17. broker-list与bootstrap-server辨析
  18. 12.计蒜客信息学题库:T1702 魔法宝石
  19. 古为今鉴——为臣(为属)之道
  20. poj 4084:拓扑排序

热门文章

  1. 第十四、十五章NFS和FTP的搭建与配置
  2. Zcash中的keys和addresses
  3. 一次java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSession异常解决
  4. java免费视频通话,GitHub标星3.2K
  5. OSFormer阅读笔记
  6. 从电焊女工到Google台湾总经理
  7. 什么是 去中心化自治组织(DAO)
  8. 用Tushare获取A股所有股票历史数据
  9. 古希腊就有象形文字为什么西方人却用字母文字?
  10. 【BZOJ4552】【TJOI2016HEOI2016】排序(线段树、二分)