欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Android中加入百度地圖SDK

公司要做的項(xiàng)目需要使用到百度地圖。來(lái)學(xué)習(xí)一下關(guān)于百度地圖如何使用。
要使用百度地圖,需要先注冊(cè)一個(gè)百度賬號(hào),獲取到地圖的SDK和秘鑰,導(dǎo)入到自己的項(xiàng)目中才能使用。

專(zhuān)注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)蓮湖免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

秘鑰和SDK

秘鑰的申請(qǐng)需要項(xiàng)目的包名和SHA1值。所以,需要先創(chuàng)建好項(xiàng)目再進(jìn)行秘鑰的申請(qǐng)。

申請(qǐng)秘鑰

要申請(qǐng)秘鑰需要到百度地圖開(kāi)放平臺(tái)申請(qǐng)。當(dāng)然,百度有提供相應(yīng)的教程,步驟我就不再列出來(lái)了。這邊需要注意的是創(chuàng)建應(yīng)用的時(shí)候。

應(yīng)用類(lèi)型,因?yàn)槲沂窃贏ndroid上開(kāi)發(fā)的,所以選的是Android SDK。數(shù)字簽名(SHA1)的值使用的是簽名文件的SHA1的值,因?yàn)槲覜](méi)有導(dǎo)出APK測(cè)試,直接運(yùn)行到手機(jī)上,所以用的是測(cè)試證書(shū),測(cè)試證書(shū)的SHA1可以在eclipse中的Window-preferences中的Android-Build獲取。包名則是在清單文件AndroidManifest.xml中的package。我創(chuàng)建的項(xiàng)目是FreeMap,包名是“com.jarvis.freemap”。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jarvis.freemap"    android:versionCode="1"    android:versionName="1.0" >

應(yīng)用創(chuàng)建完畢后,就可以得到秘鑰了。

下載SDK

百度SDK下載

這個(gè)根據(jù)自己的需求下載相應(yīng)的開(kāi)發(fā)包就可以了。我因?yàn)橄胧煜ひ幌掳俣鹊貓D,所以下了全部的開(kāi)發(fā)包。開(kāi)發(fā)包下完后是導(dǎo)入到項(xiàng)目的lib中的。

必要的配置

權(quán)限添加

要使用百度地圖,需要額權(quán)限可不少,權(quán)限需添加到清單文件中AndroidManifest.xml中,需要的權(quán)限有

<!-- 這個(gè)權(quán)限用于進(jìn)行網(wǎng)絡(luò)定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 這個(gè)權(quán)限用于訪問(wèn)GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 用于訪問(wèn)wifi網(wǎng)絡(luò)信息,wifi信息會(huì)用于進(jìn)行網(wǎng)絡(luò)定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 獲取運(yùn)營(yíng)商信息,用于支持提供運(yùn)營(yíng)商信息相關(guān)的接口 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會(huì)用來(lái)進(jìn)行網(wǎng)絡(luò)定位 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><!-- 用于讀取手機(jī)當(dāng)前的狀態(tài) --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 寫(xiě)入擴(kuò)展存儲(chǔ),向擴(kuò)展卡寫(xiě)入數(shù)據(jù),用于寫(xiě)入離線定位數(shù)據(jù) --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 訪問(wèn)網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng) --><uses-permission android:name="android.permission.INTERNET" /><!-- SD卡讀取權(quán)限,用戶寫(xiě)入離線定位數(shù)據(jù) --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

服務(wù)添加

需要添加一個(gè)百度的遠(yuǎn)程服務(wù)到清單文件中的application中

<service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote" ></service>

添加秘鑰

秘鑰也是在清單文件中的application中添加

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="your api-key" />

測(cè)試

百度提供的測(cè)試方法是創(chuàng)建一個(gè)mapView,運(yùn)行看是否有生成地圖來(lái)測(cè)試是否配置正確。我們這邊要進(jìn)行的是定位測(cè)試,以文本形式展現(xiàn)出來(lái)。官方有提供相應(yīng)的demo可參考。

添加默認(rèn)配置

對(duì)定位的一些基本參數(shù)進(jìn)行配置,需要修改配置的話也是在這個(gè)類(lèi)中進(jìn)行修改。

public class LocationService {private LocationClient client = null;private LocationClientOption mOption,DIYoption;private Object  objLock = new Object(); 
/***
 * 
 * @param locationContext
 */public LocationService(Context locationContext){synchronized (objLock) {if(client == null){
client = new LocationClient(locationContext);
client.setLocOption(getDefaultLocationClientOption());
}
}
} 
/***
 * 
 * @param listener
 * @return
 */
 public boolean registerListener(BDLocationListener listener){boolean isSuccess = false;if(listener != null){
client.registerLocationListener(listener);
isSuccess = true;
}return  isSuccess;
} 
public void unregisterListener(BDLocationListener listener){if(listener != null){
client.unRegisterLocationListener(listener);
}
} 
/***
 * @param option
 * @return isSuccessSetOption
 */public boolean setLocationOption(LocationClientOption option){boolean isSuccess = false;if(option != null){if(client.isStarted())
client.stop();
DIYoption = option;
client.setLocOption(option);
}return isSuccess;
} 
public LocationClientOption getOption(){return DIYoption;
}/***
 * @return DefaultLocationClientOption
 */public LocationClientOption getDefaultLocationClientOption(){if(mOption == null){
mOption = new LocationClientOption();
mOption.setLocationMode(LocationMode.Hight_Accuracy);//可選,默認(rèn)高精度,設(shè)置定位模式,高精度,低功耗,僅設(shè)備mOption.setCoorType("bd09ll");//可選,默認(rèn)gcj02,設(shè)置返回的定位結(jié)果坐標(biāo)系,如果配合百度地圖使用,建議設(shè)置為bd09ll;mOption.setScanSpan(3000);//可選,默認(rèn)0,即僅定位一次,設(shè)置發(fā)起定位請(qǐng)求的間隔需要大于等于1000ms才是有效的
    mOption.setIsNeedAddress(true);//可選,設(shè)置是否需要地址信息,默認(rèn)不需要
    mOption.setIsNeedLocationDescribe(true);//可選,設(shè)置是否需要地址描述
    mOption.setNeedDeviceDirect(false);//可選,設(shè)置是否需要設(shè)備方向結(jié)果
    mOption.setLocationNotify(false);//可選,默認(rèn)false,設(shè)置是否當(dāng)gps有效時(shí)按照1S1次頻率輸出GPS結(jié)果
    mOption.setIgnoreKillProcess(true);//可選,默認(rèn)true,定位SDK內(nèi)部是一個(gè)SERVICE,并放到了獨(dú)立進(jìn)程,設(shè)置是否在stop的時(shí)候殺死這個(gè)進(jìn)程,默認(rèn)不殺死   
    mOption.setIsNeedLocationDescribe(true);//可選,默認(rèn)false,設(shè)置是否需要位置語(yǔ)義化結(jié)果,可以在BDLocation.getLocationDescribe里得到,結(jié)果類(lèi)似于“在北京天安門(mén)附近”
    mOption.setIsNeedLocationPoiList(true);//可選,默認(rèn)false,設(shè)置是否需要POI結(jié)果,可以在BDLocation.getPoiList里得到
    mOption.SetIgnoreCacheException(false);//可選,默認(rèn)false,設(shè)置是否收集CRASH信息,默認(rèn)收集}return mOption;
} 
public void start(){synchronized (objLock) {if(client != null && !client.isStarted()){
client.start();
}
}
}public void stop(){synchronized (objLock) {if(client != null && client.isStarted()){
client.stop();
}
}
}
 
}

主要邏輯

展示頁(yè)面上只添加一個(gè)Button和一個(gè)TextView兩個(gè)組件。在進(jìn)行使用之前也需要一些必要的初始化,這里為了簡(jiǎn)便,全部都整合到了同一個(gè)Activity類(lèi)中,項(xiàng)目中使用的話,不建議這么寫(xiě)。

初始化SDK

在使用之前需要先初始化一下百度sdk。這個(gè)初始化建議在自定義的Applicaition中進(jìn)行。需要注意的是,初始化SDK必須在setContentView()之前進(jìn)行。

locationService = new LocationService(getApplicationContext());
mVibrator =(Vibrator)getApplicationContext().getSystemService(Service.VIBRATOR_SERVICE);
SDKInitializer.initialize(getApplicationContext());

監(jiān)聽(tīng)的方法

這邊我是直接拷貝demo中的方法來(lái)使用,也可根據(jù)自己的需要進(jìn)行修改。

private BDLocationListener mListener = new BDLocationListener() {
 
@Override
public void onReceiveLocation(BDLocation location) {if(null != location && location.getLocType() != BDLocation.TypeServerError){
StringBuffer sb = new StringBuffer(256);
sb.append("time: ");/**
 * 時(shí)間也可以使用systemClock.elapsedRealtime()方法 獲取的是自從開(kāi)機(jī)以來(lái),每次回調(diào)的時(shí)間;
 * location.getTime() 是指服務(wù)端出本次結(jié)果的時(shí)間,如果位置不發(fā)生變化,則時(shí)間不變
 */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());
sb.append("\nCountryCode : ");
sb.append(location.getCountryCode());
sb.append("\nCountry : ");
sb.append(location.getCountry());
sb.append("\ncitycode : ");
sb.append(location.getCityCode());
sb.append("\ncity : ");
sb.append(location.getCity());
sb.append("\nDistrict : ");
sb.append(location.getDistrict());
sb.append("\nStreet : ");
sb.append(location.getStreet());
sb.append("\naddr : ");
sb.append(location.getAddrStr());
sb.append("\nDescribe: ");
sb.append(location.getLocationDescribe());
sb.append("\nDirection(not all devices have value): ");
sb.append(location.getDirection());
sb.append("\nPoi: "); 
if(location.getPoiList() != null && !location.getPoiList().isEmpty()){for (int i = 0; i < location.getPoiList().size(); i++) {
Poi poi = (Poi) location.getPoiList().get(i);
sb.append(poi.getName() +";");
}
} 
if(location.getLocType() == BDLocation.TypeGpsLocation){//GPS定位結(jié)果sb.append("\nspeed : ");
sb.append(location.getSpeed());// 單位:km/hsb.append("\nsatellite : ");
sb.append(location.getSatelliteNumber());
sb.append("\nheight : ");
sb.append(location.getAltitude());// 單位:米sb.append("\ndescribe : ");
sb.append("gps定位成功");
}else if(location.getLocType() == BDLocation.TypeNetWorkLocation){// 網(wǎng)絡(luò)定位結(jié)果// 運(yùn)營(yíng)商信息sb.append("\noperationers : ");
sb.append(location.getOperators());
sb.append("\ndescribe : ");
sb.append("網(wǎng)絡(luò)定位成功");
}else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 離線定位結(jié)果sb.append("\ndescribe : ");
sb.append("離線定位成功,離線定位結(jié)果也是有效的");
} else if (location.getLocType() == BDLocation.TypeServerError) {
sb.append("\ndescribe : ");
sb.append("服務(wù)端網(wǎng)絡(luò)定位失敗,可以反饋IMEI號(hào)和大體定位時(shí)間到loc-bugs@baidu.com,會(huì)有人追查原因");
} else if (location.getLocType() == BDLocation.TypeNetWorkException) {
sb.append("\ndescribe : ");
sb.append("網(wǎng)絡(luò)不同導(dǎo)致定位失敗,請(qǐng)檢查網(wǎng)絡(luò)是否通暢");
} else if (location.getLocType() == BDLocation.TypeCriteriaException) {
sb.append("\ndescribe : ");
sb.append("無(wú)法獲取有效定位依據(jù)導(dǎo)致定位失敗,一般是由于手機(jī)的原因,處于飛行模式下一般會(huì)造成這種結(jié)果,可以試著重啟手機(jī)");
}
logMsg(sb.toString());
}
}
};

注冊(cè)與注銷(xiāo)監(jiān)聽(tīng)

用Activity的生命周期,對(duì)監(jiān)聽(tīng)進(jìn)行注冊(cè)和注銷(xiāo)

/***
 * Stop location service
 */@Overrideprotected void onStop() {// TODO Auto-generated method stublocationService.unregisterListener(mListener); //注銷(xiāo)掉監(jiān)聽(tīng)locationService.stop(); //停止定位服務(wù)super.onStop();
}@Overrideprotected void onStart() {super.onStart();//location configlocationService.registerListener(mListener);//注冊(cè)監(jiān)聽(tīng)int type = getIntent().getIntExtra("from", 0);if(type == 0){
locationService.setLocationOption(locationService.getDefaultLocationClientOption());
}else if(type == 1){
locationService.setLocationOption(locationService.getOption());
}
 
getLocation.setOnClickListener(new OnClickListener() { 
@Overridepublic void onClick(View v) {if(getLocation.getText().toString().equals("單點(diǎn)定位")){
locationService.start();
getLocation.setText("定位ING");
}else{
locationService.stop();
getLocation.setText("單點(diǎn)定位");
}
}
});
}

獲取信息展現(xiàn)

public void logMsg(String str) {try {if (showLocation != null){
showLocation.setText(str);
}
} catch (Exception e) {
e.printStackTrace();
}
}

文章題目:Android中加入百度地圖SDK
網(wǎng)頁(yè)地址:http://chinadenli.net/article18/gidodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、Google、企業(yè)建站、建站公司

廣告

聲明:本網(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)頁(yè)設(shè)計(jì)公司