定时闹钟

news/2025/1/16 10:56:50/

文章目录


####1、功能介绍
点击按钮 设置闹钟 --》时间到–》闹铃提醒
这里写图片描述

这里写图片描述

####2、代码结构
这里写图片描述

####3、主要功能代码

MainActivity.java

package com.example.menglux.myalarm;import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TimePicker;import org.json.JSONObject;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Calendar;public class MainActivity extends AppCompatActivity {private String  TAG = "MainActivity: ";private AlarmManager alarmManager;private PendingIntent pendingIntent;private static  int    num = 100;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//闹钟管理器alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);}public void setAlarmOne(View view){//获取当前系统的时间Calendar calendar=Calendar.getInstance();int hour=calendar.get(Calendar.HOUR_OF_DAY);//时int minute=calendar.get(Calendar.MINUTE);//分//先要弹出时间对话框TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker timePicker, int i, int i1) {//确定选择好的时间  给了CalendarCalendar c=Calendar.getInstance();
/*                c.set(Calendar.YEAR,2018);// c.set(Calendar.MONTH,Calendar.JUNE);//也可以填数字,0-11,一月为0c.set(Calendar.MONTH,7);//也可以填数字,0-11,一月为0c.set(Calendar.DAY_OF_MONTH, 1);*/c.set(Calendar.HOUR_OF_DAY,i);c.set(Calendar.MINUTE,i1);c.set(Calendar.SECOND,20);System.out.println(TAG + "设定的闹钟时间:" + i + " 时 " +  i1  + " 分");Intent intent=new Intent();intent.setAction("com.example.alarmandnotice_android.DCAT");//对于Android 8.0 系统 会出现收不到 闹铃广播的问题  添加下面内容  就是接受广播的类所在位置intent.setComponent(new ComponentName("com.example.menglux.myalarm","com.example.menglux.myalarm.BroadcatReceive"));//设置多个闹钟 只是需要第二个 参数 不同//  PendingIntent pendingIntent= PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);pendingIntent = PendingIntent.getBroadcast(MainActivity.this,num,intent,0);System.out.println(TAG + "第几个闹钟:" + num);//android Api的改变不同版本中设 置有所不同if(Build.VERSION.SDK_INT<19){//设置闹钟alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);}else{alarmManager.setExact(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);}num ++ ;}},hour,minute,false);timePickerDialog.show();}//删除闹钟public void cancelAlarmCycle(View view){Intent intent=new Intent();intent.setAction("com.example.alarmandnotice_android.DCAT");//对于Android 8.0 系统 会出现收不到 闹铃广播的问题  添加下面内容  就是接受广播的类所在位置intent.setComponent(new ComponentName("com.example.menglux.myalarm","com.example.menglux.myalarm.BroadcatReceive"));//设置多个闹钟 只是需要第二个 参数 不同  pendingIntent = PendingIntent.getBroadcast(MainActivity.this,num ,intent,0);alarmManager.cancel(pendingIntent);  //**多个闹钟时 ,想删除哪一个,只需要删除对应的 pendingIntent ,这个时候最重要的时 pendingIntent 要和设置的那个闹钟保持一样,特别是里面的参数 值**}}

BroadcatReceive.java

package com.example.menglux.myalarm;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;/*** Created by lum on 2018/7/31.*/public class BroadcatReceive extends BroadcastReceiver {private  String  TAG = "BroadcatReceive: ";@Overridepublic void onReceive(Context context, Intent intent) {System.out.println(TAG + "获得广播");if ("com.example.alarmandnotice_android.DCAT".equals(intent.getAction())){System.out.println(TAG + "获得闹铃广播");//接受到闹铃广播 跳转界面 ,当有多个闹铃时 ,可通过获取系统时间 与 保存设定个的闹铃时间进行对比 来区分不同闹铃Intent intentdata = new Intent(context,AlarmShowActivity.class);intentdata.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);System.out.println(TAG + "lum_2");context.startActivity(intentdata);System.out.println(TAG + "lum_3");}}
}

AlarmShowActivity.java

package com.example.menglux.myalarm;import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;import java.text.SimpleDateFormat;
import java.util.Locale;/*** Created by lum on 2018/7/31.*/public class AlarmShowActivity extends AppCompatActivity {private String TAG = "AlarmShowActivity: " ;private MediaPlayer mediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_show);System.out.println(TAG + "");getCurrentTime();mediaPlayer = MediaPlayer.create(this, R.raw.nlch);mediaPlayer.start();}//得到当前时间private void getCurrentTime() {//24小时制SimpleDateFormat dFormat24Huur = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);//SimpleDateFormat dFormat24Huur = new SimpleDateFormat("yyyy-M-d H:m", Locale.CHINA);String date24 = dFormat24Huur.format(new java.util.Date());//12小时制SimpleDateFormat dFormat12Hour = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.CHINA);String date12 = dFormat12Hour.format(new java.util.Date());System.out.println(TAG + "获得当前的系统时间:" + "24小时: " +  date24  + "  12小时: " + date12);}public void stop(View view){mediaPlayer.stop();finish();}
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.menglux.myalarm"><applicationandroid: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"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".AlarmShowActivity"/><receiver android:name=".BroadcatReceive"><intent-filter><action android:name="com.example.alarmandnotice_android.DCAT"></action></intent-filter></receiver></application></manifest>

demo 下载

文献参考:
Android之实现简单小闹钟
https://blog.csdn.net/d_shadow/article/details/55144742

Android实现简单的闹钟
https://blog.csdn.net/dongye2016/article/details/78052214

Android广播事件机制及应用(实现简单的定时提醒功能)
https://blog.csdn.net/wanglang3081/article/details/7456684

安卓小项目实战之–定时提醒备忘录
https://github.com/zeschi/Android-AlarmManagerClock-master


http://www.ppmy.cn/news/855231.html

相关文章

闹钟服务设计

目录 背景 可选方案 RabbitMQ的延迟队列 Redis ZSet timeWheel 数据库 & 预加载 项目地址 后续优化 背景 购买火车票、淘宝购物....这些场景&#xff0c;在支付的时候&#xff0c;都涉及了订单过期自动取消的场景&#xff08;30分钟未支付&#xff0c;订单自动取消…

STM32的闹钟

STM32的闹钟真是闹心啊......   因为方案变化&#xff0c;这个星期要用到STM32的闹钟&#xff0c;就是让程序每天固定时间醒来&#xff0c;完成任务后继续睡眠&#xff0c;也可以根据情况任务的完成情况定下一次的醒来时间。   重点点&#xff1a;   1、闹钟固定时间醒; …

android12.0(S) 通知栏不显示闹钟和静音图标 bug

bug 现象&#xff1a;设置闹钟或静音模式后&#xff0c;状态栏不显示图标&#xff0c;但下拉状态栏中有显示 在网上搜索了下没人报这个问题&#xff0c;大家是都默认了&#xff1f;&#xff1f;&#xff1f; 找到一篇报道有写&#xff0c;bug 相关 关于 Bug 修复方面&#x…

什么是端口号【图解TCP/IP(笔记十一)】

文章目录 端口号端口号定义根据端口号识别应用通过IP地址、端口号、协议号进行通信识别端口号如何确定端口号与协议 TCP具有代表性的知名端口号UDP具有代表性的知名端口号 端口号 端口号定义 数据链路和IP中的地址&#xff0c;分别指的是MAC地址和IP地址。前者用来识别同一链…

Documentation 代码注释文档规范

1. 代码注释文档规范的添加 /// 代码规范文档 struct DocumentationBootcamp: View {// MARK: PROPERTIESState var data:[String] ["Apples", "Oranges", "Bananas"]State var showAlert: Bool false// MARK: BODY// Code Folding : 代码折叠…

园区元宇宙:打造智慧园区综合治理孪生管理平台

智慧园区是指融合应用云计算、物联网、大数据等新一代信息与通信技术&#xff0c;通过监测、分析、智慧响应等方式整合园区内外资源&#xff0c;实现基础设施智能化、规划管理信息化、公共服务便捷化、社会治理精细化和产业发展现代化。整个园区的能耗情况、环保监测、照明情况…

升级数智化底座领先实践:北京地铁加速财务数智化转型

近年来&#xff0c;数字经济蓬勃发展&#xff0c;正在成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量。中共中央、国务院印发的《数字中国建设整体布局规划》再次明确指出&#xff0c;做强做优做大数字经济。推动数字技术和实体经济深度融合&#xff0c;…

兆骑科创双创活动承办,企业落地孵化,招才引智

兆骑科创双创活动承办&#xff0c;企业落地孵化&#xff0c;招才引智 兆骑科创致力于打造战略新兴产业服务平台&#xff0c;平台以线上系统为服务载体&#xff0c;整合国内外双创资源&#xff0c;采用大数据、智慧智能等高新技术理念和互联互享的物联网先进产业模式&#xff0…