package com.electric.chargingpile.activity; import android.app.Activity; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.view.WindowManager; import com.amap.api.maps.AMapException; import com.amap.api.maps.model.BitmapDescriptor; import com.amap.api.maps.model.BitmapDescriptorFactory; import com.amap.api.navi.AMapNaviViewOptions; import com.amap.api.navi.model.NaviLatLng; import com.amap.api.navi.model.RouteOverlayOptions; import com.amap.api.navi.view.RouteOverLay; 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.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.AMapNaviLocation; import com.amap.api.navi.model.AMapNaviPath; 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.electric.chargingpile.R; import java.util.List; /** * 创建时间:15/12/7 18:35 * 项目名称:newNaviDemo * * @author lingxiang.wang * @email lingxiang.wang@alibaba-inc.com * 类说明: */ public class SimpleNaviActivity extends Activity implements AMapNaviListener, AMapNaviViewListener { private AMapNaviView mAMapNaviView; private AMapNavi mAMapNavi; // private TTSController mTtsManager; private AMapNaviViewListener aMapNaviViewListener; private boolean isGps; private RouteOverLay routeOverLay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple_navi); setStatusBarColor(SimpleNaviActivity.this, R.color.black); mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view); mAMapNaviView.onCreate(savedInstanceState); mAMapNaviView.setAMapNaviViewListener(this); AMapNaviViewOptions options = mAMapNaviView.getViewOptions(); options.setAutoDrawRoute(false); options.setAfterRouteAutoGray(true); mAMapNaviView.setViewOptions(options); try { mAMapNavi = AMapNavi.getInstance(getApplicationContext()); } catch (AMapException e) { e.printStackTrace(); } mAMapNavi.addAMapNaviListener(this); mAMapNavi.setEmulatorNaviSpeed(60); mAMapNavi.setUseInnerVoice(true); isGps = getIntent().getBooleanExtra("gps", false); mAMapNavi.calculateDriveRoute(RoutePlanMapActivity.startList, RoutePlanMapActivity.endList, RoutePlanMapActivity.zhongList, 10); if (isGps) mAMapNavi.startNavi(NaviType.GPS); else { mAMapNavi.startNavi(NaviType.EMULATOR); } } public static void setStatusBarColor(Activity activity, int colorId) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(activity.getResources().getColor(colorId)); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { } } @Override protected void onResume() { super.onResume(); mAMapNaviView.onResume(); } @Override protected void onPause() { super.onPause(); mAMapNaviView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mAMapNaviView.onDestroy(); mAMapNavi.stopNavi(); } @Override public void onInitNaviFailure() { Log.e("onInitNaviFailure", "---"); } @Override public void onInitNaviSuccess() { Log.e("onInitNaviSuccess", "---"); } @Override public void onStartNavi(int i) { Log.e("onStartNavi", "---"); } @Override public void onTrafficStatusUpdate() { Log.e("onTrafficStatusUpdate", "---"); } @Override public void onLocationChange(AMapNaviLocation aMapNaviLocation) { try { routeOverLay.updatePolyline(aMapNaviLocation); } catch (Exception e) { e.printStackTrace(); } } @Override public void onGetNavigationText(int i, String s) { } @Override public void onGetNavigationText(String s) { } @Override public void onEndEmulatorNavi() { Log.e("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 updateCameraInfo(AMapNaviCameraInfo[] aMapNaviCameraInfos) { } @Override public void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) { } @Override public void onServiceAreaUpdate(AMapServiceAreaInfo[] aMapServiceAreaInfos) { } @Override public void onNaviInfoUpdate(NaviInfo naviInfo) { try { List naviLatLngList = routeOverLay.getArrowPoints(naviInfo.getCurStep()); routeOverLay.drawArrow(naviLatLngList); } catch (Exception e) { e.printStackTrace(); } } @Override public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) { } @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) { } @Override public void notifyParallelRoad(int i) { } @Override public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) { } @Override public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) { } @Override public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) { } @Override public void onPlayRing(int i) { } @Override public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) { int[] routeIds = aMapCalcRouteResult.getRouteid(); int routeId = routeIds[0]; AMapNaviPath aMapNaviPath = mAMapNavi.getNaviPaths().get(routeId); routeOverLay = new RouteOverLay(mAMapNaviView.getMap(), aMapNaviPath, SimpleNaviActivity.this); routeOverLay.setStartPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon_newstarr)); routeOverLay.setEndPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon_newstopr)); routeOverLay.setWayPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon_sgreen)); routeOverLay.addToMap(); BitmapDescriptor afterGrayTraffic = BitmapDescriptorFactory.fromResource(R.drawable.after_route_gray); RouteOverlayOptions routeOverlayOptions = new RouteOverlayOptions(); routeOverlayOptions.setPassRoute(afterGrayTraffic.getBitmap()); routeOverLay.setRouteOverlayOptions(routeOverlayOptions); } @Override public void onCalculateRouteFailure(AMapCalcRouteResult aMapCalcRouteResult) { } @Override public void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) { } @Override public void onGpsSignalWeak(boolean b) { } @Override public void onNaviSetting() { } @Override public void onNaviCancel() { finish(); } @Override public boolean onNaviBackClick() { return false; } @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) { } @Override public void onPointerCaptureChanged(boolean hasCapture) { } }