AsyncTask+HttpUrlConnection网络请求解析XML且定位

来源:互联网 发布:乡村学生教育数据 编辑:程序博客网 时间:2024/05/16 11:42
package com.example.location;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.location.LocationClientOption.LocationMode;import com.baidu.mapapi.SDKInitializer;import com.example.adapter.MyListAdapter;import com.example.bean.Book;import com.example.bean.BookAll;import com.thoughtworks.xstream.XStream;import android.app.Activity;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity{    private TextView text;    public LocationClient mLocationClient = null;    public BDLocationListener myListener = new MyLocationListener();    String path="http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml";    List<Book> list;    ListView listview;    long mExitTime;    @Override    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);         SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        listview=(ListView) findViewById(R.id.listview);        text=(TextView) findViewById(R.id.text);        Dingwei();        new getAsyTask().execute();        listview.setOnItemClickListener(new OnItemClickListener(){            @Override            public void onItemClick(AdapterView<?> parent, View view,                    int position, long id) {                // TODO Auto-generated method stub                Intent it=new Intent(MainActivity.this,InfoActivity.class);                it.putExtra("id",list.get(position).getId());                startActivity(it);            }        });    }    //联网请求操作    private class getAsyTask extends AsyncTask<String,Integer,InputStream>{        @Override        protected InputStream doInBackground(String... params) {            // TODO Auto-generated method stub            InputStream inputStream=null;            try {                URL url=new URL(path);                try {                    HttpURLConnection connection=(HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    connection.connect();                    if(connection.getResponseCode()==200){                        inputStream=connection.getInputStream();                    }                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            } catch (MalformedURLException e){                // TODO Auto-generated catch block                e.printStackTrace();            }            return inputStream;        }        @Override        protected void onPostExecute(InputStream result){            // TODO Auto-generated method stub            super.onPostExecute(result);            initdata(result);            MyListAdapter mylistadapter=new MyListAdapter(MainActivity.this, list);            listview.setAdapter(mylistadapter);        }    }    //解析数据    private void initdata(InputStream stream){        XStream xs=new XStream();        xs.processAnnotations(BookAll.class);        BookAll bookall=(BookAll) xs.fromXML(stream);        list=bookall.getResult().getItem();    }    //设置定位    private void Dingwei(){        mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类        mLocationClient.registerLocationListener(myListener); // 注册监听函数        initLocation();        mLocationClient.start();    }    //设置定位的参数    private void initLocation(){        LocationClientOption option = new LocationClientOption();        option.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备        option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系        int span = 1000;        option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的        option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要        option.setOpenGps(true);// 可选,默认false,设置是否使用gps        option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果        option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”        option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到        option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死        option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集        option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要        mLocationClient.setLocOption(option);    }    public class MyLocationListener implements BDLocationListener{                  public void onReceiveLocation(BDLocation location) {            text.setText(location.getCity());           }    }}
0 0
原创粉丝点击