Android简易闹钟实现
通过广播来实现闹钟
1.创建广播接收RepeatingAlarm.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;public class RepeatingAlarm extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction()!=null&&intent.getAction().equals("com.gcc.alarm")) {//自定义的actionintent = new Intent(context,AlarmActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);}}
}
2.广播在Manifest.xml中配置:
<receiver android:name=".RepeatingAlarm"><intent-filter > <action android:name="com.gcc.alarm"/> </intent-filter> </receiver>
3.通过代码设置一个闹钟
Intent intent = new Intent(this, RepeatingAlarm.class);
intent.setAction("com.gcc.alarm");
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);am.set(AlarmManager.RTC,c.getTimeInMillis(), sender);//c为设置闹钟的时间的Calendar对象
4.通过代码取消一个闹钟:
/*** 取消闹钟*/
private void cancleAlarm(){Intent intent = new Intent(AlarmActivity.this,RepeatingAlarm.class);intent.setAction("com.gcc.alarm");PendingIntent sender = PendingIntent.getBroadcast(AlarmActivity.this, 0, intent, 0);// And cancel the alarm.AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);am.cancel(sender);//取消闹钟}
5.闹钟响是弹出的对化框并播放音乐用AlarmActivity.java类实现
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;public class AlarmActivity extends Activity {MediaPlayer mp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.aty_alarm);mp = new MediaPlayer();AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);try {mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(),file.getLength());mp.prepare();file.close();} catch (IOException e) {e.printStackTrace();}mp.setVolume(0.5f, 0.5f);mp.setLooping(true);mp.start();alarmOialog();}@Overrideprotected void onResume() {super.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();if (mp != null) {if (mp.isPlaying()) {mp.stop();}mp.release();}}public void alarmOialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage("你有未处理的事件");builder.setPositiveButton("稍后提醒",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {alarm();finish();}});builder.setNegativeButton("停止", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {cancleAlarm();finish();// 关闭窗口}});builder.show().setCanceledOnTouchOutside(false);;}/*** 取消闹钟*/private void cancleAlarm() {// Create the same intent, and thus a matching IntentSender, for// the one that was scheduled.Intent intent = new Intent(AlarmActivity.this, RepeatingAlarm.class);intent.setAction("com.gcc.alarm");PendingIntent sender = PendingIntent.getBroadcast(AlarmActivity.this,0, intent, 0);// And cancel the alarm.AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);am.cancel(sender);}private void alarm() {// 获取系统的闹钟服务AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);// 触发闹钟的时间(毫秒)long triggerTime = System.currentTimeMillis() + 10000;Intent intent = new Intent(this, RepeatingAlarm.class);intent.setAction("com.gcc.alarm");PendingIntent op = PendingIntent.getBroadcast(this, 0, intent, 0);// 启动一次只会执行一次的闹钟am.set(AlarmManager.RTC, triggerTime, op);// 指定时间重复执行闹钟// am.setRepeating(AlarmManager.RTC,triggerTime,2000,op);}}
6.注:
1.aty_alarm.xml为空布局,不需添加任何组件
2.使用MediaPlayer播放res/raw目录下音频文件的方法如下:
mp = new MediaPlayer();AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);try {mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(),file.getLength());
7.功能不是很完善,需要的可以修改使用,闹钟时间设定可通过上篇博文来获取Calendar对象。
Android简易闹钟实现相关推荐
- Android 简易闹钟的实现
主要是通过广播,实现一个闹钟的简易功能. 实现效果如下: 主界面为一个简易的设置闹钟Button,点击"设置闹钟"弹出时间设置窗.设置成功后,会自动弹出弹窗,提示"时间到 ...
- android 简易闹钟,android简易小闹钟
实现效果:点击主活动上的按钮,弹出一个带有时间选择器的对话框(TimePickerDialog),设置时间后Toast"设置成功".到设置的时间后在AlarmActivity弹出显 ...
- Android 实现闹钟功能
原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...
- android闹钟例子,自己软件中调用android系统闹钟
[实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...
- android小闹钟程序,Android实现闹钟小程序.pdf
Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...
- 基于Android的闹钟的软件
一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...
- android简易计算器
android简易计算器 说明:完成简易版计算器,能够实现基本的加.减.乘.除运算 图示: 布局文件 <?xml version="1.0" encoding="u ...
- Qt完成简易闹钟与画板
画板 通过按钮以及捕获鼠标的press与move信号,利用pixmap在窗口中完成画版上作画.擦除.换色功能. 代码示例: .h文件 #ifndef MHUATU_H #define MHUATU_H ...
- Android简易微信界面
Android简易微信界面 专选课移动互联网开发的第一次作业,利用Android Studio进行了简易Android微信界面的搭建 完整项目代码 界面样式展示: 界面xml源码 主界面xml源码 & ...
最新文章
- 201771010111李瑞红《面向对象的程序设计》第八周实验总结
- 对于JavaScript中this关键字的理解
- 计算机辅助的开发方法,基于计算机辅助设计技术(TCAD)的工艺开发
- flutter怎么手动刷新_如何手动刷新或重新加载Flutter Firestore StreamBuilder?
- SpringBoot 全局异常处理
- 8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验
- java string字符操作_Java对String类型字符串的各种操作姿势
- 文件包含漏洞原理/利用方式/应对方案
- js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
- 全网最详细的idea安装教程
- Failure to find com.rongpd:rpd:pom:1.0 in xxx was cached in the local repository, resolution will no
- 图像语义分割(5)-DeepLabV2: 使用深度卷积网络、空洞卷积和全连接条件随机场进行图像语义分割
- matplotlib中文乱码的两种解决方案
- linux识别不了搜狗安装包,为啥安装使用搜狗拼音不成功?
- PayPal支付开发
- 混音教程入门|新手学混音必须注意这9点!| MZD Studios
- 计算与推断思维 十三、预测
- 怎么修改服务器上传图片,更换服务器后,为什么百度编辑器无法上传图片了
- java 僵尸进程_神奇的Java'僵尸'进程问题
- 转 http://wenku.baidu.com/view/8719b5dad15abe23482f4d9e.html