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

  刚好我最近在自学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. 50个实用的jQuery代码段让你成为更好的Web前端工程师

    本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...

  2. poj 1132

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

  3. 设计模式之策略模式Strategy

    /** * 策略设计模式 * 策略模式:定义一系列的算法族,使他们之间可以相互转换,动态的改变其行为. * 问题:设计一个鸭子模拟游戏. * 现在有一群鸭子: * ①这些鸭可以有飞的行为(分为快和慢) ...

  4. vs2015 Xamarin.Android安装

    原文:vs2015 Xamarin.Android安装 Xamarin.Android 安装步骤,以vs2015为例 1,安装vs2015中的跨平台项,但是安装在国内肯定失败,因为需要到谷歌下载 当我 ...

  5. Android如何在一个线性布局里完美显示两个listview啊?

    复写一个listView ,在你布局文件中使用此view: <ScrollView android:layout_width="fill_parent" android:la ...

  6. WCF Concurrency (Single, Multiple, and Reentrant) and Throttling

    http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-and Introduc ...

  7. 从tcp原理角度理解Broken pipe和Connection reset by peer的区别

    从tcp原理角度理解Broken pipe和Connection reset by peer的区别 http://lovestblog.cn/blog/2014/05/20/tcp-broken-pi ...

  8. 组合计数(polya计数):SGU 282 Isomorphism

    因为论文的题解写得太好了,直接贴. #include <iostream> #include <cstring> #include <cstdio> using n ...

  9. 水题: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 ...

  10. dos攻击与防御

    SYN Flood攻击 标准的TCP三次握手过程如下: 客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号:  服 ...