android通過(guò)google api獲取天氣信息示例
android通過(guò)google API獲取天氣信息
public class WeatherActivity extends Activity {
private TextView txCity;
private Button btnSearch;
private Handler weatherhandler;
private Dialog progressDialog;
private Timer timer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timer = new Timer();
txCity = (TextView)findViewById(R.id.txCity);
btnSearch = (Button)findViewById(R.id.btnSearch);
progressDialog = new AlertDialog.Builder(this)
.setTitle("讀取數(shù)據(jù)中")
.setMessage("正在加載數(shù)據(jù),請(qǐng)稍等")
.create();
weatherhandler = new Handler(){
public void handleMessage(Message msg){
final String cityName = txCity.getText().toString().trim();
searchWeather(cityName);
progressDialog.hide();
}
};
btnSearch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
progressDialog.show();
timer.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.setTarget(weatherhandler);
msg.sendToTarget();
}
},100);
}
});
}
private void searchWeather(String city){
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
SAXParser sp = spf.newSAXParser();
XMLReader reader = sp.getXMLReader();
XmlHandler handler = new XmlHandler();
reader.setContentHandler(handler);
URL url = new URL("http://www.google.com/ig/api?hl=zh-cn&weather="+URLEncoder.encode(city));
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is, "GBK");
InputSource source = new InputSource(isr);
reader.parse(source);
List<Weather>weatherList = handler.getWeatherList();
TableLayout table = (TableLayout)findViewById(R.id.table);
table.removeAllViews();
for(Weather weather:weatherList){
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
row.setGravity(Gravity.CENTER_VERTICAL);
ImageView img = new ImageView(this);
img.setImageDrawable(loadImage(weather.getImageUrl()));
img.setMinimumHeight(80);
row.addView(img);
TextView day = new TextView(this);
day.setText(weather.getDay());
day.setGravity(Gravity.CENTER_HORIZONTAL);
row.addView(day);
TextView temp = new TextView(this);
temp.setText(weather.getLowTemp()+"℃-"+weather.getHighTemp()+"℃");
temp.setGravity(Gravity.CENTER_HORIZONTAL);
row.addView(temp);
TextView condition = new TextView(this);
condition.setText(weather.getCondition());
condition.setGravity(Gravity.CENTER_HORIZONTAL);
row.addView(condition);
table.addView(row);
}
} catch (Exception e) {
e.printStackTrace();
new AlertDialog.Builder(this)
.setTitle("解析錯(cuò)誤")
.setMessage("獲取天氣數(shù)據(jù)失敗,請(qǐng)稍候再試。")
.setNegativeButton("確定", null)
.show();
}
}
private Drawable loadImage(String imageUrl) {
try {
return Drawable.createFromStream((InputStream) new URL("http://www.google.com/"+imageUrl).getContent(), "test");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
- android 微信 sdk api調(diào)用不成功解決方案
- android monkey自動(dòng)化測(cè)試改為java調(diào)用monkeyrunner Api
- Android 高版本API方法在低版本系統(tǒng)上的兼容性處理
- Android 調(diào)用百度地圖API示例
- android開(kāi)發(fā)教程之獲取使用當(dāng)前api的應(yīng)用程序名稱(chēng)
- android通過(guò)Location API顯示地址信息的實(shí)現(xiàn)方法
- Android通過(guò)原生APi獲取所在位置的經(jīng)緯度
- Android提高之藍(lán)牙隱藏API探秘
- Android指紋識(shí)別API初試
- Android開(kāi)發(fā)學(xué)習(xí)筆記之通過(guò)API接口將LaTex數(shù)學(xué)函數(shù)表達(dá)式轉(zhuǎn)化為圖片形式
- Android 支付寶支付、微信支付、銀聯(lián)支付 整合第三方支付接入方法(后臺(tái)訂單支付API設(shè)計(jì))
- Android4.4 WebAPI實(shí)現(xiàn)拍照上傳功能
- 使用android隱藏api實(shí)現(xiàn)亮度調(diào)節(jié)的方法
- Android API開(kāi)發(fā)之SMS短信服務(wù)處理和獲取聯(lián)系人的方法
- Android 用 camera2 API 自定義相機(jī)
- Android基于API的Tabs3實(shí)現(xiàn)仿優(yōu)酷t(yī)abhost效果實(shí)例
- Android 多媒體播放API簡(jiǎn)單實(shí)例
- 最新Android版本、代號(hào)、對(duì)應(yīng)API/NDK級(jí)別、發(fā)布時(shí)間及市場(chǎng)份額
相關(guān)文章
Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Android仿騰訊QQ實(shí)現(xiàn)滑動(dòng)刪除 附源碼下載
仿騰訊QQ滑動(dòng)刪除操作,這篇文章主要為大家詳細(xì)介紹了ListView滑動(dòng)刪除的具體操作方法,感興趣的小伙伴們可以參考一下2016-07-07
Android開(kāi)發(fā)中使用achartengine繪制各種圖表的方法
這篇文章主要介紹了Android開(kāi)發(fā)中使用achartengine繪制各種圖表的方法,結(jié)合具體實(shí)例形式分析了Android基于圖表生成類(lèi)庫(kù)achartengine進(jìn)行圖表繪制的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
深入解析Android系統(tǒng)中應(yīng)用程序前后臺(tái)切換的實(shí)現(xiàn)要點(diǎn)
這篇文章主要介紹了Android系統(tǒng)中應(yīng)用程序前后臺(tái)切換的實(shí)現(xiàn)要點(diǎn),除了切換操作的效果之外還重點(diǎn)講解了判斷程序運(yùn)行于前臺(tái)還是后臺(tái)的方法,需要的朋友可以參考下2016-04-04
Android 中 onSaveInstanceState()使用方法詳解
這篇文章主要介紹了Android 中 onSaveInstanceState()使用方法詳解的相關(guān)資料,希望通過(guò)本文大家能夠掌握這部分知識(shí),需要的朋友可以參考下2017-09-09
基于Rxjava實(shí)現(xiàn)輪詢(xún)定時(shí)器
這篇文章主要為大家詳細(xì)介紹了基于Rxjava實(shí)現(xiàn)輪詢(xún)定時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android程序開(kāi)發(fā)之給背景圖加上移動(dòng)的手勢(shì)
這篇文章主要介紹了Android程序開(kāi)發(fā)之給背景圖加上移動(dòng)的手勢(shì) 的相關(guān)資料,需要的朋友可以參考下2016-03-03
Android編程實(shí)現(xiàn)的超炫圖片瀏覽器
這篇文章主要介紹了Android編程實(shí)現(xiàn)的超炫圖片瀏覽器,涉及Android針對(duì)圖片的查看與顯示方法,包含對(duì)圖片的各種常見(jiàn)操作技巧,需要的朋友可以參考下2015-12-12

