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

  刚好我最近在自学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. poj 1132

    暑假集训做的第一个题,模拟,挺简单的,不过要细心点... 没什么好说的,直接贴代码: #include<cstdio> #include<cstring> using name ...

  2. hdu 1281

    二分图,简单的模板题,不过题目比较难懂: 其中important chess就是删掉它不能够完美匹配,所以就枚举每一个可能删的棋子: 代码: #include <cstdio> #incl ...

  3. 17.2.2.1 The Slave Relay Log Slave中继日志

    17.2.2.1 The Slave Relay Log Slave中继日志 中继日志, 像binary log,有一组文件组成包含events 描述数据库的修改,和一个index文件包含所有使用过的 ...

  4. XtraForm中更换皮肤

    前提: 默认皮肤的显示http://www.cnblogs.com/chucklu/p/4785572.html 1.修改XtraForm的LookAndFeel的SkinName属性,设置为Cara ...

  5. Red Hat linux 如何增加swap空间

    按步骤介绍 Red Hat linux 如何增加swap空间 方法/步骤 第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在 ...

  6. 尚未在 Web 服务器上注册 ASP.NET 4.0” 的解决办法

    http://www.sowsoy.com/topics-537.html win7,vs2010创建.NetFramework 4框架下的Asp.Net空网站.系统提示 “尚未在 Web 服务器上注 ...

  7. 为web服务器设置HttpOnly防范XSS攻击

    HttpOnly标识是一个可选的.避免利用XSS(Cross-Site Scripting)来获取session cookie的标识.XSS攻击最常见一个的目标是通过获取的session cookie ...

  8. windows下面配置jdk环境变量

    在环境变量中添加如下: Path D:\Program Files\Java\jdk1.6.0_26\binJAVA_HOME D:\Program Files\Java\jdk1.6.0_26CLA ...

  9. Off-by-one错误

    在迭代循环中,误用> < ≥ ≤符号,有可能导致循环次数多一次或者少一次,就会引发off-by-one错误,混用半开区间和闭区间时,也经常发生此类错误,解决方法是利用最小的输入值去测试代码 ...

  10. Red5空项目的理解

    在经过三天的苦恼之后,我终于对Red5的工作流程有点了解了.这样一来对要做的项目总算不会太瞎了.出于个人感受,认为下面所讲述的内容对初学者理解Red5以及基于Red5开发有很大的帮助,因此记录下来. ...