源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android通过google api获取天气信息示例

  • 时间:2021-11-11 13:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android通过google api获取天气信息示例
android通过google API获取天气信息
[u]复制代码[/u] 代码如下:
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("读取数据中")         .setMessage("正在加载数据,请稍等")         .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("解析错误")     .setMessage("获取天气数据失败,请稍候再试。")     .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;  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部