我以前写了个复杂闹钟的demo,参见Android闹钟【复杂版】【大明进化十五】 .但是里面的bug有一些,好多人留言,所以我就看看源码,找找原因?顺便把源码代码整理出来,弄成一个完整的可以运行的apk,今天上午就整理了一下,才发现,源码处理的逻辑多一些,考虑的情况多,比如开机后接收一个广播,然后从数据库中取时间和当前时间对比,设置闹钟,当时区改变了,也会发送广播,对闹钟进行设置的。
转载请标明出处:http://blog.csdn.net/wdaming1986/article/details/7461043
有人问我:“当设置一个闹钟后,然后调系统时间超过设置的闹钟的时间,这时候闹钟响了??”
通过源码,我发现这种情况是正常的。不是bug。可以理解。
以下是我发现的几点闹钟中重要的点,分享一下:
(1)在闹钟中有AudioManager管理机制,这个机制可以申请和释放OnAudioFocusChangeListener监听。
还有mTelephonyManager对象,处理在闹钟响的时候,来电铃声的切换。
(2)广播接收闹钟,通过广播启动AlarmKlaxon这个Service,隐式启动service:
public static final String ALARM_INTENT_EXTRA = "intent.extra.alarm";
[java] view plaincopyprint?
// 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);
在mainfest中,AlarmKlaxon这个服务的定义如下:
[java] view plaincopyprint?
<service android:name="AlarmKlaxon"
android:description="@string/alarm_klaxon_service_desc"
>
<intent-filter>
<action android:name="com.cn.daming.deskclock.ALARM_ALERT" />
</intent-filter>
</service>
这个service做的是允许别的Activity打断正在响铃的铃声,播放其他的铃声,例如,闹钟响的时候来电话了。
(3)在listview中包含checkbox,这时候闹钟的处理时,activity实现一个OnItemClickListener的监听,点击每一项的监听。然后在checkbox单独拿出去写一个类,继承LinearLayout,重写setPressed()这个方法,以实现“当点击checkbox的时候不触发parent的click事件”。关键代码如下:
[java] view plaincopyprint?
<span style="font-size:18px;"> @Override
public void setPressed(boolean pressed) {
// If the parent is pressed, do not set to pressed.
if (pressed && ((View) getParent()).isPressed()) {
return;
}
super.setPressed(pressed);
}</span>
下面看看我的程序截图:
红色圈的图标为我的闹钟。 点击“玲闹钟”后的界面
点击新建闹钟出现的界面 设置好时间弹出的toast。
分享到:
相关推荐
【Android手机小闹钟源码】是一个典型的Android应用程序开发示例,主要展示了如何在Android平台上构建一个实用的小闹钟功能。对于想要深入学习Android开发,尤其是对系统级应用或者日常实用工具开发感兴趣的开发者来...
本实例源码提供了一个完整的Android闹钟功能的实现,旨在帮助开发者深入理解如何在自己的应用中集成这一功能。下面我们将详细探讨Android闹钟功能的实现原理以及源码中的关键部分。 一、Android闹钟服务概述 在...
本文将深入探讨Android 闹钟源码的工作原理、关键组件以及如何实现自定义闹钟应用。 首先,Android 闹钟功能的核心在于`AlarmManager`类,它是Android SDK中的一个系统服务,负责调度定时事件。`AlarmManager`可以...
以下是对"android小闹钟源码"的详细解析: 1. **Android应用程序基础**:Android应用由一系列组件构成,包括活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供者(ContentProvider)...
《深入解析Android系统闹钟com.android.deskclock源码》 Android系统闹钟,作为用户日常生活中不可或缺的一部分,其背后的实现原理与源码是许多开发者和技术爱好者关注的焦点。com.android.deskclock作为Android...
《Android 闹钟应用源码解析》 在Android平台上的应用程序开发中,闹钟功能是一项基本且实用的功能,它能够帮助用户在设定的时间点得到提醒。Android 闹钟源码的分析,对于开发者来说,是深入理解系统底层机制、...
本资源提供的"Android 闹钟app 源码"是一个适用于Android 8到11版本的源代码,非常适合学习和实践Android应用开发。以下是基于该源码可能涉及的主要知识点的详细解析: 1. **AlarmManager**: Android中的...
以下将详细解析“android 自制闹钟源码”的相关知识点。 1. **BroadcastReceiver**: Android系统中的闹钟功能通常基于BroadcastReceiver。BroadcastReceiver是Android四大组件之一,用于接收和处理系统或应用程序...
《Android新手入门:解析“蓝宝闹钟”项目源码》 在移动开发领域,Android以其开源、灵活的特性吸引了大量的开发者。对于初学者来说,理解并实践Android项目源码是提升技能的重要途径。本文将深入探讨一个适合新手...
这个"安卓Android源码——Android自定义锁屏实现----仿正点闹钟.zip"压缩包文件提供了一个实例,展示了如何模仿“正点闹钟”的锁屏功能。通过分析和学习这个源码,我们可以了解到Android系统的锁屏机制以及如何进行...
一、Android闹钟功能基础 Android系统中的闹钟功能主要由AlarmManager服务负责,它是系统级的服务,用于设置定时任务,比如定时启动应用、发送广播等。通过AlarmManager,开发者可以设置一次性或重复性的闹钟,同时...
一、Android闹钟服务概述 Android系统中的闹钟服务主要由`AlarmManager`类提供,它负责调度和管理系统的定时事件。`AlarmManager`通过与系统内核的交互,确保在指定时间触发相应的闹钟事件。同时,开发者可以通过`...
通过研究这个源码,开发者不仅可以学习到如何构建一个基本的Android闹钟应用,还能深入理解Android系统的核心组件和工作原理。对于想要提升Android开发技能的人来说,这是一个非常有价值的实践项目。
在Android平台上,开发一款闹钟应用涉及到多个关键知识点,...以上就是Android闹钟应用开发的主要知识点。通过对"闹钟源码.zip"的解压和分析,可以深入理解这些概念在实际代码中的实现方式,从而提升Android开发技能。
《Android精美愤怒的小闹钟源码解析》 在Android应用开发领域,一款精美的小闹钟应用不仅能提供实用的功能,还能提升用户体验。"Android 精美愤怒的小闹钟源码"就是一个很好的实例,它展示了如何在Android平台上...
《Android手机小闹钟源码解析》 在Android开发领域,构建一款实用的手机小闹钟应用是一项常见的任务。这份“手机小闹钟源码”为我们提供了一个宝贵的实践案例,让我们深入理解Android应用开发的核心技术和设计思路...
"Android程序研发源码Android 精美愤怒的小闹钟源码.rar" 这个标题表明这是一个关于Android应用开发的资源,具体来说是一个名为"AngryAlarm"的精美小闹钟应用的源代码。这个应用可能借鉴了愤怒的小鸟这款游戏的元素...
这篇文档将深入解析安卓Android平台上实现的"闹钟+秒表+倒计时+时钟四合一"的源码,帮助开发者理解如何在Android系统中集成这些常见的计时功能。我们将探讨以下几个方面: 1. **Android系统架构与计时器接口** ...
这篇内容将详细解析一个完整的Android记事本应用源码,该应用具备备忘录功能,并且集成了闹钟提醒功能。对于想要学习Android应用开发,尤其是日历、备忘录和提醒服务方面的朋友来说,这是一个非常实用的学习资源。 ...