本文使用Android Studio开发。

获取定位信息相对简单,我们只需要如下几步:

第一步,注册百度账号,在百度地图开放平台新建应用、生成API_KEY。这些就不细说了,请前往这里:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key

第二步,下载sdk,地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download

第三步,建立Android Studio工程(略过不说),配置环境:

将解压后的文件放入libs文件夹下,并在src/main下建立一个叫做jniLibs的文件夹,并把解压后内的文件夹靠进去,如下图:

第四步,将BaiduLBS_Android.jar加入环境变量(右键,Add As Library),并在app的build.gradle中的android中添加:

 sourceSets {    main {      jniLibs.srcDirs = ['libs']    }  }

如图:

第五步,在AndroidManifest.xml文件中声明权限:

            

并在application标签中添加如下内容:

     

第六步,测试代码,获取定位信息:

public class MainActivity extends AppCompatActivity {  public LocationClient mLocationClient = null;  public BDLocationListener myListener = new MyLocationListener();  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    startLocate();  }  /**   * 定位   */  private void startLocate() {    mLocationClient = new LocationClient(getApplicationContext());   //声明LocationClient类    mLocationClient.registerLocationListener(myListener);  //注册监听函数    LocationClientOption option = new LocationClientOption();    option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving    );//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备    option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系    int span = 1000;    option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的    option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要    option.setOpenGps(true);//可选,默认false,设置是否使用gps    option.setLocationNotify(true);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果    option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”    option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到    option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死    option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集    option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要    mLocationClient.setLocOption(option);    //开启定位    mLocationClient.start();  }  private class MyLocationListener implements BDLocationListener {    @Override    public void onReceiveLocation(BDLocation location) {      StringBuffer sb = new StringBuffer(256);      sb.append("time : ");      sb.append(location.getTime());      sb.append("\nerror code : ");      sb.append(location.getLocType());      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) {// GPS定位结果        sb.append("\nspeed : ");        sb.append(location.getSpeed());// 单位:公里每小时        sb.append("\nsatellite : ");        sb.append(location.getSatelliteNumber());        sb.append("\nheight : ");        sb.append(location.getAltitude());// 单位:米        sb.append("\ndirection : ");        sb.append(location.getDirection());// 单位度        sb.append("\naddr : ");        sb.append(location.getAddrStr());        sb.append("\ndescribe : ");        sb.append("gps定位成功");      } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果        sb.append("\naddr : ");        sb.append(location.getAddrStr());        //运营商信息        sb.append("\noperationers : ");        sb.append(location.getOperators());        sb.append("\ndescribe : ");        sb.append("网络定位成功");      } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果        sb.append("\ndescribe : ");        sb.append("离线定位成功,离线定位结果也是有效的");      } else if (location.getLocType() == BDLocation.TypeServerError) {        sb.append("\ndescribe : ");        sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");      } else if (location.getLocType() == BDLocation.TypeNetWorkException) {        sb.append("\ndescribe : ");        sb.append("网络不同导致定位失败,请检查网络是否通畅");      } else if (location.getLocType() == BDLocation.TypeCriteriaException) {        sb.append("\ndescribe : ");        sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");      }      sb.append("\nlocationdescribe : ");      sb.append(location.getLocationDescribe());// 位置语义化信息      List list = location.getPoiList();// POI数据      if (list != null) {        sb.append("\npoilist size = : ");        sb.append(list.size());        for (Poi p : list) {          sb.append("\npoi= : ");          sb.append(p.getId() + " " + p.getName() + " " + p.getRank());        }      }      Log.e("描述:", sb.toString());    }  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. android 打造可复用的底部dialog
  2. android 控件: xml 设置 Button 按下背景
  3. android编译分析之10—config.mk
  4. 使用WindowManager实现Android悬浮窗
  5. Android败笔之ListView设置分割线颜色
  6. ListView设置的点点滴滴
  7. Ubuntu共享WiFi(AP)
  8. 主题背景色
  9. Android设置多个定时器时只有最后一个定时器有效的问题

随机推荐

  1. SpringBoot如何加载jar包外面的配置文件?
  2. 为什么HashMap要自己实现writeObject和re
  3. 【DB笔试面试823】在Oracle中,如何查看过
  4. 【DB笔试面试458】在Oracle中,如何判断一
  5. 你的也是我的。局部变量透传(深入了解Thre
  6. 【DB笔试面试642】在Oracle中,什么是基数
  7. 还在收集资料?这些github库对我帮助很大
  8. 【DB笔试面试467】Oracle中行列互换有哪
  9. 我做人工智能,我的量化策略爆仓了
  10. 【DB笔试面试265】在Oracle中,Oracle的SYS