赞
踩
package com.xiyangyang.android.modules.index.controllers; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; 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.enums.NaviType; import com.amap.api.navi.model.AMapLaneInfo; 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.AMapNaviTrafficFacilityInfo; 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.NaviStaticInfo; import com.autonavi.tbt.TrafficFacilityInfo; import com.xiyangyang.android.R; import com.xiyangyang.android.modules.common.controllers.CWBaseActivity; import com.xiyangyang.android.modules.common.views.NavigationBar; import com.xiyangyang.android.modules.index.util.TTSController; import java.util.ArrayList; import java.util.List; /** * Created by daniel on 2016/8/24. * 导航 */ public class NavigationActivity extends CWBaseActivity implements AMapNaviViewListener, AMapNaviListener { private NavigationBar navigationBar; //导航View private AMapNaviView aMapNaviView; private AMapNavi mAMapNavi; protected TTSController mTtsManager; private List<NaviLatLng> mStartList = new ArrayList<>(); private List<NaviLatLng> mEndList = new ArrayList<>(); private List<NaviLatLng> mWayPointList; private NaviLatLng mStartLatlng; private NaviLatLng mEndLatlng; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_navigation); initViews(savedInstanceState); } private void initViews(Bundle savedInstanceState) { navigationBar = (NavigationBar) findViewById(R.id.navigationBar); navigationBar.setTitle(getResources().getString(R.string.navigation)); ((ImageView) navigationBar.getBackBackButton()).setImageResource(R.mipmap.back_icon); aMapNaviView = (AMapNaviView) findViewById(R.id.navigation_mapview); aMapNaviView.onCreate(savedInstanceState); aMapNaviView.setAMapNaviViewListener(this); //实例化语音引擎 mTtsManager = TTSController.getInstance(getApplicationContext()); mTtsManager.init(); //获取AMapNavi实例 mAMapNavi = AMapNavi.getInstance(getApplicationContext()); //添加监听回调,用于处理算路成功 mAMapNavi.addAMapNaviListener(this); mAMapNavi.addAMapNaviListener(mTtsManager); //设置模拟导航的行车速度 mAMapNavi.setEmulatorNaviSpeed(50); mStartLatlng = new NaviLatLng(34.193455, 108.88618); mEndLatlng = new NaviLatLng(34.193455, 108.88000); mStartList.add(mStartLatlng); mEndList.add(mEndLatlng); } @Override protected void onResume() { super.onResume(); aMapNaviView.onResume(); } @Override protected void onPause() { super.onPause(); aMapNaviView.onPause(); //仅仅是停止你当前在说的这句话,一会到新的路口还是会再说的 mTtsManager.stopSpeaking(); //停止导航之后,会触及底层stop,然后就不会再有回调了,但是讯飞当前还是没有说完的半句话还是会说完 //mAMapNavi.stopNavi(); } @Override protected void onDestroy() { super.onDestroy(); aMapNaviView.onDestroy(); //since 1.6.0 不再在naviview destroy的时候自动执行AMapNavi.stopNavi();请自行执行 mAMapNavi.stopNavi(); mAMapNavi.destroy(); mTtsManager.destroy(); } @Override public void onInitNaviFailure() { showProgressDialog("init navi Failed"); } @Override public void onInitNaviSuccess() { //初始化 /** * 方法: int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute); 参数: * * @congestion 躲避拥堵 * @avoidhightspeed 不走高速 * @cost 避免收费 * @hightspeed 高速优先 * @multipleroute 多路径 * * 说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。 * 注意: 不走高速与高速优先不能同时为true 高速优先与避免收费不能同时为true */ int strategy = 0; try { //再次强调,最后一个参数为true时代表多路径,否则代表单路径 strategy = mAMapNavi.strategyConvert(true, false, false, false, false); } catch (Exception e) { e.printStackTrace(); } mAMapNavi.calculateDriveRoute(mStartList, mEndList, mWayPointList, strategy); } @Override public void onStartNavi(int type) { //开始导航回调 } @Override public void onTrafficStatusUpdate() { // } @Override public void onLocationChange(AMapNaviLocation location) { //当前位置回调 } @Override public void onGetNavigationText(int type, String text) { //播报类型和播报文字回调 } @Override public void onEndEmulatorNavi() { //结束模拟导航 } @Override public void onArriveDestination() { //到达目的地 } @Override public void onArriveDestination(NaviStaticInfo naviStaticInfo) { //到达目的地,有统计信息回调 } @Override public void onCalculateRouteSuccess() { //路线计算成功 mAMapNavi.startNavi(NaviType.GPS); } @Override public void onCalculateRouteFailure(int errorInfo) { //路线计算失败 Log.i("dm", "errorInfo=" + errorInfo); showProgressDialog("errorInfo:" + errorInfo); } @Override public void onReCalculateRouteForYaw() { //偏航后重新计算路线回调 } @Override public void onReCalculateRouteForTrafficJam() { //拥堵后重新计算路线回调 } @Override public void onArrivedWayPoint(int wayID) { //到达途径点 } @Override public void onGpsOpenStatus(boolean enabled) { //GPS开关状态回调 } @Override public void onNaviSetting() { //底部导航设置点击回调 } @Override public void onNaviMapMode(int isLock) { //地图的模式,锁屏或锁车 } @Override public void onNaviCancel() { finish(); } @Override public void onNaviTurnClick() { //转弯view的点击回调 } @Override public void onNextRoadClick() { //下一个道路View点击回调 } @Override public void onScanViewButtonClick() { //全览按钮点击回调 } @Deprecated @Override public void onNaviInfoUpdated(AMapNaviInfo naviInfo) { //过时 } @Override public void onNaviInfoUpdate(NaviInfo naviinfo) { //导航过程中的信息更新,请看NaviInfo的具体说明 } @Override public void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) { //已过时 } @Override public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) { //已过时 } @Override public void showCross(AMapNaviCross aMapNaviCross) { //显示转弯回调 } @Override public void hideCross() { //隐藏转弯回调 } @Override public void showLaneInfo(AMapLaneInfo[] laneInfos, byte[] laneBackgroundInfo, byte[] laneRecommendedInfo) { //显示车道信息 } @Override public void hideLaneInfo() { //隐藏车道信息 } @Override public void onCalculateMultipleRoutesSuccess(int[] ints) { //多路径算路成功回调 } @Override public void notifyParallelRoad(int i) { if (i == 0) { showProgressDialog("当前在主辅路过渡"); Log.d("wlx", "当前在主辅路过渡"); return; } if (i == 1) { showProgressDialog("当前在主路"); Log.d("wlx", "当前在主路"); return; } if (i == 2) { showProgressDialog("当前在辅路"); Log.d("wlx", "当前在辅路"); } } @Override public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) { //更新交通设施信息 } @Override public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) { //更新巡航模式的统计信息 } @Override public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) { //更新巡航模式的拥堵信息 } @Override public void onLockMap(boolean isLock) { //锁地图状态发生变化时回调 } @Override public void onNaviViewLoaded() { Log.d("wlx", "导航页面加载成功"); Log.d("wlx", "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑"); } @Override public boolean onNaviBackClick() { return false; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。