標籤:android blog http 使用 ar sp 2014 問題 log
開發這個應用的初衷是這樣產生滴,和我一塊租房的同學每天早上都是騎單車上班,所以手機鬧鐘就會定一個剛好適合騎車的起床時間點。但是呢,有一天早上起床以後發現外面下挺大雨,肯定是不能騎車去上班了,於是就只好坐公交了,可是起床的時間剛好夠騎車不夠坐公交呀,雨天又不好打車~~於是就華麗麗的遲到了~~
剛好我最近在自學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菜鳥,思路和技術都沒什麼技術含量,所以代碼就不上了,如果有想的不對的地方還請多多指點。
android智能天氣鬧鐘應用開發經過