国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android使用百度地圖SDK獲取定位信息示例

2019-12-12 03:46:35
字體:
來源:轉載
供稿:網友

本文使用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文件中聲明權限:

<uses-permission android:name="android.permission.INTERNET"/>  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <!--網絡定位-->  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  <!--GPS定位-->  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

并在application標簽中添加如下內容:

 <meta-data      android:name="com.baidu.lbsapi.API_KEY"      android:value="你申請的API key" />    <service      android:name="com.baidu.location.f"      android:enabled="true"      android:process=":remote" />

第六步,測試代碼,獲取定位信息:

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<Poi> 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());    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁晋县| 搜索| 通州区| 青岛市| 互助| 宿州市| 白沙| 浏阳市| 银川市| 开鲁县| 和顺县| 临夏市| 蓬溪县| 盖州市| 霍城县| 石城县| 渭南市| 乌拉特中旗| 白银市| 南丹县| 临猗县| 盘山县| 宝丰县| 阆中市| 都江堰市| 合阳县| 隆子县| 兖州市| 冀州市| 本溪| 鄂温| 永安市| 桂平市| 宝应县| 呼图壁县| 新干县| 伊川县| 平乐县| 铜梁县| 临朐县| 安平县|