您的位置:首页 > 移动开发 > Android开发

关于Android中使用定位的解决方案。

2012-08-09 11:35 525 查看
笔者最近几天在正在写一个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();


总结:我这个例子只是基本的功能,还有一些比如,设置自动刷新时间的功能,请大家自己看官方文档吧,就在上面的官方下载地址页面的。

这里提供例子的源码下载:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: