笔者最近几天在正在写一个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"); //设置坐标系类型。
mLocationClient.setLocOption(option);
4.启动定位
mLocationClient.start();
mLocationClient.requestLocation();
总结:我这个例子只是基本的功能,还有一些比如,设置自动刷新时间的功能,请大家自己看官方文档吧,就在上面的官方下载地址页面的。
这里提供例子的源码下载:点击打开链接