开发这个应用的初衷是这样产生滴,和我一块租房的同学每天早上都是骑单车上班,所以手机闹钟就会定一个刚好适合骑车的起床时间点。但是呢,有一天早上起床以后发现外面下挺大雨,肯定是不能骑车去上班了,于是就只好坐公交了,可是起床的时间刚好够骑车不够坐公交呀,雨天又不好打车~~于是就华丽丽的迟到了~~

  刚好我最近在自学android开发,然后就想到了做这么一个闹钟应用,可以根据当天天气的情况来决定闹钟触发的时间,如果下雨或者下雪的话就让它提前一个时间点,比如半个小时触发,这样的话骑车的同学就省了不少心,妈妈再也不用担心我因为起床晚而上班或者上学迟到了~~

  话不多说,首先看成果物(程序员做的界面,大家懂得。。)

  

  

  下面说一下开发过程中的整体技术思路和遇到的问题:

  1.android闹钟的设定

    android闹钟的设定使用了android的AlarmManager系统服务,根据用户输入的闹钟时间来进行系统闹钟的触发设定就好了。因为用户的输入比较简单,所以同时将用户设定的闹钟时间直接保存在xml中,方便随时获取。

    定义自己的闹钟事件广播接收类receiver,当闹钟被触发使用该类进行监听。

  2.城市定位以及天气情况获取

    定位和获取天气情报,本来是打算分两步进行,自己编写城市定位的代码,然后通过获取到的城市名再去某一个api获取该城市的天气情况,但是网上找了半天没找到一个合适的获取天气情况的接口,真是一个难过的结果。后来有一天发现高德地图的api接口有天气接口,可以一步到位地获取城市以及天气情况,所以这个问题就轻松解决了。。。

  3.特殊天气闹钟提前触发设定

    至此就到了本应用最主要了逻辑处理处了,如何让它根据闹铃当日的天气情况自动判断闹钟触发的时间呢??

    我的思路是这样的,在用户设定闹钟时间的时候正常情况下会给系统的AlarmManager服务注册一个用户设定的时间点的闹钟的循环触发服务,但是我将它修改为设定一个提前于用户设定的时间半小时(假定用户想提前半小时)的循环触发服务。

    例如用户设定了8:00的闹钟,我就将它改为7:30,当7:30的时候我的广播接收类receiver收到了系统发的闹钟触发事件,然后2中提到的接口获取当前实时天气情况,如果是下雨下雪等特殊天气就让闹钟在此刻触发,闹铃立马响起。如果是正常天气就再向系统注册一个8:00的单次闹钟事件,receiver在8:00接受到该事件以后不进行天气判断而是直接触发闹铃。

  至此,整个应用的核心功能就基本实现了。本人android菜鸟,思路和技术都没什么技术含量,所以代码就不上了,如果有想的不对的地方还请多多指点。

  源码下载地址:链接: http://pan.baidu.com/s/1c0rOiAk 密码: 6nbr

android智能天气闹钟应用开发经过的更多相关文章

  1. 一起来开发Android的天气软件(三)——使用Volley实现网络通信

    距离上一篇一起来开发Android天气软件二的时间又将近半个月了,之间一直由于有事而没有更新实在抱歉,近期会加快更新的步伐.争取在2015年到来前写完这系列的博文,上一章我们已经使用LitePal框架 ...

  2. 一起来开发Android的天气软件(四)——使用Gson解析数据

    离上一篇文章过去才4.5天,我们赶紧趁热打铁继续完毕该系列的天气软件的开发. 承接上一章的内容使用Volley实现网络的通信.返回给我们的是这一串Json数据{"weatherinfo&qu ...

  3. android智能家居在线语音控制

    对于android 智能家居项目,如果能实现语音控制,无疑会丰富项目功能,改善用户体验,android语音识别的方法有三种:一是使用intent调用语音识别程序,二 是应用程序自己调用语音识别库,三是 ...

  4. Android 手机小闹钟

    Android 手机小闹钟 一.这一篇主要使用系统为我们提供的一个服务AlarmManager来制作一个Android小闹钟,同时还涉及到了自定义主题.判断第一次启动应用.自定义动画.对话框.制作关闭 ...

  5. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  6. Android Studio入门(安装-->开发调试)

    写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...

  7. Android随笔之——闹钟制作铺垫之AlarmManager详解

    说实话,之前写的两篇博客Android广播机制Broadcast详解.Android时间.日期相关类和方法以及现在要写的,都算是为之后要写的闹钟应用做铺垫,有兴趣的话,大家可以去看看前两篇博客. 一. ...

  8. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  9. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

随机推荐

  1. BZOJ 1574: [Usaco2009 Jan]地震损坏Damage

    Description 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有牛棚间的路经都还能使用. FJ的农场有P(1 <= P <= 30,000)个牛棚,编号1.. ...

  2. 从 IT 中断中学到的最佳监控实践

    每个运维监控工具,一般要追踪数十万个内部性能指标.学会对哪些事件进行告警以及监控确实需要花费想当长的一段时间.因为,并非所有的指标等级都是一致.因此我们需要摸索出一套简单的方法,便于管理所有指标,而且 ...

  3. 如何通过REST获取JENKINS的编译进度?

    第二版功能需要实现, 我看了一下,获取百分比进度不太可能了,,因为JENKINS本身都没有具体的百分比进度.. 那,,只好实现获取实时值,如果完成就显示完成. URL: http://1.2.3.4/ ...

  4. 【HDU 3483】 A Very Simple Problem (二项式展开+矩阵加速)

    A Very Simple Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  5. [转贴]Eclipse IDE for c++配置

    从工作到现在已经有快一年多没用过C/C++了,现在想重新捡起来,但是以前一直是在windows下面进行开发,使用最多的是Eclipse和Myeclipse,因为这些都是开源的软件,并不收费,所以现在也 ...

  6. HTML表单和验证事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  7. Eclipse can't install updates

    trying to update eclipse but after downloading updates i always get an error dialog saying: An error ...

  8. Android textAppearance的属性设置及TextView属性详解

    textAppearance的属性设置 android:textAppearance="?android:attr/textAppearanceSmall" android:tex ...

  9. bzoj2242

    快速幂 扩展欧几里得 baby-step-giant-step 可以自行baidu 程序附部分注释 ; type link=^node;      node=record        re,wh:l ...

  10. 【转】virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法

    原文网址:http://fuliang.iteye.com/blog/1102998 在笔记本安装Ubuntu11.04增强功能失败 引用 fuliang@fuliang-VirtualBox:~$ ...