日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航

發(fā)布時間:2023/12/10 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、首先到百度地圖開放平臺創(chuàng)建應(yīng)用,獲取應(yīng)用AK

http://lbsyun.baidu.com/apiconsole/key

2、到百度語言平臺創(chuàng)建應(yīng)用,獲取Secret Key和語言APP ID

http://yuyin.baidu.com/app

?

3、到百度地圖開放平臺下載Android 導(dǎo)航SDK

https://pan.baidu.com/s/1z1cSWmkcE8kHhAXUVL4Ebw

?

4、修改ak和sk 和APP ID 還有使用你的keystore打包即可完成百度內(nèi)置導(dǎo)航接入

配置你的ak,sk

?

配置你的APP ID

?

?配置你的簽名

?

?

demo 鏈接:https://pan.baidu.com/s/1z1cSWmkcE8kHhAXUVL4Ebw

密碼:在線回復(fù)QQ1085220040

在線回復(fù)bug.QQ1085220040

?

運(yùn)行即可:

?

2、高德地圖內(nèi)置導(dǎo)航實(shí)現(xiàn)——比集成百度內(nèi)置導(dǎo)航方便,建議使用

?

申請key:https://lbs.amap.com/

?

實(shí)現(xiàn)demo:https://download.csdn.net/download/meixi_android/12704895?

?

在線bug交流:扣扣1085220040

?

package com.example.ampnavigation;import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.KeyEvent;import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity;import com.amap.api.maps.model.Circle; import com.amap.api.maps.model.CircleOptions; import com.amap.api.maps.model.LatLng; import com.amap.api.navi.AMapNavi; import com.amap.api.navi.AMapNaviListener; import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewListener; import com.amap.api.navi.AMapNaviViewOptions; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.AMapCalcRouteResult; import com.amap.api.navi.model.AMapLaneInfo; import com.amap.api.navi.model.AMapModelCross; import com.amap.api.navi.model.AMapNaviCameraInfo; import com.amap.api.navi.model.AMapNaviCross; import com.amap.api.navi.model.AMapNaviInfo; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.AMapNaviRouteNotifyData; import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo; import com.amap.api.navi.model.AMapServiceAreaInfo; import com.amap.api.navi.model.AimLessModeCongestionInfo; import com.amap.api.navi.model.AimLessModeStat; import com.amap.api.navi.model.NaviInfo; import com.amap.api.navi.model.NaviLatLng; import com.autonavi.tbt.TrafficFacilityInfo;import java.util.ArrayList; import java.util.List;public class NaviActivity extends AppCompatActivity {private AMapNaviView mAMapNaviView;private AMapNavi mAMapNavi;protected AlertDialog.Builder builder;protected AlertDialog dialog;private String las,los;private int fwint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_navi);las = getIntent().getStringExtra("las");los = getIntent().getStringExtra("los");fwint = getIntent().getIntExtra("fw",0);//獲取 AMapNaviView 實(shí)例mAMapNaviView = findViewById(R.id.navi_view);//獲取AMapNavi實(shí)例mAMapNavi = AMapNavi.getInstance(getApplicationContext()); // mAMapNavi.setUseInnerVoice(true);mAMapNavi.setUseInnerVoice(true,true);AMapNaviViewOptions options = mAMapNaviView.getViewOptions();//隱藏SDK默認(rèn)的布局 // options.setLayoutVisible(false); // options.setTrafficBarEnabled(true);mAMapNaviView.setViewOptions(options);mAMapNavi.setMultipleRouteNaviMode(true);mAMapNaviView.setAMapNaviViewListener(new AMapNaviViewListener() {@Overridepublic void onNaviSetting() {}@Overridepublic void onNaviCancel() {finish();Log.i("lgq","cancel");}@Overridepublic boolean onNaviBackClick() {Log.i("lgq","cancelback");showNavBackDialog();return true;}@Overridepublic void onNaviMapMode(int i) {}@Overridepublic void onNaviTurnClick() {}@Overridepublic void onNextRoadClick() {}@Overridepublic void onScanViewButtonClick() {}@Overridepublic void onLockMap(boolean b) {}@Overridepublic void onNaviViewLoaded() {}@Overridepublic void onMapTypeChanged(int i) {}@Overridepublic void onNaviViewShowMode(int i) {}});mAMapNaviView.onCreate(savedInstanceState);//添加監(jiān)聽回調(diào),用于處理算路成功mAMapNavi.addAMapNaviListener(new AMapNaviListener() {@Overridepublic void onInitNaviFailure() {}@Overridepublic void onInitNaviSuccess() {final double startLatitude = 22.991262;final double startLongitude = 113.707716;final double targetLatitude = 23.001662;final double targetLongitude = 113.607816;//navigate(targetLatitude,targetLongitude);/*** 方法:* int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute);* 參數(shù):* @congestion 躲避擁堵* @avoidhightspeed 不走高速* @cost 避免收費(fèi)* @hightspeed 高速優(yōu)先* @multipleroute 多路徑** 說明:* 以上參數(shù)都是boolean類型,其中multipleroute參數(shù)表示是否多條路線,如果為true則此策略會算出多條路線。* 注意:* 不走高速與高速優(yōu)先不能同時為true* 高速優(yōu)先與避免收費(fèi)不能同時為true*/int strategy = 0;try {strategy = mAMapNavi.strategyConvert(true, false, false, false, false);} catch (Exception e) {e.printStackTrace();}List<NaviLatLng> sList = new ArrayList<NaviLatLng>() {{add(new NaviLatLng(startLatitude, startLongitude));}};List<NaviLatLng> eList = new ArrayList<NaviLatLng>() {{add(new NaviLatLng(targetLatitude, targetLongitude));}};List<NaviLatLng> mWayPointList = null;mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy);/*繪制圓*/int alpha = 160;Circle circle = mAMapNaviView.getMap().addCircle(new CircleOptions().center(new LatLng(targetLatitude, targetLongitude)).radius(1000).fillColor(Color.argb(alpha, 10, 200, 1)).fillColor(Color.parseColor("#19999999")).strokeColor(Color.parseColor("#33df6e50")).strokeWidth(10));}@Overridepublic void onStartNavi(int i) {}@Overridepublic void onTrafficStatusUpdate() {}@Overridepublic void onLocationChange(AMapNaviLocation aMapNaviLocation) {}@Overridepublic void onGetNavigationText(int i, String s) {Log.i("lgq","文字啦啦啦 ==== "+s);}@Overridepublic void onGetNavigationText(String s) {Log.i("lgq","文字啦eeee啦啦 ==== "+s);}@Overridepublic void onEndEmulatorNavi() {}@Overridepublic void onArriveDestination() {}@Overridepublic void onCalculateRouteFailure(int i) {}@Overridepublic void onReCalculateRouteForYaw() {}@Overridepublic void onReCalculateRouteForTrafficJam() {}@Overridepublic void onArrivedWayPoint(int i) {}@Overridepublic void onGpsOpenStatus(boolean b) {}@Overridepublic void onNaviInfoUpdate(NaviInfo naviInfo) {}@Overridepublic void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {}@Overridepublic void updateCameraInfo(AMapNaviCameraInfo[] aMapNaviCameraInfos) {}@Overridepublic void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) {}@Overridepublic void onServiceAreaUpdate(AMapServiceAreaInfo[] aMapServiceAreaInfos) {}@Overridepublic void showCross(AMapNaviCross aMapNaviCross) {}@Overridepublic void hideCross() {}@Overridepublic void showModeCross(AMapModelCross aMapModelCross) {}@Overridepublic void hideModeCross() {}@Overridepublic void showLaneInfo(AMapLaneInfo[] aMapLaneInfos, byte[] bytes, byte[] bytes1) {}@Overridepublic void showLaneInfo(AMapLaneInfo aMapLaneInfo) {}@Overridepublic void hideLaneInfo() {}@Overridepublic void onCalculateRouteSuccess(int[] ints) {mAMapNavi.startNavi(NaviType.GPS);}@Overridepublic void notifyParallelRoad(int i) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {}@Overridepublic void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {}@Overridepublic void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {}@Overridepublic void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {}@Overridepublic void onPlayRing(int i) {}@Overridepublic void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) {}@Overridepublic void onCalculateRouteFailure(AMapCalcRouteResult aMapCalcRouteResult) {}@Overridepublic void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) {}});Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {mAMapNavi.startSpeak();}}, 500);}@Overrideprotected void onResume() {super.onResume(); // mAMapNavi.startNavi(1);mAMapNaviView.onResume();}@Overrideprotected void onPause() {super.onPause();mAMapNaviView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mAMapNaviView.onDestroy();mAMapNavi.destroy();mAMapNavi=null;Log.i("lgqddddddddddddddd","dddddddd33");}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {showNavBackDialog();return true;}return super.onKeyDown(keyCode, event);}/**** 返回按鈕 dialog提示*/private void showNavBackDialog() {builder = new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("確定退出導(dǎo)航?");builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {finish();}});dialog = builder.show();}/**** 回收dialog*/private void dismissDialog(){if(dialog != null){if(dialog.isShowing()){dialog.dismiss();}dialog = null;}builder = null;} }

?

總結(jié)

以上是生活随笔為你收集整理的Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。