闹钟的使用
第一步:注册闹钟(AlarmManager,PendingIntent,Intent,闹钟的时间)
第二步:注册闹钟广播接受者(BroadcastReceiver)
第三步:处理闹钟的时间(比如:打开一个应用,提示用户时间到了 etc....)
=========AlarmAlert.java==========
private void updateLayout() {
。。。。。。。。。。
。。。。。。。。。。
/* snooze behavior: pop a snooze confirmation view, kick alarm
manager. */
Button snooze = (Button) findViewById(R.id.snooze);
snooze.requestFocus();
snooze.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
snooze();
}
});
........
........
}
// Attempt to snooze this alert.
private void snooze() {
final String snooze =
PreferenceManager.getDefaultSharedPreferences(this)
.getString(SettingsActivity.KEY_ALARM_SNOOZE, DEFAULT_SNOOZE);
int snoozeMinutes = Integer.parseInt(snooze);
final long snoozeTime = System.currentTimeMillis()
+ (1000 * 60 * snoozeMinutes); //计算睡眠时间
Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarm.id, snoozeTime);//保存睡眠的时间
// Get the display time for the snooze and update the notification.
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(snoozeTime);
。。。。
。。。。
。。。。
// Notify the user that the alarm has been snoozed.//通知给广播接收者 AlarmReceiver.class 并处理闹钟时间
Intent cancelSnooze = new Intent(this, AlarmReceiver.class);
cancelSnooze.setAction(Alarms.CANCEL_SNOOZE);
cancelSnooze.putExtra(Alarms.ALARM_ID, mAlarm.id);
PendingIntent broadcast =
PendingIntent.getBroadcast(this, mAlarm.id, cancelSnooze, 0);
NotificationManager nm = getNotificationManager();
。。。。。
。。。。。。。。。。。。。
stopService(new Intent(Alarms.ALARM_ALERT_ACTION));
finish();
}
=========Alarm.java==========
static void saveSnoozeAlert(final Context context, final int id,
final long time) {
SharedPreferences prefs = context.getSharedPreferences(
AlarmClock.PREFERENCES, 0);
SharedPreferences.Editor ed = prefs.edit();
if (id == -1) {
clearSnoozePreference(ed);
} else {
ed.putInt(PREF_SNOOZE_ID, id);
ed.putLong(PREF_SNOOZE_TIME, time); //保存提示的时间
ed.commit();
}
// Set the next alert after updating the snooze.
setNextAlert(context);
}
/**
* If there is a snooze set, enable it in AlarmManager
* @return true if snooze is set
*/
private static boolean enableSnoozeAlert(final Context context) {
SharedPreferences prefs = context.getSharedPreferences(
AlarmClock.PREFERENCES, 0);
int id = prefs.getInt(PREF_SNOOZE_ID, -1);
if (id == -1) {
return false;
}
long time = prefs.getLong(PREF_SNOOZE_TIME, -1); //取出设置闹钟的时间
// Get the alarm from the db.
final Alarm alarm = getAlarm(context.getContentResolver(), id);
// The time in the database is either 0 (repeating) or a specific time
// for a non-repeating alarm. Update this value so the AlarmReceiver
// has the right time to compare.
alarm.time = time; //将时间放入数据库中
enableAlert(context, alarm, time);
return true;
}
/**
* Sets alert in AlarmManger and StatusBar. This is what will
* actually launch the alert when the alarm triggers.
*
* @param alarm Alarm.
* @param atTimeInMillis milliseconds since epoch
*/
private static void enableAlert(Context context, final Alarm alarm,
final long atTimeInMillis) {
AlarmManager am = (AlarmManager)
context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(ALARM_ALERT_ACTION);
PendingIntent sender = PendingIntent.getBroadcast(
context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); //接受广播的闹钟的广播意图 Action:“ALARM_ALERT_ACTION”
am.set(AlarmManager.RTC_WAKEUP, atTimeInMillis, sender); //设置闹钟
/**
//闹钟的广播接受者
* Glue class: connects AlarmAlert IntentReceiver to AlarmAlert
* activity. Passes through Alarm ID.
*/
public class AlarmReceiver extends BroadcastReceiver {
.......
.....
.......
/* launch UI, explicitly stating that this is not due to user action
* so that the current app's notification management is not disturbed */
Intent alarmAlert = new Intent(context, c);
alarmAlert.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm);
alarmAlert.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alarmAlert);
...
........
// Play the alarm alert and vibrate the device.
Intent playAlarm = new Intent(Alarms.ALARM_ALERT_ACTION);
playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm);
context.startService(playAlarm);
...........
.....
}
分享到:
相关推荐
android闹钟源码闹钟程序源码15个合集: AlarmClock.tar.gz AlarmTest.zip AndroidRTC-master.zip Android自动开关机实现.pdf Android自动开关机实现.rar ClockPackage.apk-af47e27b7952e0ecccc9b005352d19d20c67eb...
在Android开发中,创建一个能够实现闹钟提醒并在锁屏状态下弹出Dialog对话框、播放铃声和振动的功能,涉及到多个关键知识点。以下是对这些知识点的详细解释: 1. **AlarmManager**: 这是Android系统服务,用于调度...
本文将深入探讨Android闹钟功能的源代码实现,并基于提供的"DeskClock"文件名,推测这是一个Android桌面时钟应用的源码。 在Android中,闹钟功能主要依赖`AlarmManager`服务来实现。`AlarmManager`负责调度和管理...
这个"android闹钟"项目提供了一个简单的源代码实例,是初学者了解和学习Android编程,尤其是与时间管理和通知相关的功能的理想起点。下面将详细阐述Android闹钟应用开发的关键知识点。 1. **AlarmManager**: ...
这份"Android 闹钟源码.zip"压缩包包含了一个实现Android闹钟功能的源代码示例,对于开发者来说,这是一个很好的学习和参考资源。我们将深入探讨Android闹钟的实现机制及相关知识点。 1. **AlarmManager**: Android...
本压缩包"Android闹钟.zip"包含了一个实现此类功能的示例项目,帮助开发者了解如何在Android应用中创建和管理闹钟。 在Android开发中,`AlarmManager`是系统服务类,用于安排一次性或周期性的任务。`AlarmManager`...
在Android平台上,开发一款闹钟应用需要掌握一系列关键知识点,...综上所述,开发一个完整的Android闹钟应用涵盖了Android系统的核心组件和特性,需要理解并熟练运用这些知识,才能为用户提供稳定且易用的闹钟功能。
首先,Android闹钟程序的基础是AlarmManager服务。AlarmManager是Android系统中的一个核心组件,它允许应用程序安排在未来某个时间执行操作,如启动服务或发送广播。开发者通常会使用set()或setExact()方法来设置...
总结来说,实现一个Android闹钟功能主要涉及以下步骤: 1. 获取`AlarmManager`实例。 2. 通过按钮事件让用户设置闹钟时间和选择铃声。 3. 创建`PendingIntent`并与一个`BroadcastReceiver`关联。 4. 使用`...
在Android平台上,开发一款闹钟应用是一个常见的任务,它涉及到Android系统的AlarmManager服务、BroadcastReceiver、PendingIntent以及自定义UI设计等多个方面。本资源提供的"Android 闹钟app 源码"是一个适用于...
在给定的“android闹钟修改后的可用源代码”中,我们可以深入理解Android闹钟服务的工作原理及其自定义实现。这里我们将探讨相关的核心知识点。 1. **AlarmManager**: Android系统中的`AlarmManager`类是负责调度...
从标题"简单的android闹钟源代码.zip"和描述中,我们可以推测这是一个教学项目,用于教授如何在Android环境中创建一个基本的闹钟功能。以下是基于这个描述可能涵盖的一些核心Android开发知识点: 1. **...
本实训项目旨在通过开发一个功能完善的Android闹钟应用,让学生深入理解Android平台的编程技术,提升实际项目开发能力。 二、功能需求 1. **设置闹钟**:用户可以自由设定闹钟的时间,包括小时、分钟和重复周期...
本文将深入探讨Android闹钟的源码实现,带你了解其内部工作机制,以及如何自定义和优化闹钟服务。 首先,Android闹钟服务主要由`AlarmManager`类提供,它是Android SDK中的一个关键组件,负责处理定时任务。`...
在Android平台上,创建一个闹钟应用是常见的任务,它涉及到系统级别的定时器和服务。下面将详细解释`Android 闹钟 Demo`的相关知识点。 首先,我们要理解Android中的闹钟是如何工作的。Android提供了`AlarmManager`...
在Android平台上,开发一款闹钟或倒计时应用是一项常见的任务,这有助于用户安排日程、提醒重要事件或保持时间管理。"Android 闹钟 倒计时源代码.rar"是一个包含Android应用源代码的压缩包,它提供了一个名为...
我们的目标是设计并实现一个用户友好、功能完善的Android闹钟应用,涵盖设置闹钟、编辑闹钟、删除闹钟以及管理重复闹钟等核心功能。 二、技术栈与工具 1. 开发环境:Android Studio,用于编写、调试和构建Android...