通过广播来实现闹钟
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简易闹钟实现相关推荐

  1. Android 简易闹钟的实现

    主要是通过广播,实现一个闹钟的简易功能. 实现效果如下: 主界面为一个简易的设置闹钟Button,点击"设置闹钟"弹出时间设置窗.设置成功后,会自动弹出弹窗,提示"时间到 ...

  2. android 简易闹钟,android简易小闹钟

    实现效果:点击主活动上的按钮,弹出一个带有时间选择器的对话框(TimePickerDialog),设置时间后Toast"设置成功".到设置的时间后在AlarmActivity弹出显 ...

  3. Android 实现闹钟功能

      原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...

  4. android闹钟例子,自己软件中调用android系统闹钟

    [实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...

  5. android小闹钟程序,Android实现闹钟小程序.pdf

    Android实实现现闹闹钟钟小小程程序序 这篇文章主要为大家详细介绍了Android实现闹钟小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近写了 闹钟的程序,看到SharedPrefe ...

  6. 基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

  7. android简易计算器

    android简易计算器 说明:完成简易版计算器,能够实现基本的加.减.乘.除运算 图示: 布局文件 <?xml version="1.0" encoding="u ...

  8. Qt完成简易闹钟与画板

    画板 通过按钮以及捕获鼠标的press与move信号,利用pixmap在窗口中完成画版上作画.擦除.换色功能. 代码示例: .h文件 #ifndef MHUATU_H #define MHUATU_H ...

  9. Android简易微信界面

    Android简易微信界面 专选课移动互联网开发的第一次作业,利用Android Studio进行了简易Android微信界面的搭建 完整项目代码 界面样式展示: 界面xml源码 主界面xml源码 & ...

最新文章

  1. 201771010111李瑞红《面向对象的程序设计》第八周实验总结
  2. 对于JavaScript中this关键字的理解
  3. 计算机辅助的开发方法,基于计算机辅助设计技术(TCAD)的工艺开发
  4. flutter怎么手动刷新_如何手动刷新或重新加载Flutter Firestore StreamBuilder?
  5. SpringBoot 全局异常处理
  6. 8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验
  7. java string字符操作_Java对String类型字符串的各种操作姿势
  8. 文件包含漏洞原理/利用方式/应对方案
  9. js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
  10. 全网最详细的idea安装教程
  11. Failure to find com.rongpd:rpd:pom:1.0 in xxx was cached in the local repository, resolution will no
  12. 图像语义分割(5)-DeepLabV2: 使用深度卷积网络、空洞卷积和全连接条件随机场进行图像语义分割
  13. matplotlib中文乱码的两种解决方案
  14. linux识别不了搜狗安装包,为啥安装使用搜狗拼音不成功?
  15. PayPal支付开发
  16. 混音教程入门|新手学混音必须注意这9点!| MZD Studios
  17. 计算与推断思维 十三、预测
  18. 怎么修改服务器上传图片,更换服务器后,为什么百度编辑器无法上传图片了
  19. java 僵尸进程_神奇的Java'僵尸'进程问题
  20. 转 http://wenku.baidu.com/view/8719b5dad15abe23482f4d9e.html

热门文章

  1. css3动画动一次就停止,css - 在最后一帧停止CSS3动画
  2. python看图猜成语_看图猜成语200个图答案 看图猜成语图片答案大全
  3. 人民日报三问区块链:区分是技术创新还是集资创新
  4. Install-package
  5. 记录下制作Ubuntu启动U盘踩的坑
  6. 996普遍吗_网络常识不是太普遍
  7. 超导计算机国防科技大学,超导材料的性能与应用综述
  8. DV-Hop算法原理
  9. 什么是欧式期权?什么是美式期权?
  10. 葫芦灸,拥抱葫芦灸走过的日子,不负韶华。