0
我有這樣的代碼。 這是創建如何使用weather API和Location Manager togethaer?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mgr=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener ll=new mylocatoinlis();
mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,3600l,0,ll);
}
這個位置監聽器類
protected class mylocatoinlis implements LocationListener {
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if(location!=null)
{
double plong=location.getLongitude();
double plate=location.getLatitude();
//Log.i("MyLocation",Double.toString(plate)+" "+Double.toString(plong));
ingformation(plate,plong);
}
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
這是JSON包裝函數
public void ingformation(double plate, double plong) {
// TODO Auto-generated method stub
try
{
client=new DefaultHttpClient();
StringBuilder url1=new StringBuilder(URL);
url1.append(plate+","+plong+".json");
HttpGet get=new HttpGet(url1.toString());
HttpResponse r=client.execute(get);
int status=r.getStatusLine().getStatusCode();
if(status==200){
HttpEntity e=r.getEntity();
String data=EntityUtils.toString(e);
obj= new JSONObject(data);
main=obj.getJSONObject("current_observation");
maintemp=main.getJSONObject("display_location");
tv1.setText(" "+maintemp.getString("city"));
tv3.setText(" "+main.getString("weather"));
tv2.setText(" "+main.getString("temp_c")+" C");
String imageName=main.getString("icon_url");
//String imageName1.append("nt_"+imageName);
//im.setImageURI(Uri.parse(url1.toString()+imageName));
if(imageName!="")
{
wv.setVisibility(View.VISIBLE);
wv.loadUrl(imageName);
}
else
{
wv.setVisibility(View.INVISIBLE);
}
//wv.loadUrl(imageName);
}
}catch(Exception e)
{
Log.e("JSON Parser", "Unable to connect" + e.toString());
}
}
,如果我通過DDMS傳位置提示錯誤像NetworkOnMainThread例外。 請幫我我卡住b/w位置和json。
但如何將經度和緯度傳遞給異步任務? – Shreesha
是的,你說的是正確的。但我怎麼能從onLocationChanged返回一個數組,它不支持返回值。 – Shreesha
使用回調。如果將異步任務更改爲,然後將doInBackground返回類型更改爲Object,並將onPostExecute參數更改爲Object,則可以將Object傳遞給Callback.go方法並返回該值。 –
Phil