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());
}
}
}
AsyncTask+HttpUrlConnection网络请求解析XML且定位
最新推荐文章于 2018-10-25 15:18:18 发布