android智能天气闹钟应用开发经过
开发这个应用的初衷是这样产生滴,和我一块租房的同学每天早上都是骑单车上班,所以手机闹钟就会定一个刚好适合骑车的起床时间点。但是呢,有一天早上起床以后发现外面下挺大雨,肯定是不能骑车去上班了,于是就只好坐公交了,可是起床的时间刚好够骑车不够坐公交呀,雨天又不好打车~~于是就华丽丽的迟到了~~
刚好我最近在自学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智能天气闹钟应用开发经过的更多相关文章
- 一起来开发Android的天气软件(三)——使用Volley实现网络通信
距离上一篇一起来开发Android天气软件二的时间又将近半个月了,之间一直由于有事而没有更新实在抱歉,近期会加快更新的步伐.争取在2015年到来前写完这系列的博文,上一章我们已经使用LitePal框架 ...
- 一起来开发Android的天气软件(四)——使用Gson解析数据
离上一篇文章过去才4.5天,我们赶紧趁热打铁继续完毕该系列的天气软件的开发. 承接上一章的内容使用Volley实现网络的通信.返回给我们的是这一串Json数据{"weatherinfo&qu ...
- android智能家居在线语音控制
对于android 智能家居项目,如果能实现语音控制,无疑会丰富项目功能,改善用户体验,android语音识别的方法有三种:一是使用intent调用语音识别程序,二 是应用程序自己调用语音识别库,三是 ...
- Android 手机小闹钟
Android 手机小闹钟 一.这一篇主要使用系统为我们提供的一个服务AlarmManager来制作一个Android小闹钟,同时还涉及到了自定义主题.判断第一次启动应用.自定义动画.对话框.制作关闭 ...
- 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)
随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...
- Android Studio入门(安装-->开发调试)
写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...
- Android随笔之——闹钟制作铺垫之AlarmManager详解
说实话,之前写的两篇博客Android广播机制Broadcast详解.Android时间.日期相关类和方法以及现在要写的,都算是为之后要写的闹钟应用做铺垫,有兴趣的话,大家可以去看看前两篇博客. 一. ...
- 第一章 Android系统移植与驱动开发概述
本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...
- Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
随机推荐
- 50个实用的jQuery代码段让你成为更好的Web前端工程师
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
- poj 1132
暑假集训做的第一个题,模拟,挺简单的,不过要细心点... 没什么好说的,直接贴代码: #include<cstdio> #include<cstring> using name ...
- 设计模式之策略模式Strategy
/** * 策略设计模式 * 策略模式:定义一系列的算法族,使他们之间可以相互转换,动态的改变其行为. * 问题:设计一个鸭子模拟游戏. * 现在有一群鸭子: * ①这些鸭可以有飞的行为(分为快和慢) ...
- vs2015 Xamarin.Android安装
原文:vs2015 Xamarin.Android安装 Xamarin.Android 安装步骤,以vs2015为例 1,安装vs2015中的跨平台项,但是安装在国内肯定失败,因为需要到谷歌下载 当我 ...
- Android如何在一个线性布局里完美显示两个listview啊?
复写一个listView ,在你布局文件中使用此view: <ScrollView android:layout_width="fill_parent" android:la ...
- WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-and Introduc ...
- 从tcp原理角度理解Broken pipe和Connection reset by peer的区别
从tcp原理角度理解Broken pipe和Connection reset by peer的区别 http://lovestblog.cn/blog/2014/05/20/tcp-broken-pi ...
- 组合计数(polya计数):SGU 282 Isomorphism
因为论文的题解写得太好了,直接贴. #include <iostream> #include <cstring> #include <cstdio> using n ...
- 水题:HDU 5119 Happy Matt Friends
Matt has N friends. They are playing a game together.Each of Matt's friends has a magic number. In t ...
- dos攻击与防御
SYN Flood攻击 标准的TCP三次握手过程如下: 客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号: 服 ...