APIから現在の天気ときょうの予報のみ取得する
※ Http通信で接続するため、manifestファイルにpermissionを追加する。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
// 取得するデータ String c_condition; String c_temp_f ; String c_temp_c ; String c_humidity ; String c_wind ; String t_low_temp; String t_high_temp ; String t_condition ; // リクエストURL String requestUrl= "http://www.google.com/ig/api?hl=ja&weather=fukuoka"; URL url = new URL(requestUrl); // Http通信で接続する HttpURLConnection http = (HttpURLConnection)url.openConnection(); // XmlPullParser オブジェクトを生成 XmlPullParser xpp = Xml.newPullParser(); // 取得したデータをStreamから直接読み込む BufferedInputStream inBuffer = new BufferedInputStream(http.getInputStream()); // 日本語エンコード BufferedReader reader = new BufferedReader(new InputStreamReader(inBuffer, "Shift_JIS")); xpp.setInput(reader); for(int e = xpp.getEventType(); e != XmlPullParser.END_DOCUMENT; e = xpp.next() ){ String tag = xpp.getName(); //タグ名 if(xpp.getDepth() == 3){ //3階層目 boolean loop_break = false; if("forecast_information".equals(tag)){ do{ //必要ないのでループを進める xpp.next(); }while(xpp.getDepth() == 4); } //現在の天気データ if("current_conditions".equals(tag)){ do{ xpp.next(); tag = xpp.getName(); if(xpp.getEventType() == XmlPullParser.START_TAG){ if("condition".equals(tag)){ c_condition = xpp.getAttributeValue(0); }else if("temp_f".equals(tag)){ c_temp_f = xpp.getAttributeValue(0); }else if("temp_c".equals(tag)){ c_temp_c = xpp.getAttributeValue(0); }else if("humidity".equals(tag)){ c_humidity = xpp.getAttributeValue(0); }else if("wind_condition".equals(tag)){ c_wind = xpp.getAttributeValue(0); } } }while(xpp.getDepth() == 4); } //本日の天気予報データ if("forecast_conditions".equals(tag)){ do{ xpp.next(); tag xpp.getName(); if(xpp.getEventType() == XmlPullParser.START_TAG){ if("low".equals(tag)){ t_low_temp = xpp.getAttributeValue(0); }else if("high".equals(tag)){ t_high_temp = xpp.getAttributeValue(0); }else if("condition".equals(tag)){ t_condition = xpp.getAttributeValue(0); //予報は本日分だけ取得するのでループを抜ける loop_break = true; } } }while(xpp.getDepth() == 4); } if(loop_break) break; } } reader.close();// BufferedReader を閉じる inBuffer.close();// BufferedInputStream を閉じる http.disconnect();// HttpURLConnection切断
HttpURLConnection(API Level1-)
Ref.) Android Developers>HttpURLConnection
XmlPullParser(API Level1-)
Ref.) Android Developers>XmlPullParser
BufferedInputStream(API Level1-)
Ref.) Android Developers>BufferedInputStream
BufferedReader (API Level1-)
Ref.) Android Developers>BufferedReader