小馬天氣
前言
部分設計參考xcc3641的開源項目SeeWeather,在此表示感謝!
第一次開始這個項目是2014年4月份,我還在大二的時候,當時有一個程序設計實踐課,想著簡單點就選了天氣預報這個題目,時隔兩年又重新拾起,給它脫胎換骨,就是想拿他作為一個學習新知識的實戰項目,期間也做過改動,比如曾經把網絡請求模塊從android-async-http改為Volley。
- 項目地址:https://github.com/wangchenyan/ponyweather
- 有問題請提Issues
- 如果喜歡,歡迎Star!
簡介
小馬天氣是一款開源Android天氣信息查詢軟件。
- 實景天氣,尋找你身邊的美景
- 多城市天氣預報,記得提醒遠方的TA
- 語音播報,一鍵聽天氣
- Material Design 設計風格,從未如此簡約
- 自動夜間模式,更加貼心
使用
- clone 項目
- 打開項目根目錄下的
local.properties
文件,添加如下內容
# 和風天氣,影響天氣數據
HE_KEY=xxxxxx
# bmob,影響實景天氣
BMOB_KEY=xxxxxx
# 百度語音合成,影響語音播報
BD_TTS_API_KEY=xxxxxx
BD_TTS_SECRET_KEY=xxxxxx
# 高德地圖,影響定位
AMAP_KEY=xxxxxx
# bughd,非必需
BUG_HD_KEY=xxxxxx
- 到相應的網站申請需要的 key (如和風天氣),替換對應位置的
xxxxxx
更新說明
v 2.2
- 升級和風天氣API為V5
v 2.1
- 新增搜索城市
- 新增設置自動更新時間間隔
v 2.0
- 新增實景天氣
- 新增城市管理
- 新增語音播報
- 支持自動夜間模式
v 1.5
- 重構代碼,全新風格設計
- 增加支持國內全部縣級以上城市可選
v 1.4
- 支持Android 6.0
下載地址
V2.2
https://github.com/wangchenyan/ponyweather/releases/download/2.2/ponyweather-2.2.apk
TODO
- 實景天氣
- 城市管理
- 語音播報
- 自動夜間模式
- 桌面小部件
項目
公開API
開源技術
關鍵代碼
網絡請求RxJava+Retrofit
private void fetchDataFromNetWork(final CityEntity city) {
Api.getIApi().getWeather(city.name, ApiKey.HE_KEY)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.filter(new Func1<WeatherData, Boolean>() {
@Override
public Boolean call(final WeatherData weatherData) {
boolean success = weatherData.weathers.get(0).status.equals("ok");
return success;
}
})
.map(new Func1<WeatherData, Weather>() {
@Override
public Weather call(WeatherData weatherData) {
return weatherData.weathers.get(0);
}
})
.doOnNext(new Action1<Weather>() {
@Override
public void call(Weather weather) {
mACache.put(city.name, weather);
SystemUtils.saveRefreshTime(WeatherActivity.this);
}
})
.subscribe(new Subscriber<Weather>() {
...
updateView(weather);
...
});
}
截圖
關于作者
掘金:https://juejin.im/user/2313028193754168
微博:https://weibo.com/wangchenyan1993
License
Copyright 2017 wangchenyan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.