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

private AMapNavi mAMapNavi;

protected AlertDialog.Builder builder;

protected AlertDialog dialog;

private String las,los;

private int fwint;

@Override

protected 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() {

@Override

public void onNaviSetting() {

}

@Override

public void onNaviCancel() {

finish();

Log.i(“lgq”,“cancel”);

}

@Override

public boolean onNaviBackClick() {

Log.i(“lgq”,“cancelback”);

showNavBackDialog();

return true;

}

@Override

public void onNaviMapMode(int i) {

}

@Override

public void onNaviTurnClick() {

}

@Override

public void onNextRoadClick() {

}

@Override

public void onScanViewButtonClick() {

}

@Override

public void onLockMap(boolean b) {

}

@Override

public void onNaviViewLoaded() {

}

@Override

public void onMapTypeChanged(int i) {

}

@Override

public void onNaviViewShowMode(int i) {

}

});

mAMapNaviView.onCreate(savedInstanceState);

//添加监听回调,用于处理算路成功

mAMapNavi.addAMapNaviListener(new AMapNaviListener() {

@Override

public void onInitNaviFailure() {

}

@Override

public 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 sList = new ArrayList() {

{

add(new NaviLatLng(startLatitude, startLongitude));

}

};

List eList = new ArrayList() {

{

add(new NaviLatLng(targetLatitude, targetLongitude));

}

};

List 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));

}

@Override

public void onStartNavi(int i) {

}

@Override

public void onTrafficStatusUpdate() {

}

@Override

public void onLocationChange(AMapNaviLocation aMapNaviLocation) {

}

@Override

public void onGetNavigationText(int i, String s) {

Log.i(“lgq”,"文字啦啦啦 ==== "+s);

}

@Override

public void onGetNavigationText(String s) {

Log.i(“lgq”,"文字啦eeee啦啦 ==== "+s);

}

@Override

public void onEndEmulatorNavi() {

}

@Override

public void onArriveDestination() {

}

@Override

public void onCalculateRouteFailure(int i) {

}

@Override

public void onReCalculateRouteForYaw() {

}

@Override

public void onReCalculateRouteForTrafficJam() {

}

@Override

public void onArrivedWayPoint(int i) {

}

@Override

public void onGpsOpenStatus(boolean b) {

}

@Override

public void onNaviInfoUpdate(NaviInfo naviInfo) {

}

@Override

public void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {

}

@Override

public void updateCameraInfo(AMapNaviCameraInfo[] aMapNaviCameraInfos) {

}

@Override

public void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) {

}

@Override

public void onServiceAreaUpdate(AMapServiceAreaInfo[] aMapServiceAreaInfos) {

}

@Override

public void showCross(AMapNaviCross aMapNaviCross) {

}

@Override

public void hideCross() {

}

@Override

public void showModeCross(AMapModelCross aMapModelCross) {

}

@Override

public void hideModeCross() {

}

@Override

public void showLaneInfo(AMapLaneInfo[] aMapLaneInfos, byte[] bytes, byte[] bytes1) {

}

@Override

public void showLaneInfo(AMapLaneInfo aMapLaneInfo) {

}

@Override

public void hideLaneInfo() {

}

@Override

public void onCalculateRouteSuccess(int[] ints) {

mAMapNavi.startNavi(NaviType.GPS);

}

@Override

public void notifyParallelRoad(int i) {

}

@Override

public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {

}

@Override

public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {

}

@Override

public void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {

}

@Override

public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {

}

@Override

public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {

}

@Override

public void onPlayRing(int i) {

}

@Override

public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) {

}

@Override

public void onCalculateRouteFailure(AMapCalcRouteResult aMapCalcRouteResult) {

}

@Override

public void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) {

}

});

Handler handler = new Handler();

handler.postDelayed(new Runnable() {

@Override

public void run() {

mAMapNavi.startSpeak();

}

}, 500);

}

@Override

protected void onResume() {

super.onResume();

// mAMapNavi.startNavi(1);

mAMapNaviView.onResume();

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结:

面试是一个不断学习、不断自我提升的过程,有机会还是出去面面,至少能想到查漏补缺效果,而且有些知识点,可能你自以为知道,但让你说,并不一定能说得很好。

有些东西有压力才有动力,而学到的知识点,都是钱(因为技术人员大部分情况是根据你的能力来定级、来发薪水的),技多不压身。

附上我的面试各大专题整理: 面试指南,满满的都是干货,希望对大家有帮助!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
2823830419)]
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-s2El7qK9-1712823830419)]

总结:

面试是一个不断学习、不断自我提升的过程,有机会还是出去面面,至少能想到查漏补缺效果,而且有些知识点,可能你自以为知道,但让你说,并不一定能说得很好。

有些东西有压力才有动力,而学到的知识点,都是钱(因为技术人员大部分情况是根据你的能力来定级、来发薪水的),技多不压身。

附上我的面试各大专题整理: 面试指南,满满的都是干货,希望对大家有帮助!
[外链图片转存中…(img-OHfE59u4-1712823830420)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-5i4Br3bf-1712823830420)]

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
View.OnClickListener onClickListener=new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()) { case R.id.baidu_btn: if (MDMUtil.appIsInstalled( getContext(),"com.baidu.BaiduMap")) {//传入指定应用包名 try { double[] gd_lat_lon ; if(RoutingXModel.isGpslatlon){ gd_lat_lon= gaoDeToBaidu(xModel.poc_lon,xModel.poc_lat); }else{ gd_lat_lon= new double[2]; gd_lat_lon[0]=xModel.poc_lon; gd_lat_lon[1]=xModel.poc_lat; } Intent intent = Intent.getIntent("intent://map/direction?" + "destination=latlng:" + gd_lat_lon[1] + "," + gd_lat_lon[0]+ "|name:我的目的地" + //终点 "&mode=driving&" + //导航路线方式 "&src=appname#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(intent); //启动调用 } catch (URISyntaxException e) { Log.e("intent", e.getMessage()); } } else {//未安装 //market为路径,id为包名 //显示手机上所有的market商店 Toast.makeText(getContext(), "您尚未安装百度地图", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.gaode_btn: if (MDMUtil.appIsInstalled( getContext(),"com.autonavi.minimap")) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon ; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); }else{ gd_lat_lon= new double[2]; gd_lat_lon[0]=xModel.poc_lon; gd_lat_lon[1]=xModel.poc_lat; } //将功能Scheme以URI的方式传入data Uri uri = Uri.parse("androidamap://navi?sourceApplication=appname&poiname=fangheng⪫=" + gd_lat_lon[1] + "&lon;=" + gd_lat_lon[0] + "&dev=0&style=4"); intent.setData(uri); //启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), "您尚未安装高德地图", Toast.LENGTH_LONG).show(); Uri uri = Uri.parse("market://details?id=com.autonavi.minimap"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.tencent_btn: Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon ; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); }else{ gd_lat_lon= new double[2]; gd_lat_lon[0]=xModel.poc_lon; gd_lat_lon[1]=xModel.poc_lat; } //将功能Scheme以URI的方式传入data Uri uri = Uri.parse("qqmap://map/routeplan?type=drive&to;=我的目的地&tocoord;=" + gd_lat_lon[1]+ "," + gd_lat_lon[0]); intent.setData(uri); if (intent.resolveActivity(getContext().getPackageManager()) != null) { //启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), "您尚未安装腾讯地图", Toast.LENGTH_LONG).show(); } dismiss(); break; case R.id.cancel_btn2: dismiss(); break; } } };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值