android GPS实时定位

在Android中实现GPS实时定位的方法与步骤:

第一步:到Android百度地图的官网 http://developer.baidu.com/map/sdk-android.htm 下载定位SDK(新版本的定位与百度地图不再捆绑在一起)。

将SDK拷贝到项目的libs中,其目录结构如下图所示:


第二步:编写定位监听器

定位监听器是GPS定位的核心,主要用于定位信息的采集和poi检索信息的采集。其代码如下:

public class LocationApplication extends Application {/**定位客户端**/public LocationClient mLocationClient = null ;/**定位数据**/private String mData;   // 定位数据/**显示信息的TextView**/public TextView mTv;/**定位监听器**/public MyLocationListenner myListener = new MyLocationListenner();public static String TAG = "LocTestDemo";@Overridepublic void onCreate() {  mLocationClient = new LocationClient(this) ;mLocationClient.registerLocationListener(myListener) ;super.onCreate();Log.d(TAG, "... Application onCreate... pid=" + Process.myPid());}/*** 设置textView显示的数据* @param str*/public void setLogMsg(String str) {try {mData = str;if ( mTv != null )mTv.setText(mData);} catch (Exception e) {e.printStackTrace();}}/** 定位监听器*/
public class MyLocationListenner implements BDLocationListener{/**接收异步返回的定位结果,参数是BDLocation类型参数**/@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null)return ;StringBuffer sb = new StringBuffer(256);sb.append("time : ");sb.append(location.getTime());sb.append("  \nlatitude : ");sb.append(location.getLatitude());sb.append("  \nlontitude : ");sb.append(location.getLongitude());sb.append("  \nradius : ");sb.append(location.getRadius());if (location.getLocType() == BDLocation.TypeGpsLocation){sb.append("  \nspeed : ");sb.append(location.getSpeed());sb.append("  \nsatellite : ");sb.append(location.getSatelliteNumber());} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){sb.append("  \naddr : ");sb.append(location.getAddrStr());}sb.append("\r\n") ;setLogMsg(sb.toString());Log.i(TAG, sb.toString());}/**接收异步返回的POI查询结果,参数是BDLocation类型参数**/@Overridepublic void onReceivePoi(BDLocation arg0) {// TODO Auto-generated method stubLog.d(TAG, "mLocationClient.requestLocation......") ;}  }
}

这里,locationApplication继承application的主要原因是当应用启动的时候就开启定位监听。

第三步:在Activity中设置定位的启动和停止

注意:定位客户端必须在主线程中申明。其代码如下:

public class MainActivity extends Activity {/** 定位客户端 **/private LocationClient mLocationClient = null;/**显示定位信息的TextView**/private TextView mTv = null;/**定位启动按钮**/private Button startBtn ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initView();}/** 初始化各项定位参数 **/public void initView() {startBtn = (Button) findViewById(R.id.startBtn);mTv = (TextView) findViewById(R.id.address);mLocationClient = ((LocationApplication) getApplication()).mLocationClient;((LocationApplication) getApplication()).mTv = mTv;startBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubsetLocationOption(10);mLocationClient.start()});}@Overrideprotected void onDestroy() {mLocationClient.stop();((LocationApplication) getApplication()).mTv = null;super.onDestroy();}/** 设置定位属性*/public void setLocationOption() {LocationClientOption option = new LocationClientOption();option.setPriority(LocationClientOption.NetWorkFirst);   /** 网络优先 **/option.setOpenGps(true);                /** 打开GPS **/option.setAddrType("all");              /** 要地址详细信息 **/option.setCoorType("bd09ll");           /** 坐标类型(这里为经纬坐标) **/option.setScanSpan(5*1000);               /** 设置发起定位请求的间隔时间为ms **/option.disableCache(true);              /** 禁止启用缓存定位 **/option.setPoiNumber(5);                 /** 最多返回POI个数 **/option.setPoiDistance(1000);            /** poi查询距离 **/option.setPoiExtraInfo(true);           /** 是否需要POI的电话和地址等详细信息 **/mLocationClient.setLocOption(option);}
}

第四步:在AndroidManifest,xml文件中配置相关的定位信息和权限





至此,GPS定位功能完成。打开Activity点击开始按钮,启动GPS实时定位。点击back键的时候监听服务停止。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部