成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Android中怎么使用百度定位SDK方法

這篇文章將為大家詳細(xì)講解有關(guān)Android中怎么使用百度定位SDK方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、綏芬河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為綏芬河等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

1、首先***步就是搭配環(huán)境:

①先將百度demo中的libs文件夾復(fù)制到自己的工程。(別忘記把jar包build path)

②然后復(fù)制

<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.6"></action>     </intent-filter> </service>

到manifest的application節(jié)點(diǎn)。

接下來(lái)復(fù)制百度地位SDK需要的permission

       <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>

③ 接下來(lái)就可以在代碼中放心的使用百度定位SDK了。

下面是來(lái)自百度的提醒,需要注意的是第五條,因?yàn)槲覀?**次經(jīng)常定位不到位置:

1、您需要確保程序編譯通過(guò)。如果對(duì)自己寫(xiě)的代碼有疑問(wèn),可以下載官方高級(jí)示例,查看標(biāo)準(zhǔn)源代碼。

2、請(qǐng)確保網(wǎng)絡(luò)通暢,無(wú)論是連接wifi還是使用2G/3G信號(hào)。

3、定位SDK的調(diào)用必須在主線程中。

4、必須在定位SDK啟動(dòng)前設(shè)定好參數(shù),例如是否使用GPS,掃描時(shí)間間隔設(shè)置等。我們強(qiáng)烈建議您設(shè)置自己的prodName,并保管好,這樣方便我們?yōu)槟峁└玫亩ㄎ环?wù)。

5、定位SDK start之后立即執(zhí)行,這種情況下很難定位成功,因?yàn)槎ㄎ籗DK剛開(kāi)始啟動(dòng)還沒(méi)有獲取到定位信息。這時(shí)getlocation一般為null。如果是要獲取位置成功,可以在listerner中添加一個(gè)判斷如果strData為空,則再發(fā)起一次定位。

6、定位覆蓋率大概在98%。就是說(shuō)有2%可能服務(wù)器沒(méi)有數(shù)據(jù),所以定位會(huì)失敗。只需要走到別的地方,或者多試幾次即可成功定位。

7、請(qǐng)使用真機(jī)。在虛擬機(jī)上無(wú)法進(jìn)行定位測(cè)試。

下面就是我的事例代碼:

具體思路是:將開(kāi)啟和獲取位置的代碼分開(kāi)來(lái)做,可以在程序剛開(kāi)啟的時(shí)候就start。因?yàn)閾?jù)上面所說(shuō),有時(shí)候可能兩分鐘才能獲取到位置,對(duì)于我們需要展示信息來(lái)說(shuō),這是絕對(duì)不可以的。如果在主線程卡兩分鐘后果可想而知的。

需要說(shuō)名的是:我這里沒(méi)有設(shè)置時(shí)間間隔public void setScanSpan ( int ) //設(shè)置定時(shí)定位的時(shí)間間隔。單位ms,如果不設(shè)置或者所設(shè)置的整數(shù)值小于1000(ms)時(shí),采用***次定位模式。

每調(diào)用一次requestLocatin(),定位SDK會(huì)發(fā)起一次定位。請(qǐng)求定位與監(jiān)聽(tīng)結(jié)果一一對(duì)應(yīng);如果所設(shè)的整數(shù)值大于等于1000(ms)時(shí),定位SDK內(nèi)部使用定時(shí)定位模式。

調(diào)用requestLocation( )后,每隔設(shè)定的時(shí)間,定位SDK就會(huì)進(jìn)行一次定位。如果定位SDK根據(jù)定位依據(jù)發(fā)現(xiàn)位置沒(méi)有發(fā)生變化,就不會(huì)發(fā)起網(wǎng)絡(luò)請(qǐng)求,返回上一次定位的結(jié)果;如果發(fā)現(xiàn)位置改變,就進(jìn)行網(wǎng)絡(luò)請(qǐng)求進(jìn)行定位,得到新的定位結(jié)果。

定時(shí)定位時(shí),調(diào)用一次requestLocation,會(huì)定時(shí)監(jiān)聽(tīng)到定位結(jié)果。設(shè)定了定時(shí)定位后,可以熱切換成一次定位,需要重新設(shè)置時(shí)間間隔小于1000(ms)即可。locationClient對(duì)象stop后,將不再進(jìn)行定位。 如果設(shè)定了定時(shí)定位模式后,多次調(diào)用requestLocation(),則是每隔一段時(shí)間進(jìn)行一次定位,同時(shí)額外的定位請(qǐng)求也會(huì)進(jìn)行定位,但頻率不會(huì)超過(guò)1秒一次。

import android.content.Context;  import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.palmdeal.entity.LocationInfo.SItude; import com.palmdeal.util.Logger;  public class LocationProvider {     private static LocationClient mLocationClient = null;      private static SItude station = new SItude();     private static MyBDListener listener = new MyBDListener();      Context context;      public LocationProvider(Context context) {         super();         this.context = context;     }      public void startLocation() {         mLocationClient = new LocationClient(context);         LocationClientOption option = new LocationClientOption();         option.setOpenGps(true); // 打開(kāi)gps         option.setCoorType("bd09ll"); // 設(shè)置坐標(biāo)類型為bd09ll         option.setPriority(LocationClientOption.NetWorkFirst); // 設(shè)置網(wǎng)絡(luò)優(yōu)先         option.setProdName("demo"); // 設(shè)置產(chǎn)品線名稱         mLocationClient.setLocOption(option);         mLocationClient.registerLocationListener(listener);         mLocationClient.start();//將開(kāi)啟與獲取位置分開(kāi),就可以盡量的在后面的使用中獲取到位置     }      /**      * 停止,減少資源消耗      */     public void stopListener() {         if (mLocationClient != null && mLocationClient.isStarted()) {             mLocationClient.stop();             mLocationClient = null;         }     }      /**      * 更新位置并保存到SItude中      */     public void updateListener() {         if (mLocationClient != null && mLocationClient.isStarted()) {             mLocationClient.requestLocation();             Logger.i("update the location");         }     }      /**      * 獲取經(jīng)緯度信息      *       * @return      */     public SItude getLocation() {         return station;     }      private static class MyBDListener implements BDLocationListener {          @Override         public void onReceiveLocation(BDLocation location) {             if (location.getCity() == null) {                 int type = mLocationClient.requestLocation();                 Logger.e("first request false" + type);             }             station.latitude = location.getLatitude();             station.longitude = location.getLongitude();         }          @Override         public void onReceivePoi(BDLocation arg0) {             // return         }      } }

在使用的時(shí)候,在一開(kāi)始就開(kāi)啟LocationClient,即調(diào)用startLocation()方法。我的是在服務(wù)服務(wù)中的onCreate中調(diào)用的,然后在代碼中這樣使用:

LocationInfo.SItude station = location.getLocation(); if (station.latitude == 0.0 && station.longitude == 0.0) {       location.updateListener();       station = location.getLocation(); } if (station.latitude == 0.0 && station.longitude == 0.0) {        return "未定位到您現(xiàn)在的位置,請(qǐng)重試"; } location.stopListener();

關(guān)于Android中怎么使用百度定位SDK方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站欄目:Android中怎么使用百度定位SDK方法
新聞來(lái)源:http://jinyejixie.com/article28/gpgcjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
孟村| 盐津县| 临沭县| 宜兰市| 大同市| 大庆市| 永登县| 桂林市| 云梦县| 石台县| 固原市| 湟中县| 连云港市| 卢湾区| 大宁县| 札达县| 淳安县| 太白县| 类乌齐县| 建始县| 呼图壁县| 临安市| 郓城县| 潞西市| 台东县| 深州市| 南宫市| 行唐县| 石河子市| 遂昌县| 安图县| 扶余县| 河津市| 辽宁省| 买车| 石城县| 安阳县| 丰镇市| 香港 | 玉山县| 平果县|