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

来源:互联网 发布:淘宝是什么时候成立的 编辑:程序博客网 时间:2024/05/21 14:07

          笔者最近几天在正在写一个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{@Overridepublic void onReceiveLocation(BDLocation arg0) {// TODO Auto-generated method stubLog.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()+"");}}@Overridepublic 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();


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

这里提供例子的源码下载:点击打开链接


原创粉丝点击