700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android GPS实时定位

android GPS实时定位

时间:2024-04-19 13:14:18

相关推荐

android GPS实时定位

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

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

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

第二步:编写定位监听器

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

</pre><pre name="code" class="java">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(WorkFirst); /** 网络优先 **/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文件中配置相关的定位信息和权限

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package=".gpslogs"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" /><applicationandroid:name=".gpslogs.LocationApplication"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 百度地图定位服务 --><serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote" ></service></application><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.READ_LOGS" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /></manifest>

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。