本文实例讲述了Android基于广播事件机制实现简单定时提醒功能代码。分享给大家供大家参考,具体如下:

1.Android广播事件机制

Android的广播事件处理类似于普通的事件处理。不同之处在于,后者是靠点击按钮这样的组件行为来触发,而前者是通过构建Intent对象,使用sentBroadcast()方法来发起一个系统级别的事件广播来传递信息。广播事件的接收是通过定义一个继承Broadcast Receiver的类实现的,继承该类后覆盖其onReceive()方法,在该方法中响应事件。Android系统中定义了很多标准的Broadcast Action来响应系统广播事件。例如:ACTION_TIME_CHANGED(时间改变时触发)。但是,我们也可以自己定义Broadcast Receiver接收广播事件。

2.实现简单的定时提醒功能

主要包括三部分部分:

1) 定时 - 通过定义Activity发出广播

2) 接收广播 - 通过实现BroadcastReceiver接收广播

3)  提醒 - 并通过Notification提醒用户

现在我们来具体实现这三部分:

2.1 如何定时,从而发出广播呢?

现在的手机都有闹钟的功能,我们可以利用系统提供的闹钟功能,来定时,即发出广播。具体地,在Android开发中可以用AlarmManager来实现。

AlarmManager 提供了一种系统级的提示服务,允许你安排在某个时间执行某一个服务。

AlarmManager的使用步骤说明如下:

1)获得AlarmManager实例: AlarmManager对象一般不直接实例化,而是通过Context.getSystemService(Context.ALARM_SERVIECE) 方法获得

2)定义一个PendingIntent来发出广播。

3)调用AlarmManager的相关方法,设置定时、重复提醒等功能。

详细代码如下(ReminderSetting.java):

package com.Reminder;

import java.util.Calendar;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

/**

* trigger the Broadcast event and set the alarm

*/

public class ReminderSetting extends Activity {

Button btnEnable;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/* create a button. When you click the button, the alarm clock is enabled */

btnEnable=(Button)findViewById(R.id.btnEnable);

btnEnable.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

setReminder(true);

}

});

}

/**

* Set the alarm

*

* @param b whether enable the Alarm clock or not

*/

private void setReminder(boolean b) {

// get the AlarmManager instance

AlarmManager am= (AlarmManager) getSystemService(ALARM_SERVICE);

// create a PendingIntent that will perform a broadcast

PendingIntent pi= PendingIntent.getBroadcast(ReminderSetting.this, 0, new Intent(this,MyReceiver.class), 0);

if(b){

// just use current time as the Alarm time.

Calendar c=Calendar.getInstance();

// schedule an alarm

am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);

}

else{

// cancel current alarm

am.cancel(pi);

}

}

}

2.2 接收广播

新建一个class 继承BroadcastReceiver,并实现onReceive()方法。当BroadcastReceiver接收到广播后,就会去执行OnReceive()方法。所以,我们在OnReceive()方法中加上代码,当接收到广播后就跳到显示提醒信息的Activity。具体代码如下( MyReceiver.java):

package com.Reminder;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

/**

* Receive the broadcast and start the activity that will show the alarm

*/

public class MyReceiver extends BroadcastReceiver {

/**

* called when the BroadcastReceiver is receiving an Intent broadcast.

*/

@Override

public void onReceive(Context context, Intent intent) {

/* start another activity - MyAlarm to display the alarm */

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setClass(context, MyAlarm.class);

context.startActivity(intent);

}

}

注意:创建完BroadcastReceiver后,需要在AndroidManifest.xml中注册:

2.3 提醒功能

新建一个Activity,我们在这个Activity中通过Android的Notification对象来提醒用户。我们将添加提示音,一个TextView来显示提示内容和并一个button来取消提醒。

其中,创建Notification主要包括:

1)获得系统级得服务NotificationManager,通过 Context.getSystemService(NOTIFICATION_SERVICE)获得。

2)实例化Notification对象,并设置各种我们需要的属性,比如:设置声音。

3)调用NotificationManager的notify()方法显示Notification

详细代码如下:MyAlarm.java

package com.Reminder;

import android.app.Activity;

import android.app.Notification;

import android.app.NotificationManager;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore.Audio;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

/**

* Display the alarm information

*/

public class MyAlarm extends Activity {

/**

* An identifier for this notification unique within your application

*/

public static final int NOTIFICATION_ID=1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.my_alarm);

// create the instance of NotificationManager

final NotificationManager nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

// create the instance of Notification

Notification n=new Notification();

/* set the sound of the alarm. There are two way of setting the sound */

// n.sound=Uri.parse("file:///sdcard/alarm.mp3");

n.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "20");

// Post a notification to be shown in the status bar

nm.notify(NOTIFICATION_ID, n);

/* display some information */

TextView tv=(TextView)findViewById(R.id.tvNotification);

tv.setText("Hello, it's time to bla bla...");

/* the button by which you can cancel the alarm */

Button btnCancel=(Button)findViewById(R.id.btnCancel);

btnCancel.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

nm.cancel(NOTIFICATION_ID);

finish();

}

});

}

}

希望本文所述对大家Android程序设计有所帮助。

java 手机声音提醒功能_Android基于广播事件机制实现简单定时提醒功能代码相关推荐

  1. vue实现留言板的功能_基于vue和bootstrap实现简单留言板功能

    本文实例为大家分享了vue实现简单留言板功能的具体代码,供大家参考,具体内容如下 作为一个刚开始接触vue的前端小白,我想在这里记录一些学习过程,希望和大家一起进步,如有不妥处之处,请多多指教呦. 今 ...

  2. java程序如何解代数方程_基于代数方程库Algebra.js解二元一次方程功能示例

    本文实例讲述了基于代数方程库Algebra.js解二元一次方程功能.分享给大家供大家参考,具体如下: 假设二元一次方程如下: x + y = 11 x - y = 5 解方程如下: 测试algebra ...

  3. python报时功能_python3多线程实现一个语音报时,定时关机功能的应用

    我是您的朋友义县游学电子科技,今天我跟大家分享一个小应用.利用python实现一个网络应用,具有定时关机功能和语音报时功能. 下面我先来介绍一下python.python这门语言想必大家都听说过,就算 ...

  4. java 手机声音提醒功能_java – 同时播放声音Android

    我在 Android上创造了一个游戏,而且我已经把这个问题放在一段时间了,现在我刚刚回来了.在我的游戏中,我有一个背景拍摄,枪声,爆炸等等,我需要能够同时玩.现在,当我在SoundPool类上打电话时 ...

  5. java工作日报管理系统_GitHub - LovebuildJ/book-manager: JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架...

    book-manager 介绍 图书管理系统 请勿忽略更新日志, 会有详细的版本更新说明! 软件截图 在线API接口文档 登录 首页轮播 图书列表 图书上架 图书编辑 图书删除 图书借阅 图书检索 图 ...

  6. java web聊天室原理_java web利用mvc结构实现简单聊天室功能

    简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是: 1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进行mvc结构的设 ...

  7. 一文实现Mac 上简单定时提醒小脚本

    借鉴了这位老哥的文章,在文章的基础上总结更细了一点,并且适当添加了一些内容,这里付上原文链接:https://blog.csdn.net/lp351539365/article/details/103 ...

  8. 设计两个程序要求用消息队列实现简单的聊天功能linux,Linux C 消息队列实现简单的聊天功能...

    消息队列是提供一种带有数据标识的特殊管道,使得每一段被写入的数据都变成带标识的消息,读取该段消息的进程只要指定这个标识就可以正确地读取,而不会受到其他消息的干扰,.一个带标识的消息队列,就像并存的管道 ...

  9. java实现定时提醒功能

    上班看股票不方便,做个股价监控软件 偷菜时间到了,做个定时提醒软件 还有10分20秒,要订票了,做个定时提醒软件 时间任意设置,总之就是一个定时提醒软件,比如设置5分钟时间到了,会弹出提示窗口,显示提 ...

最新文章

  1. HTML5 学习笔记(一)- video
  2. 中国编程第一人,李开复欣赏他,百度留不住他...
  3. Nginx基于IP,端口,域名配置虚拟主机
  4. php引用地址,关于php的引用
  5. java正则表达式对象_Java正则表达式之Pattern类
  6. URAL 1033 Labyrinth
  7. [html] html6即将到来,你最期待的是什么特性呢?
  8. Hologres+Flink流批一体首次落地4982亿背后的营销分析大屏
  9. 使用Python快速获取公众号文章定制电子书(一)
  10. shell调用hive客户端导致nohup后台进程stopped
  11. 如何查看K/3数据库表及字段详细信息
  12. C++ 实现反射机制(转载)
  13. linux内核类型lagency,使用u盘安装linux(manjaro)时Grub报错
  14. 2.SQL之条件查询
  15. 计算机辅助机械设计实训教程,机械设计教学中计算机辅助设计应用
  16. H3CSE路由-配置OSPF高级
  17. win10计算机护眼,win10系统开启电脑护眼的操作方法
  18. 李飞飞:我更像物理学界的科学家,而不是工程师|深度学习崛起十年
  19. 微星MS16j9鼠标面板可以移动指针,无法通过面板点击
  20. ThinkAdmin学习总结

热门文章

  1. 【C】牛客网 编程入门训练138道题
  2. 第六篇 VGGNet——模型精讲
  3. W5500+DHCP+DNS+MQTT
  4. CodeForces 786A Berzerk 博弈?BFS瞎搞
  5. OG0VA1B 全局曝光、高速感光芯片
  6. NB IoT LWM2M Object or/and Resource Identifier: (Object ID) or (ResourceID)
  7. 用行列式展开计算n阶行列式【c++/递归】
  8. NS3下的802.15.4模块(lr-wpan)
  9. go mod拉取gitlab私有仓库代码问题最全总结
  10. ubuntu 编译安装opencv官网教程