简单的android天气预报

时间:2022-10-06 20:31:10
package com.ctl;

public class InfoUnit {
private String cityname = "";
private String time = "";
private String temper = "";
private String weather = "";
private String wind = "";

public String getCityname() {
return cityname;
}

public void setCityname(String cityname) {
this.cityname = cityname;
}

public String getTime() {
return time;
}

public void setTime(String time) {
this.time = time;
}

public String getTemper() {
return temper;
}

public void setTemper(String temper) {
this.temper = temper;
}

public String getWeather() {
return weather;
}

public void setWeather(String weather) {
this.weather = weather;
}

public String getWind() {
return wind;
}

public void setWind(String wind) {
this.wind = wind;
}
}


主要通过webservice获取相关城市的json格式数据信息,再解析json

//城市天气信息javabean

package com.ctl;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class MainActivity extends Activity {

private Button btn = null;
private Spinner spinner = null;
private TextView textview = null;
private ProgressDialog pd = null;

private String cityname = "";
private String[] citylist = { "北京", "上海", "广州", "深圳", "南京", "南昌", "九江",
"海口", "大连", "赣州","温哥华" ,"漠河","乌鲁木齐"};

// webservice相关参数
private static final String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
private static final String NAME_SPACE = "http://WebXml.com.cn/";
private static final String METHOD_NAME = "getWeatherbyCityName";
private static final String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
private SoapObject result = null;

private InfoUnit iu = new InfoUnit();

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

initParts();
initSpinner();
initBtn();
}

/**
* 初始化控件
*/
private void initParts() {
btn = (Button) findViewById(R.id.btn);
textview = (TextView) findViewById(R.id.message);
spinner = (Spinner) findViewById(R.id.cityname);
}

/**
* 初始化spinner
*/
private void initSpinner() {

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, citylist);
adapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(spinner_listener);
}

// spinner的事件监听器
AdapterView.OnItemSelectedListener spinner_listener = new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
cityname = citylist[position].toString();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(MainActivity.this, "请选择城市", Toast.LENGTH_SHORT)
.show();
}
};

/**
* 初始化按钮
*/
private void initBtn() {
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
pd = new ProgressDialog(MainActivity.this);
pd.setMessage("信息获取中...");
pd.show();
new WsasyncWork().execute(null);
pd.dismiss();
}
});
}

/**
* 与webservice通信的后台程序
*/
class WsasyncWork extends AsyncTask {

@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
try {
System.out.println("-------");
SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);
request.addProperty("theCityName", cityname);
Log.e("TAG", cityname);
SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelop.dotNet = true;
envelop.setOutputSoapObject(request);

HttpTransportSE ht = new HttpTransportSE(URL);
ht.debug = true;
ht.call(SOAP_ACTION, envelop);

result = (SoapObject) envelop.getResponse();
parseWeather(result);
textview.post(new Runnable() {

@Override
public void run() {
textview.setText("城市名:"+iu.getCityname()+"\n"+"温度:"+iu.getTemper()+"\n"
+"发布时间:"+iu.getTime()+"\n"+"风力:"+iu.getWind()+"\n"+"天气:"+iu.getWeather());
}
});
} catch (Exception e) {
Log.e("TAG", "与webservice通信失败.....");
}

return result;
}

}

/**
* 解析返回的数据
*/
private void parseWeather(SoapObject soapObject) {
iu.setCityname(soapObject.getProperty(1).toString());
iu.setTemper(soapObject.getProperty(5).toString());
iu.setTime(soapObject.getProperty(4).toString());
iu.setWeather(soapObject.getProperty(6).toString());
iu.setWind(soapObject.getProperty(7).toString());
}
}

//在异步类中实现数据的获取

  <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
//网络权限
 
//需要导入ksoap包