1、首先到百度地图开放平台创建应用,获取应用AK

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

2、到百度语言平台创建应用,获取Secret Key和语言APP ID

http://yuyin.baidu.com/app

3、到百度地图开放平台下载Android 导航SDK

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

4、修改ak和sk 和APP ID 还有使用你的keystore打包即可完成百度内置导航接入

配置你的ak,sk

配置你的APP ID

配置你的签名

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

密码:在线回复QQ1085220040

在线回复bug.QQ1085220040

运行即可:

2、高德地图内置导航实现——比集成百度内置导航方便,建议使用

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

实现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 实例mAMapNaviView = findViewById(R.id.navi_view);//获取AMapNavi实例mAMapNavi = AMapNavi.getInstance(getApplicationContext());
//        mAMapNavi.setUseInnerVoice(true);mAMapNavi.setUseInnerVoice(true,true);AMapNaviViewOptions options = mAMapNaviView.getViewOptions();//隐藏SDK默认的布局
//        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);//添加监听回调,用于处理算路成功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);* 参数:* @congestion 躲避拥堵* @avoidhightspeed 不走高速* @cost 避免收费* @hightspeed 高速优先* @multipleroute 多路径** 说明:*      以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。* 注意:*      不走高速与高速优先不能同时为true*      高速优先与避免收费不能同时为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("确定退出导航?");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;}
}

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

  1. 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?

    关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...

  2. 漂亮大气的html导航页面,jquery+css打造位于网页顶部漂亮黄色下拉导航

    jquery+css打造位于网页顶部漂亮黄色下拉导航 - www.webdm.cn $(document).ready(function(){ $(".btn-slide").cl ...

  3. Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK

    Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...

  4. android开发游记:APP内部调启百度、高德、web地图导航

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 使用方法 下面解释主要代码 一些地图相关的app一般都需要集成导航的功能方便用户使用,但实际上我们很多时候仅仅只是希望提供这样一 ...

  5. 百度地图 key_Android百度地图导航的接入(包含驾车、公交、步行)

    百度地图导航的接入(包含三种选择方式驾车.公交.步行) 步骤 1.下载百度的sdk(下载地址:http://lbsyun.baidu.com/sdk/download) ​ 勾选下载"检索功 ...

  6. 百度地图导航的接入(包含三种选择方式驾车、公交、步行)

    百度地图导航的接入(包含三种选择方式驾车.公交.步行) 步骤 1.下载百度的sdk(下载地址:http://lbsyun.baidu.com/sdk/download) 勾选下载"检索功能& ...

  7. 百度android sdk聚合,SDK接入 · 百度移动统计Android SDK使用手册

    可视化圈选SDK接入 SDK简介 百度移动统计无埋点SDK是在现有的手动埋点SDK上的一个功能升级.结合了所有手动埋点的优势,同时避免了手动埋点的繁琐过程.实现了一行代码接入,配合WEB端圈选,完成页 ...

  8. xmarin.android导航栏,android – 如何在xamarin表单中更改导航页面后退按钮

    我想在导航页面中更改后退箭头图像.为此在Android应用程序中我创建了导航页面渲染器,然后使用方法toolbar.SetNavigationIcon和它不工作,但当我使用toolbar.SetLog ...

  9. android app内嵌h5页面,app内嵌h5页面:前端与原生语言的配合

    判断操作系统: var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android' ...

最新文章

  1. halcon区域腐蚀膨胀算子_OpenCV 图像处理之膨胀与腐蚀
  2. 8_Markdown和LaTex的使用中的一些小技巧
  3. 《深入理解 Java 内存模型》读书笔记(上)(干货,万字长文)
  4. IDC数据中心机房该如何节能
  5. 阿德:我在去哪儿干了些什么,3个月业绩400%提升
  6. HDU 4339 Query
  7. python绘画音频_人工智能下的音频还能这样玩!!!!
  8. python+appium 自动化2--元素定位uiautomatorviewer
  9. python删除excel第一行_如何用 Python 清洗数据?
  10. 【搜索】P1032 字串变换
  11. 使用python实现微信小程序自动签到
  12. 一、64位windows 安装mysql
  13. 王之泰 201771010131《面向对象程序设计(java)》第十六周学习总结
  14. C语言程序设计现代方法-第二版-第10章练习题
  15. python PIL 将两个图片合成一张
  16. 计算学习理论PAC模型
  17. 幼儿园观察记录的目的和目标_幼儿园益智活动观察记录与反思
  18. 安卓4.4pppoe拨号间隔及轮次修改
  19. python写采集程序_Python写的简易采集爬虫(蜘蛛)
  20. 【云原生之Docker实战】使用Docker部署MrDoc个人在线文档系统

热门文章

  1. [css] 为什么说css中能用子代选择器的时候不要用后代选择器?
  2. 工作324:uni-时间过滤器封装
  3. [js] 你是如何比较js函数的执行速度的?
  4. 前端学习(2617):删除品牌
  5. 前端学习(2579):组件库使用
  6. 前端学习(1332):mongodb安装
  7. 实例25:python
  8. 工业RS485接口电路设计
  9. android选择头像弹窗,Android App开发常用功能之用户头像选择-Go语言中文社区
  10. linux内核多队列,Linux Kernel 中 Workqueue 使用系统默认队列和创建队列的方法