关于Android中运用定位的解决方案
关于Android中使用定位的解决方案。
2.新建一个内部类MyLinstener
4.启动定位
笔者最近几天在正在写一个Android下定位的程序,最开始用网上的常规方法,使用Google的API定位发现很不好用,而且经常定不出来。
后来使用百度的定位API很方便 而且定位速度快,比较精准。 感叹啊,百度终于有地方超过Google了。。。
这里是百度定位API的下载地址:点击打开链接
下面来说下使用方法:
1.在AndroidManifest.xml中添加如下权限:
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission>
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
以及添加Service
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" android:permission="android.permission.BAIDU_LOCATION_SERVICE"> <intent-filter> <action android:name="com.baidu.location.service_v2.4"></action> </intent-filter> </service>
2.新建一个内部类MyLinstener
public class MyLinstener implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation arg0) { // TODO Auto-generated method stub Log.i("纬度", arg0.getLatitude()+""); Log.i("经度", arg0.getLongitude()+""); Log.i("精度半径", arg0.getRadius()+""); if(arg0.getLocType()==BDLocation.TypeGpsLocation){ //卫星定位的结果 Log.i("速度", arg0.getSpeed()+""); Log.i("卫星代号", arg0.getSatelliteNumber()+""); } if (arg0.getLocType()==BDLocation.TypeNetWorkLocation) { //网络定位的结果 Log.i("地址", arg0.getAddrStr()+""); } } @Override public void onReceivePoi(BDLocation arg0) { // TODO Auto-generated method stub } }
3.定义变量并初始化
public LocationClient mLocationClient=null; public BDLocationListener mListener=new MyLinstener();初始化
mLocationClient=new LocationClient(this); mLocationClient.registerLocationListener(mListener); LocationClientOption option=new LocationClientOption(); option.setOpenGps(true); //启动Gps,注:手机上的GPs开关必须由用户自己打开。 option.disableCache(true); //设置是否不缓存结果 option.setCoorType("gcj02"); //设置坐标系类型。 option.setServiceName("com.baidu.location.service_v2.ss"); //这个属性一定要设置 不然找不到服务就无法定位 mLocationClient.setLocOption(option);
4.启动定位
mLocationClient.start(); mLocationClient.requestLocation();
总结:我这个例子只是基本的功能,还有一些比如,设置自动刷新时间的功能,请大家自己看官方文档吧,就在上面的官方下载地址页面的。
这里提供例子的源码下载:点击打开链接