diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java index 2881364ae5..eafa6edacf 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java @@ -200,7 +200,6 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin IMogoOnWebSocketMessageListener listener = iterator.next(); if (listener != null) { Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); - Logger.d("CameraLiveNoticeHelper", "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target()); listener.onMsgReceived(receiveObj); } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index b414122da7..636cf85304 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -3,6 +3,7 @@ package com.mogo.commons; import android.app.Application; import android.content.Context; import android.text.TextUtils; +import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,10 +11,6 @@ import android.widget.ImageView; import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; -import com.elegant.analytics.Analytics; -import com.elegant.analytics.AnalyticsConfig; -import com.elegant.analytics.IAnalyticsParamsProvider; -import com.elegant.analytics.UploadMode; import com.mogo.commons.analytics.AnalyticsUtils; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.device.Devices; @@ -28,10 +25,8 @@ import com.mogo.utils.ThreadPoolService; import com.mogo.utils.TipDrawable; import com.mogo.utils.TipToast; import com.mogo.utils.network.NetConfig; -import com.mogo.utils.storage.SharedPrefsMgr; import java.security.SecureRandom; -import java.util.Map; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; @@ -48,6 +43,13 @@ public abstract class AbsMogoApplication extends Application { private static final String TAG = "AbsMogoApplication"; + // 没有换肤功能的LayoutInflater + private static LayoutInflater mLayoutInflaterNoSkin; + + public static LayoutInflater getLayoutInflaterNoSkin() { + return mLayoutInflaterNoSkin; + } + private static Application sApp; public static Application getApp() { @@ -57,6 +59,8 @@ public abstract class AbsMogoApplication extends Application { @Override public void onCreate() { super.onCreate(); + // 在设置皮肤布局填充器之前进行克隆一个出来 + mLayoutInflaterNoSkin = LayoutInflater.from(new ContextThemeWrapper(this, R.style.Theme_AppCompat)).cloneInContext(new ContextThemeWrapper(this, R.style.Theme_AppCompat)); sApp = this; initARouter(); if ( shouldInit() ) { diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java index 406a24e1f6..d38389b817 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java @@ -252,7 +252,12 @@ public class AMapWrapper implements IMogoMap { if ( polylineOptions == null ) { return null; } - Polyline polyline = mAMap.drawLine( polylineOptions ); + Polyline polyline = null; + if (polylineOptions.getLineWidth() > 0){ + polyline = mAMap.drawThickLine(polylineOptions); + }else { + polyline = mAMap.drawLine(polylineOptions); + } return new AMapPolylineWrapper( polyline, options ); } return null; diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java index 1aad674edb..949dc5ac62 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java @@ -17,6 +17,8 @@ import com.mogo.map.marker.anim.OnMarkerAnimationListener; import com.mogo.utils.logger.Logger; import com.zhidaoauto.map.sdk.open.abs.marker.MarkerAnimationListener; import com.zhidaoauto.map.sdk.open.marker.Animation; +import com.zhidaoauto.map.sdk.open.marker.BitmapDescriptor; +import com.zhidaoauto.map.sdk.open.marker.BitmapDescriptorFactory; import com.zhidaoauto.map.sdk.open.marker.Marker; import com.zhidaoauto.map.sdk.open.marker.MarkerOptions; import com.zhidaoauto.map.sdk.open.marker.MarkerScaleAnimation; @@ -139,19 +141,19 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { if ( icons == null || icons.isEmpty() ) { return; } -// ArrayList descriptors = new ArrayList<>(); -// for ( Bitmap icon : icons ) { -// if ( icon == null || icon.isRecycled() ) { -// continue; -// } -// descriptors.add( BitmapDescriptorFactory.fromBitmap( icon ) ); -// } -// if ( descriptors.isEmpty() ) { -// return; -// } -// if ( mMarker != null ) { -// mMarker.setIcons( descriptors ); -// } + ArrayList descriptors = new ArrayList<>(); + for ( Bitmap icon : icons ) { + if ( icon == null || icon.isRecycled() ) { + continue; + } + descriptors.add( BitmapDescriptorFactory.INSTANCE.fromBitmap(icon)); + } + if ( descriptors.isEmpty() ) { + return; + } + if ( mMarker != null ) { + mMarker.setIcons( descriptors ); + } } @Override diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java index 5f198a34d4..2639322021 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java @@ -52,89 +52,89 @@ import java.util.List; */ public class ObjectUtils { - public static MarkerOptions fromMogo( MogoMarkerOptions opt ) { + public static MarkerOptions fromMogo(MogoMarkerOptions opt) { - if ( opt == null ) { + if (opt == null) { return null; } - ArrayList< BitmapDescriptor > descriptors = new ArrayList<>(); - final ArrayList< Bitmap > icons = opt.getIcons(); - if ( icons != null && !icons.isEmpty() ) { - for ( Bitmap icon : icons ) { - if ( icon == null || icon.isRecycled() ) { + ArrayList descriptors = new ArrayList<>(); + final ArrayList icons = opt.getIcons(); + if (icons != null && !icons.isEmpty()) { + for (Bitmap icon : icons) { + if (icon == null || icon.isRecycled()) { continue; } - descriptors.add( new BitmapDescriptor( icon ) ); + descriptors.add(new BitmapDescriptor(icon)); } } MarkerOptions markerOptions = new MarkerOptions() - .position( new LonLatPoint( opt.getLongitude(), opt.getLatitude() ) ) - .anchor( opt.getU(), opt.getV() ) + .position(new LonLatPoint(opt.getLongitude(), opt.getLatitude())) + .anchor(opt.getU(), opt.getV()) // .icons( descriptors ) // .period( opt.getPeriod() ) - .rotateAngle( opt.getRotate() ) - .setFlat( opt.isFlat() ) - .visible( opt.isVisible() ) - .infoWindowEnable( opt.isInifoWindowEnable() ) - .alpha( opt.getAlpha() ) - .setGps( opt.isGps() ) + .rotateAngle(opt.getRotate()) + .setFlat(opt.isFlat()) + .visible(opt.isVisible()) + .infoWindowEnable(opt.isInifoWindowEnable()) + .alpha(opt.getAlpha()) + .setGps(opt.isGps()) // .draggable( opt.isDraggable() ) - .setInfoWindowOffset( opt.getOffsetX(), opt.getOffsetY() ) - .zIndex( opt.getzIndex() ); - BitmapDescriptor descriptor = getBitmapDescriptorFromMogo( opt ); - if ( descriptor != null ) { - markerOptions.markerIcon( descriptor ); + .setInfoWindowOffset(opt.getOffsetX(), opt.getOffsetY()) + .zIndex(opt.getzIndex()); + BitmapDescriptor descriptor = getBitmapDescriptorFromMogo(opt); + if (descriptor != null) { + markerOptions.markerIcon(descriptor); } - if ( opt.getIcon3DRes() != 0 ) { - markerOptions.marker3DIcon( opt.getIcon3DRes() ); + if (opt.getIcon3DRes() != 0) { + markerOptions.marker3DIcon(opt.getIcon3DRes()); } - if ( !TextUtils.isEmpty( opt.getTitle() ) ) { - markerOptions.title( opt.getTitle() ); + if (!TextUtils.isEmpty(opt.getTitle())) { + markerOptions.title(opt.getTitle()); } - if ( !TextUtils.isEmpty( opt.getSnippet() ) ) { - markerOptions.snippet( opt.getSnippet() ); + if (!TextUtils.isEmpty(opt.getSnippet())) { + markerOptions.snippet(opt.getSnippet()); } return markerOptions; } - private static BitmapDescriptor getBitmapDescriptorFromMogo( MogoMarkerOptions options ) { - if ( options == null ) { + private static BitmapDescriptor getBitmapDescriptorFromMogo(MogoMarkerOptions options) { + if (options == null) { return null; } Bitmap icon = options.getIcon(); - if ( icon != null ) { - return BitmapDescriptorFactory.INSTANCE.fromBitmap( icon ); + if (icon != null) { + return BitmapDescriptorFactory.INSTANCE.fromBitmap(icon); } View view = options.getIconView(); - if ( view != null ) { - return BitmapDescriptorFactory.INSTANCE.fromView( view ); + if (view != null) { + return BitmapDescriptorFactory.INSTANCE.fromView(view); } return null; } - public static MogoLocation fromLocation( com.zhidaoauto.map.sdk.open.location.MogoLocation aLocation ) { - if ( aLocation == null ) { + public static MogoLocation fromLocation(com.zhidaoauto.map.sdk.open.location.MogoLocation aLocation) { + if (aLocation == null) { return null; } MogoLocation location = new MogoLocation(); // location.setLocType( aLocation.getLocationType() ); - location.setSpeed( aLocation.getSpeed() ); - location.setLatitude( aLocation.getLat() ); - location.setLongitude( aLocation.getLon() ); - location.setAltitude( aLocation.getAltitude() ); + location.setSpeed(aLocation.getSpeed()); + location.setLatitude(aLocation.getLat()); + location.setLongitude(aLocation.getLon()); + location.setAltitude(aLocation.getAltitude()); // location.setTime( aLocation.getTime() ); - location.setBearing( aLocation.getHeading() ); + location.setBearing(aLocation.getHeading()); // location.setAccuracy( aLocation.getAccuracy() ); - location.setCityCode( aLocation.getCityCode() ); - location.setCityName( aLocation.getCity() ); - location.setProvider( aLocation.getProvider() ); - location.setAddress( aLocation.getAddress() ); - location.setDistrict( aLocation.getDistrict() ); - location.setProvince( aLocation.getProvince() ); - location.setAdCode( aLocation.getAdCode() ); + location.setCityCode(aLocation.getCityCode()); + location.setCityName(aLocation.getCity()); + location.setProvider(aLocation.getProvider()); + location.setAddress(aLocation.getAddress()); + location.setDistrict(aLocation.getDistrict()); + location.setProvince(aLocation.getProvince()); + location.setAdCode(aLocation.getAdCode()); // location.setLocationDetail( aLocation.getLocationDetail() ); // location.setPoiName( aLocation.getPoiName() ); // location.setAoiName( aLocation.getAoiName() ); @@ -149,11 +149,11 @@ public class ObjectUtils { return location; } - public static LonLatPoint fromMogo( MogoLatLng latLng ) { - if ( latLng == null ) { + public static LonLatPoint fromMogo(MogoLatLng latLng) { + if (latLng == null) { return null; } - return new LonLatPoint( latLng.lon, latLng.lat ); + return new LonLatPoint(latLng.lon, latLng.lat); } // public static NaviLatLng fromMogoAsNavi( MogoLatLng latLng ) { @@ -170,11 +170,11 @@ public class ObjectUtils { // return new LatLng( latLng.lat, latLng.lng ); // } - public static MogoLatLng fromAMap( LonLatPoint point ) { - if ( point == null ) { + public static MogoLatLng fromAMap(LonLatPoint point) { + if (point == null) { return null; } - return new MogoLatLng( point.getLatitude(), point.getLongitude() ); + return new MogoLatLng(point.getLatitude(), point.getLongitude()); } // public static MogoLatLng CameraPositionfromAMap( LatLng point ) { @@ -184,19 +184,19 @@ public class ObjectUtils { // return new MogoLatLng( point.latitude, point.longitude ); // } - public static GeocodeQuery fromMogo( MogoGeocodeQuery query ) { - if ( query == null ) { + public static GeocodeQuery fromMogo(MogoGeocodeQuery query) { + if (query == null) { return null; } - GeocodeQuery q = new GeocodeQuery( query.getLocationName(), query.getCity() ); + GeocodeQuery q = new GeocodeQuery(query.getLocationName(), query.getCity()); return q; } - public static RegeocodeQuery fromMogo( MogoRegeocodeQuery query ) { - if ( query == null ) { + public static RegeocodeQuery fromMogo(MogoRegeocodeQuery query) { + if (query == null) { return null; } - RegeocodeQuery q = new RegeocodeQuery( fromMogo( query.getPoint() ), 1000 ); + RegeocodeQuery q = new RegeocodeQuery(fromMogo(query.getPoint()), 1000); return q; } @@ -238,39 +238,39 @@ public class ObjectUtils { // return mogoCrossroad; // } - public static MogoGeocodeAddress fromAMap( GeocodeAddress address ) { - if ( address == null ) { + public static MogoGeocodeAddress fromAMap(GeocodeAddress address) { + if (address == null) { return null; } MogoGeocodeAddress mogoGeocodeAddress = new MogoGeocodeAddress(); - mogoGeocodeAddress.setAdcode( address.getAdcode() ); - mogoGeocodeAddress.setBuilding( address.getBuilding() ); - mogoGeocodeAddress.setCity( address.getCity() ); - mogoGeocodeAddress.setDistrict( address.getDistrict() ); - mogoGeocodeAddress.setFormatAddress( address.getFormatAddress() ); - mogoGeocodeAddress.setLatlng( fromAMap( address.getLonlat() ) ); - mogoGeocodeAddress.setLevel( address.getLevel() ); - mogoGeocodeAddress.setNeighborhood( address.getNeighborhood() ); - mogoGeocodeAddress.setProvince( address.getProvince() ); - mogoGeocodeAddress.setTownship( address.getTownship() ); + mogoGeocodeAddress.setAdcode(address.getAdcode()); + mogoGeocodeAddress.setBuilding(address.getBuilding()); + mogoGeocodeAddress.setCity(address.getCity()); + mogoGeocodeAddress.setDistrict(address.getDistrict()); + mogoGeocodeAddress.setFormatAddress(address.getFormatAddress()); + mogoGeocodeAddress.setLatlng(fromAMap(address.getLonlat())); + mogoGeocodeAddress.setLevel(address.getLevel()); + mogoGeocodeAddress.setNeighborhood(address.getNeighborhood()); + mogoGeocodeAddress.setProvince(address.getProvince()); + mogoGeocodeAddress.setTownship(address.getTownship()); return mogoGeocodeAddress; } - public static MogoGeocodeResult fromAMap( GeocodeResult result ) { - if ( result == null || result.getGeocodeAddressList() == null ) { + public static MogoGeocodeResult fromAMap(GeocodeResult result) { + if (result == null || result.getGeocodeAddressList() == null) { return null; } MogoGeocodeResult mogoGeocodeResult = new MogoGeocodeResult(); - final List< MogoGeocodeAddress > addresses = new ArrayList<>(); - List< GeocodeAddress > list = result.getGeocodeAddressList(); - for ( GeocodeAddress geocodeAddress : list ) { - final MogoGeocodeAddress mogoGeocodeAddress = fromAMap( geocodeAddress ); - if ( mogoGeocodeAddress != null ) { - addresses.add( mogoGeocodeAddress ); + final List addresses = new ArrayList<>(); + List list = result.getGeocodeAddressList(); + for (GeocodeAddress geocodeAddress : list) { + final MogoGeocodeAddress mogoGeocodeAddress = fromAMap(geocodeAddress); + if (mogoGeocodeAddress != null) { + addresses.add(mogoGeocodeAddress); } } - mogoGeocodeResult.setAddresses( addresses ); + mogoGeocodeResult.setAddresses(addresses); return mogoGeocodeResult; } @@ -286,7 +286,7 @@ public class ObjectUtils { // } // // public static MogoPhoto fromAMap( Photo photo ) { -// if ( photo == null ) { +// if ( photo == null ) {f // return null; // } // MogoPhoto mogoPhoto = new MogoPhoto(); @@ -346,23 +346,23 @@ public class ObjectUtils { // return mogoSubPoiItem; // } - public static MogoPoiItem fromAMap( PoiItem poiItem ) { - if ( poiItem == null ) { + public static MogoPoiItem fromAMap(PoiItem poiItem) { + if (poiItem == null) { return null; } MogoPoiItem mogoPoiItem = new MogoPoiItem(); - mogoPoiItem.setAdCode( poiItem.getAdCode() ); - mogoPoiItem.setAdName( poiItem.getAdName() ); - mogoPoiItem.setBusinessArea( poiItem.getBusinessArea() ); - mogoPoiItem.setCityCode( poiItem.getCityCode() ); - mogoPoiItem.setCityName( poiItem.getCityName() ); - mogoPoiItem.setDirection( poiItem.getDirection() ); - mogoPoiItem.setDistance( poiItem.getDistance() ); - mogoPoiItem.setEmail( poiItem.getEmail() ); - mogoPoiItem.setEnter( fromAMap( poiItem.getEnter() ) ); - mogoPoiItem.setExit( fromAMap( poiItem.getExit() ) ); + mogoPoiItem.setAdCode(poiItem.getAdCode()); + mogoPoiItem.setAdName(poiItem.getAdName()); + mogoPoiItem.setBusinessArea(poiItem.getBusinessArea()); + mogoPoiItem.setCityCode(poiItem.getCityCode()); + mogoPoiItem.setCityName(poiItem.getCityName()); + mogoPoiItem.setDirection(poiItem.getDirection()); + mogoPoiItem.setDistance(poiItem.getDistance()); + mogoPoiItem.setEmail(poiItem.getEmail()); + mogoPoiItem.setEnter(fromAMap(poiItem.getEnter())); + mogoPoiItem.setExit(fromAMap(poiItem.getExit())); // mogoPoiItem.setIndoorData( fromAMap( poiItem.getIndoorData() ) ); - mogoPoiItem.setParkingType( poiItem.getParkingType() ); + mogoPoiItem.setParkingType(poiItem.getParkingType()); // mogoPoiItem.setIndoorMap( poiItem.isIndoorMap() ); // if ( poiItem.getPhotos() != null ) { // List< MogoPhoto > mogoPhotos = new ArrayList<>(); @@ -375,13 +375,13 @@ public class ObjectUtils { // mogoPoiItem.setPhotos( mogoPhotos ); // } // mogoPoiItem.setPoiExtension( fromAMap( poiItem.getPoiExtension() ) ); - mogoPoiItem.setPoiId( poiItem.getPoiId() ); - mogoPoiItem.setPoint( fromAMap( poiItem.getLonLatPoint() ) ); - mogoPoiItem.setPostcode( poiItem.getPostcode() ); - mogoPoiItem.setProvinceCode( poiItem.getProvinceCode() ); - mogoPoiItem.setProvinceName( poiItem.getProvinceName() ); - mogoPoiItem.setShopID( poiItem.getShopID() ); - mogoPoiItem.setSnippet( poiItem.getSnippet() ); + mogoPoiItem.setPoiId(poiItem.getPoiId()); + mogoPoiItem.setPoint(fromAMap(poiItem.getLonLatPoint())); + mogoPoiItem.setPostcode(poiItem.getPostcode()); + mogoPoiItem.setProvinceCode(poiItem.getProvinceCode()); + mogoPoiItem.setProvinceName(poiItem.getProvinceName()); + mogoPoiItem.setShopID(poiItem.getShopID()); + mogoPoiItem.setSnippet(poiItem.getSnippet()); // if ( poiItem.getSubPois() != null ) { // List< MogoSubPoiItem > mogoSubPoiItems = new ArrayList<>(); // for ( SubPoiItem subPois : poiItem.getSubPois() ) { @@ -392,20 +392,20 @@ public class ObjectUtils { // } // mogoPoiItem.setSubPois( mogoSubPoiItems ); // } - mogoPoiItem.setTel( poiItem.getTel() ); - mogoPoiItem.setTypeCode( poiItem.getTypeCode() ); - mogoPoiItem.setTitle( poiItem.getTitle() ); - mogoPoiItem.setTypeDes( poiItem.getTypeDes() ); - mogoPoiItem.setWebsite( poiItem.getWebsite() ); + mogoPoiItem.setTel(poiItem.getTel()); + mogoPoiItem.setTypeCode(poiItem.getTypeCode()); + mogoPoiItem.setTitle(poiItem.getTitle()); + mogoPoiItem.setTypeDes(poiItem.getTypeDes()); + mogoPoiItem.setWebsite(poiItem.getWebsite()); return mogoPoiItem; } - public static MogoRegeocodeAddress fromAMap( RegeocodeAddress regeocodeAddress ) { - if ( regeocodeAddress == null ) { + public static MogoRegeocodeAddress fromAMap(RegeocodeAddress regeocodeAddress) { + if (regeocodeAddress == null) { return null; } MogoRegeocodeAddress mogoRegeocodeAddress = new MogoRegeocodeAddress(); - mogoRegeocodeAddress.setAdCode( regeocodeAddress.getAdCode() ); + mogoRegeocodeAddress.setAdCode(regeocodeAddress.getAdCode()); // if ( regeocodeAddress.getAois() != null ) { // List< MogoAoiItem > items = new ArrayList<>(); // for ( AoiItem aois : regeocodeAddress.getAois() ) { @@ -417,7 +417,7 @@ public class ObjectUtils { // mogoRegeocodeAddress.setAois( items ); // } - mogoRegeocodeAddress.setBuilding( regeocodeAddress.getBuilding() ); + mogoRegeocodeAddress.setBuilding(regeocodeAddress.getBuilding()); // if ( regeocodeAddress.getBusinessAreas() != null ) { // List< MogoBusinessArea > mogoBusinessAreas = new ArrayList<>(); // for ( BusinessArea businessArea : regeocodeAddress.getBusinessAreas() ) { @@ -429,9 +429,9 @@ public class ObjectUtils { // mogoRegeocodeAddress.setBusinessAreas( mogoBusinessAreas ); // } - mogoRegeocodeAddress.setCity( regeocodeAddress.getCity() ); - mogoRegeocodeAddress.setCityCode( regeocodeAddress.getCityCode() ); - mogoRegeocodeAddress.setCountry( regeocodeAddress.getCountry() ); + mogoRegeocodeAddress.setCity(regeocodeAddress.getCity()); + mogoRegeocodeAddress.setCityCode(regeocodeAddress.getCityCode()); + mogoRegeocodeAddress.setCountry(regeocodeAddress.getCountry()); // if ( regeocodeAddress.getCrossroads() != null ) { // List< MogoCrossroad > mogoCrossroads = new ArrayList<>(); // for ( Crossroad crossroad : regeocodeAddress.getCrossroads() ) { @@ -443,19 +443,19 @@ public class ObjectUtils { // } // mogoRegeocodeAddress.setCrossroads( mogoCrossroads ); // } - mogoRegeocodeAddress.setDistrict( regeocodeAddress.getDistrict() ); - mogoRegeocodeAddress.setFormatAddress( regeocodeAddress.getFormatAddress() ); - mogoRegeocodeAddress.setNeighborhood( regeocodeAddress.getNeighborhood() ); - if ( regeocodeAddress.getPoiList() != null ) { - List< MogoPoiItem > mogoPoiItems = new ArrayList<>(); - List< PoiItem > list = regeocodeAddress.getPoiList(); - for ( PoiItem pois : list ) { - MogoPoiItem mogoPoiItem = fromAMap( pois ); - mogoPoiItems.add( mogoPoiItem ); + mogoRegeocodeAddress.setDistrict(regeocodeAddress.getDistrict()); + mogoRegeocodeAddress.setFormatAddress(regeocodeAddress.getFormatAddress()); + mogoRegeocodeAddress.setNeighborhood(regeocodeAddress.getNeighborhood()); + if (regeocodeAddress.getPoiList() != null) { + List mogoPoiItems = new ArrayList<>(); + List list = regeocodeAddress.getPoiList(); + for (PoiItem pois : list) { + MogoPoiItem mogoPoiItem = fromAMap(pois); + mogoPoiItems.add(mogoPoiItem); } - mogoRegeocodeAddress.setPois( mogoPoiItems ); + mogoRegeocodeAddress.setPois(mogoPoiItems); } - mogoRegeocodeAddress.setProvince( regeocodeAddress.getProvince() ); + mogoRegeocodeAddress.setProvince(regeocodeAddress.getProvince()); // if ( regeocodeAddress.getRoads() != null ) { // List< MogoRegeocodeRoad > mogoRegeocodeRoads = new ArrayList<>(); // for ( RegeocodeRoad road : regeocodeAddress.getRoads() ) { @@ -467,43 +467,43 @@ public class ObjectUtils { // mogoRegeocodeAddress.setRoads( mogoRegeocodeRoads ); // } // mogoRegeocodeAddress.setStreetNumber( fromAMap( regeocodeAddress.getStreetNumber() ) ); - mogoRegeocodeAddress.setTowncode( regeocodeAddress.getTowncode() ); - mogoRegeocodeAddress.setTownship( regeocodeAddress.getTownship() ); + mogoRegeocodeAddress.setTowncode(regeocodeAddress.getTowncode()); + mogoRegeocodeAddress.setTownship(regeocodeAddress.getTownship()); return mogoRegeocodeAddress; } - public static MogoRegeocodeResult fromAMap( RegeocodeResult regeocodeResult ) { - if ( regeocodeResult == null ) { + public static MogoRegeocodeResult fromAMap(RegeocodeResult regeocodeResult) { + if (regeocodeResult == null) { return null; } MogoRegeocodeResult mogoRegeocodeResult = new MogoRegeocodeResult(); - mogoRegeocodeResult.setRegeocodeAddress( fromAMap( regeocodeResult.getRegeocodeAddress() ) ); + mogoRegeocodeResult.setRegeocodeAddress(fromAMap(regeocodeResult.getRegeocodeAddress())); return mogoRegeocodeResult; } - public static InputtipsQuery fromMogo( MogoInputtipsQuery query ) { - if ( query == null ) { + public static InputtipsQuery fromMogo(MogoInputtipsQuery query) { + if (query == null) { return null; } - InputtipsQuery inputtipsQuery = new InputtipsQuery( query.getKeyword(), query.getCity() ); - inputtipsQuery.setCityLimit( query.isCityLimit() ); - inputtipsQuery.setLocation( fromMogo( query.getLocation() ) ); - inputtipsQuery.setType( query.getType() ); + InputtipsQuery inputtipsQuery = new InputtipsQuery(query.getKeyword(), query.getCity()); + inputtipsQuery.setCityLimit(query.isCityLimit()); + inputtipsQuery.setLocation(fromMogo(query.getLocation())); + inputtipsQuery.setType(query.getType()); return inputtipsQuery; } - public static MogoTip fromAMap( Tip tip ) { - if ( tip == null ) { + public static MogoTip fromAMap(Tip tip) { + if (tip == null) { return null; } MogoTip mogoTip = new MogoTip(); - mogoTip.setAdCode( tip.getAdcode() ); - mogoTip.setAddress( tip.getAddress() ); - mogoTip.setDistrict( tip.getDistrict() ); - mogoTip.setName( tip.getName() ); - mogoTip.setPoiID( tip.getPoiID() ); - mogoTip.setPoint( fromAMap( tip.getLatPoint() ) ); - mogoTip.setTypeCode( tip.getTypeCode() ); + mogoTip.setAdCode(tip.getAdcode()); + mogoTip.setAddress(tip.getAddress()); + mogoTip.setDistrict(tip.getDistrict()); + mogoTip.setName(tip.getName()); + mogoTip.setPoiID(tip.getPoiID()); + mogoTip.setPoint(fromAMap(tip.getLatPoint())); + mogoTip.setTypeCode(tip.getTypeCode()); return mogoTip; } @@ -518,100 +518,100 @@ public class ObjectUtils { // return mogoPoi; // } - public static MogoPoiSearchQuery fromAMap( Query query ) { - if ( query == null ) { + public static MogoPoiSearchQuery fromAMap(Query query) { + if (query == null) { return null; } - MogoPoiSearchQuery mogoPoiSearchQuery = new MogoPoiSearchQuery( query.getKeyword(), query.getCategory(), query.getCity() ); + MogoPoiSearchQuery mogoPoiSearchQuery = new MogoPoiSearchQuery(query.getKeyword(), query.getCategory(), query.getCity()); // mogoPoiSearchQuery.setBuilding( query.getBuilding() ); - mogoPoiSearchQuery.setCityLimit( query.getCityLimit() ); - mogoPoiSearchQuery.setDistanceSort( query.getDistanceSort() ); - mogoPoiSearchQuery.setLocation( fromAMap( query.getLocation() ) ); - mogoPoiSearchQuery.setPageNum( query.getPageNum() ); - mogoPoiSearchQuery.setPageSize( query.getPageSize() ); + mogoPoiSearchQuery.setCityLimit(query.getCityLimit()); + mogoPoiSearchQuery.setDistanceSort(query.getDistanceSort()); + mogoPoiSearchQuery.setLocation(fromAMap(query.getLocation())); + mogoPoiSearchQuery.setPageNum(query.getPageNum()); + mogoPoiSearchQuery.setPageSize(query.getPageSize()); return mogoPoiSearchQuery; } - public static Query fromMogo( MogoPoiSearchQuery query ) { - if ( query == null || query.getQuery() == null ) { + public static Query fromMogo(MogoPoiSearchQuery query) { + if (query == null || query.getQuery() == null) { return null; } - Query psq = new Query( query.getQuery(), "", "" ); - String category = getCategory( query.getQuery() ); - if ( !category.equals( "" ) ) - psq = new Query( "", "", getCategory( query.getQuery() ) ); + Query psq = new Query(query.getQuery(), "", ""); + String category = getCategory(query.getQuery()); + if (!category.equals("")) + psq = new Query("", "", getCategory(query.getQuery())); // psq.setBuilding( query.getBuilding() ); - psq.setCityLimit( query.isCityLimit() ); - psq.setDistanceSort( query.isDistanceSort() ); - psq.setLocation( fromMogo( query.getLocation() ) ); - psq.setPageNum( query.getPageNum() ); - psq.setPageSize( query.getPageSize() ); + psq.setCityLimit(query.isCityLimit()); + psq.setDistanceSort(query.isDistanceSort()); + psq.setLocation(fromMogo(query.getLocation())); + psq.setPageNum(query.getPageNum()); + psq.setPageSize(query.getPageSize()); return psq; } - public static MogoSearchBound fromAMap( SearchBound bound ) { - if ( bound == null ) { + public static MogoSearchBound fromAMap(SearchBound bound) { + if (bound == null) { return null; } - if ( bound.getShape() == SearchBound.BOUND_SHAPE ) { - return new MogoSearchBound( fromAMap( bound.getCenter() ), bound.getRange(), bound.isDistanceSort() ); - } else if ( bound.getShape() == SearchBound.POLYGON_SHAPE ) { - return new MogoSearchBound( fromAMap( bound.getPolyGonList() ) ); - } else if ( bound.getShape() == SearchBound.RECTANGLE_SHAPE ) { - return new MogoSearchBound( fromAMap( bound.getLowerLeft() ), fromAMap( bound.getUpperRight() ) ); + if (bound.getShape() == SearchBound.BOUND_SHAPE) { + return new MogoSearchBound(fromAMap(bound.getCenter()), bound.getRange(), bound.isDistanceSort()); + } else if (bound.getShape() == SearchBound.POLYGON_SHAPE) { + return new MogoSearchBound(fromAMap(bound.getPolyGonList())); + } else if (bound.getShape() == SearchBound.RECTANGLE_SHAPE) { + return new MogoSearchBound(fromAMap(bound.getLowerLeft()), fromAMap(bound.getUpperRight())); } return null; } - public static List< MogoLatLng > fromAMap( List< LonLatPoint > latLngs ) { - if ( latLngs == null ) { + public static List fromAMap(List latLngs) { + if (latLngs == null) { return null; } - List< MogoLatLng > result = new ArrayList<>( latLngs.size() ); - for ( LonLatPoint latLng : latLngs ) { - result.add( fromAMap( latLng ) ); + List result = new ArrayList<>(latLngs.size()); + for (LonLatPoint latLng : latLngs) { + result.add(fromAMap(latLng)); } return result; } - public static List< LonLatPoint > fromMogo( List< MogoLatLng > latLngs ) { - if ( latLngs == null ) { + public static List fromMogo(List latLngs) { + if (latLngs == null) { return null; } - List< LonLatPoint > result = new ArrayList<>( latLngs.size() ); - for ( MogoLatLng latLng : latLngs ) { - result.add( fromMogo( latLng ) ); + List result = new ArrayList<>(latLngs.size()); + for (MogoLatLng latLng : latLngs) { + result.add(fromMogo(latLng)); } return result; } - public static SearchBound fromMogo( MogoSearchBound bound ) { - if ( bound == null ) { + public static SearchBound fromMogo(MogoSearchBound bound) { + if (bound == null) { return null; } - if ( bound.getShape() == MogoSearchBound.SHAPE_BOUND ) { - return new SearchBound( fromMogo( bound.getCenterPoint() ), bound.getRadiusInMeters(), bound.isDistanceSort() ); - } else if ( bound.getShape() == MogoSearchBound.SHAPE_POLYGON ) { - return new SearchBound( fromMogo( bound.getPolyGonList() ) ); - } else if ( bound.getShape() == MogoSearchBound.SHAPE_RECTANGLE ) { - return new SearchBound( fromMogo( bound.getLowerLeft() ), fromMogo( bound.getUpperRight() ) ); + if (bound.getShape() == MogoSearchBound.SHAPE_BOUND) { + return new SearchBound(fromMogo(bound.getCenterPoint()), bound.getRadiusInMeters(), bound.isDistanceSort()); + } else if (bound.getShape() == MogoSearchBound.SHAPE_POLYGON) { + return new SearchBound(fromMogo(bound.getPolyGonList())); + } else if (bound.getShape() == MogoSearchBound.SHAPE_RECTANGLE) { + return new SearchBound(fromMogo(bound.getLowerLeft()), fromMogo(bound.getUpperRight())); } return null; } - public static MogoPoiResult fromAMap( PoiSearchResult result ) { - if ( result == null ) { + public static MogoPoiResult fromAMap(PoiSearchResult result) { + if (result == null) { return null; } MogoPoiResult mogoPoiResult = new MogoPoiResult(); - if ( result.getItems() != null ) { - final List< PoiSearchItem > poiItems = result.getItems(); - final ArrayList< MogoPoiItem > mogoPoiItems = new ArrayList<>( poiItems.size() ); - for ( PoiSearchItem poiItem : poiItems ) { - mogoPoiItems.add( fromAMap( poiItem.getPoi() ) ); + if (result.getItems() != null) { + final List poiItems = result.getItems(); + final ArrayList mogoPoiItems = new ArrayList<>(poiItems.size()); + for (PoiSearchItem poiItem : poiItems) { + mogoPoiItems.add(fromAMap(poiItem.getPoi())); } - mogoPoiResult.setPois( mogoPoiItems ); + mogoPoiResult.setPois(mogoPoiItems); } return mogoPoiResult; } @@ -690,27 +690,27 @@ public class ObjectUtils { // return null; // } - public static PolylineOptions fromMogo( MogoPolylineOptions options ) { - if ( options == null ) { + public static PolylineOptions fromMogo(MogoPolylineOptions options) { + if (options == null) { return null; } PolylineOptions target = new PolylineOptions(); - if ( options.getPoints() != null ) { - List< LonLatPoint > points = new ArrayList<>(); - for ( MogoLatLng point : options.getPoints() ) { - points.add( fromMogo( point ) ); + if (options.getPoints() != null) { + List points = new ArrayList<>(); + for (MogoLatLng point : options.getPoints()) { + points.add(fromMogo(point)); } - target.setLonLatPoints( points ); + target.lonLatPoints(points); } - target.setLineWidth( options.getWidth() ); - target.setColor( options.getColor() ); + target.setLineWidth(options.getWidth()); + target.setColor(options.getColor()); // target.zIndex( options.getWidth() ); // target.visible( options.isVisible() ); //// target.geodesic( options.isGeodesic() ); // target.setDottedLine( options.isDottedLine() ); - target.useGradient( options.isGradient() ); - if ( options.getColorValues() != null ) { - target.colorValues( options.getColorValues() ); + target.useGradient(options.isGradient()); + if (options.getColorValues() != null) { + target.colorValues(options.getColorValues()); } // target.transparency( options.getTransparency() ); // target.aboveMaskLayer( options.isAboveMaskLayer() ); @@ -727,24 +727,24 @@ public class ObjectUtils { // return new MogoLatLng( latLng.latitude, latLng.longitude ); // } - public static MapCameraPosition fromAMap( CameraPosition position ) { - if ( position == null ) { + public static MapCameraPosition fromAMap(CameraPosition position) { + if (position == null) { return null; } - return new MapCameraPosition( fromAMap( position.getTarget() ), position.getBearing(), position.getTilt(), position.getZoom() ); + return new MapCameraPosition(fromAMap(position.getTarget()), position.getBearing(), position.getTilt(), position.getZoom()); } - private static String getCategory( String key ) { + private static String getCategory(String key) { String category = ""; - if ( key.equals( "加油站" ) ) { + if (key.equals("加油站")) { category = "6"; - } else if ( key.equals( "停车场" ) ) { + } else if (key.equals("停车场")) { category = "12"; - } else if ( key.equals( "餐馆" ) ) { + } else if (key.equals("餐馆")) { category = "22"; - } else if ( key.equals( "洗车" ) ) { + } else if (key.equals("洗车")) { category = "8"; - } else if ( key.equals( "厕所" ) ) { + } else if (key.equals("厕所")) { } return category; diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 99e827b866..0ba83c66f7 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -34,6 +34,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter implementation rootProject.ext.dependencies.callchatprovider + implementation "com.mogo.httpdns:httpdns-helper:1.0.1" if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap api rootProject.ext.dependencies.mogomapapi diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/MogoHttpDnsUtil.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/MogoHttpDnsUtil.java new file mode 100644 index 0000000000..348442bc14 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/MogoHttpDnsUtil.java @@ -0,0 +1,64 @@ +package com.mogo.module.common.utils; + +import android.content.Context; + +import com.mogo.commons.network.Utils; +import com.mogo.httpdnshelper.sdk.HttpDnsHelper; +import com.mogo.httpdnshelper.sdk.IHttpDnsConfig; +import com.mogo.httpdnshelper.sdk.bean.HttpDnsSimpleLocation; +import com.mogo.map.location.MogoLocation; +import com.mogo.module.common.MogoApisHandler; + +import org.jetbrains.annotations.NotNull; + +/** + * MogoHttpDnsHelper包装类 + * + * @author tongchenfei + */ +public class MogoHttpDnsUtil { + private MogoHttpDnsUtil(){ + + } + private final static MogoHttpDnsUtil INSTANCE = new MogoHttpDnsUtil(); + public static MogoHttpDnsUtil getInstance(){ + return INSTANCE; + } + + public void init(Context context){ + HttpDnsHelper.INSTANCE.init(context, new IHttpDnsConfig() { + @NotNull + @Override + public HttpDnsSimpleLocation getCurrentLocation() { + MogoLocation last = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation(); + if(last!=null){ + return new HttpDnsSimpleLocation(last.getCityCode(), last.getLatitude(), last.getLongitude()); + } + return null; + } + + @Override + public boolean showDebugLog() { + return true; + } + + @NotNull + @Override + public String getSn() { + return Utils.getSn(); + } + }); + } + + public String getHttpAddress(){ + return HttpDnsHelper.INSTANCE.getHttpDnsAddress(HttpDnsHelper.HTTP_DNS_TYPE_HTTP); + } + + public String getWsAddress(){ + return HttpDnsHelper.INSTANCE.getHttpDnsAddress(HttpDnsHelper.HTTP_DNS_TYPE_WS); + } + + public void release(){ + HttpDnsHelper.INSTANCE.release(); + } +} diff --git a/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_common_icon_close_vr.png b/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_common_icon_close_vr.png new file mode 100644 index 0000000000..d6335d823f Binary files /dev/null and b/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_common_icon_close_vr.png differ diff --git a/modules/mogo-module-common/src/main/res/drawable/module_common_close_selector_vr.xml b/modules/mogo-module-common/src/main/res/drawable/module_common_close_selector_vr.xml new file mode 100644 index 0000000000..46ace8dfc8 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/drawable/module_common_close_selector_vr.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/net/DelayCheckApiServices.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/net/DelayCheckApiServices.java deleted file mode 100644 index 612df49588..0000000000 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/net/DelayCheckApiServices.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mogo.module.extensions.net; - -import com.mogo.commons.data.BaseData; - -import java.util.Map; - -import io.reactivex.Observable; -import retrofit2.http.FieldMap; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.GET; -import retrofit2.http.POST; - -/** - * 时延验证相关接口 - * - * @author tongchenfei - */ -public interface DelayCheckApiServices { - - @GET("/yycp-test-service/net/delay/heartbeat") - Observable emptyInterface(); - - @POST("/yycp-test-service/net/delay/log") - @FormUrlEncoded - Observable uploadDelayCheckData(@FieldMap Map params); -} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index 6b619506d1..98112de258 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -192,7 +192,7 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener(RequestOptions.create(context)) { - @Override - public void onSuccess(BaseData o) { - super.onSuccess(o); - netDelay = SystemClock.elapsedRealtime() - requestTime; - startUpload(); - - } - - @Override - public void onError(Throwable e) { - super.onError(e); - handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); - } - }); - } - - private void startUpload() { - MogoLocation lastLocation = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation(); - if (lastLocation == null) { - handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY); - return; - } - Map params = new HashMap<>(8); - params.put("sn", Utils.getSn()); - params.put("startTime", requestSystemTime); - params.put("endTime", System.currentTimeMillis()); - params.put("netState", NetworkUtils.netStrengthLevel); - params.put("place", lastLocation.getAddress()); - params.put("cityCode", lastLocation.getCityCode()); - params.put("lat", lastLocation.getLatitude()); - params.put("lon", lastLocation.getLongitude()); - - MogoApisHandler.getInstance().getApis().getNetworkApi() - .create(DelayCheckApiServices.class, DztHttpConstant.getBaseUrl()) - .uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()) - .subscribe(new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(BaseData o) { - super.onSuccess(o); - - handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY); - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); - } - - @Override - public void onError(Throwable e) { - super.onError(e); - handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); - } - }); - } -} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index 054bdadf5e..ad8f008f79 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -292,12 +292,12 @@ public class TopViewAnimHelper { int scene = 0; if (animNavInfoView.isVisible()) { scene = Scene.NAVI_WITH_ROAD_EVENT; - animNavInfoView.animate().translationY(computeNaviMarginTop(child.getHeight())).start(); + animNavInfoView.animate().translationY(computeNaviMarginTop(params.height)).start(); animNavInfoView.exchangeToSmall(true); } else { scene = Scene.AIMLESS_WITH_ROAD_EVENT; } - topContainer.animate().translationY(child.getHeight()).setListener(mainAnimListener).start(); + topContainer.animate().translationY(params.height).setListener(mainAnimListener).start(); Logger.d(TAG, "show top setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); } catch (Exception e) { diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckApiServices.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckApiServices.java new file mode 100644 index 0000000000..5a1050edf3 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckApiServices.java @@ -0,0 +1,39 @@ +package com.mogo.module.main.delaycheck; + +import com.mogo.commons.data.BaseData; + +import java.util.Map; + +import io.reactivex.Observable; +import okhttp3.RequestBody; +import retrofit2.http.Body; +import retrofit2.http.FieldMap; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.POST; + +/** + * 时延验证相关接口 + * + * @author tongchenfei + */ +public interface DelayCheckApiServices { + + /** + * 空接口 + * @return 什么都不返回 + */ + @GET("/yycp-test-service/net/delay/heartbeat") + Observable emptyInterface(); + + /** + * 时延上报接口 接口文档如下 + * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48967034 + * @param params 相关参数,详见文档 + * @return 相关返回值,详见文档 + */ + @POST("/yycp-test-service/net/delay/log") + @Headers({"Content-type:application/json;charset=UTF-8"}) + Observable uploadDelayCheckData(@Body RequestBody params); +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckHttpConstant.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckHttpConstant.java new file mode 100644 index 0000000000..41ebedaf72 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckHttpConstant.java @@ -0,0 +1,28 @@ +package com.mogo.module.main.delaycheck; + +import com.mogo.commons.debug.DebugConfig; + +/** + * dzt base url + * + * @author tongchenfei + */ +public class DelayCheckHttpConstant { + public static final String HOST_DEV = "http://dzt-test.zhidaozhixing.com"; + public static final String HOST_TEST = "http://dzt-test.zhidaozhixing.com"; + public static final String HOST_DEMO = "http://dzt-show.zhidaozhixing.com"; + public static final String HOST_PRODUCT = "http://dzt.zhidaozhixing.com"; + + public static String getBaseUrl(){ + switch ( DebugConfig.getNetMode() ) { + case DebugConfig.NET_MODE_DEV: + return HOST_DEV; + case DebugConfig.NET_MODE_QA: + return HOST_TEST; + case DebugConfig.NET_MODE_DEMO: + return HOST_DEMO; + default: + return HOST_PRODUCT; + } + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResponse.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResponse.java new file mode 100644 index 0000000000..e88d95bdbb --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResponse.java @@ -0,0 +1,29 @@ +package com.mogo.module.main.delaycheck; + +import com.mogo.commons.data.BaseData; + +/** + * 延迟检测response + * + * @author tongchenfei + */ +public class DelayCheckResponse extends BaseData { + private DelayCheckResult result; + + public DelayCheckResult getResult() { + return result; + } + + public void setResult(DelayCheckResult result) { + this.result = result; + } + + @Override + public String toString() { + return "DelayCheckResponse{" + + "result=" + result + + ", code=" + code + + ", msg='" + msg + '\'' + + '}'; + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResult.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResult.java new file mode 100644 index 0000000000..320407a9be --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckResult.java @@ -0,0 +1,41 @@ +package com.mogo.module.main.delaycheck; + +/** + * 延迟检查返回结果 + * + * @author tongchenfei + */ +public class DelayCheckResult { + /** + * 是否保持心跳 + */ + private boolean necessary; + /** + * 心跳间隔,单位 s + */ + private int beatSeconds; + + public boolean isNecessary() { + return necessary; + } + + public void setNecessary(boolean necessary) { + this.necessary = necessary; + } + + public int getBeatSeconds() { + return beatSeconds; + } + + public void setBeatSeconds(int beatSeconds) { + this.beatSeconds = beatSeconds; + } + + @Override + public String toString() { + return "DelayCheckResult{" + + "necessary=" + necessary + + ", beatSeconds=" + beatSeconds + + '}'; + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUploadRequest.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUploadRequest.java new file mode 100644 index 0000000000..11d6216d74 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUploadRequest.java @@ -0,0 +1,111 @@ +package com.mogo.module.main.delaycheck; + +/** + * 时延检测上报请求参数 + * + * @author tongchenfei + */ +public class DelayCheckUploadRequest { + private String sn; + private long startTime; + private long endTime; + /** + * 请求时长 + */ + private long burning; + /** + * 信号强度 + */ + private int netState; + private String place; + private String cityCode; + private double lat; + private double lon; + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public long getStartTime() { + return startTime; + } + + public void setStartTime(long startTime) { + this.startTime = startTime; + } + + public long getEndTime() { + return endTime; + } + + public void setEndTime(long endTime) { + this.endTime = endTime; + } + + public long getBurning() { + return burning; + } + + public void setBurning(long burning) { + this.burning = burning; + } + + public int getNetState() { + return netState; + } + + public void setNetState(int netState) { + this.netState = netState; + } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + @Override + public String toString() { + return "DelayCheckUploadRequest{" + + "sn='" + sn + '\'' + + ", startTime=" + startTime + + ", endTime=" + endTime + + ", burning=" + burning + + ", netState=" + netState + + ", place='" + place + '\'' + + ", cityCode='" + cityCode + '\'' + + ", lat=" + lat + + ", lon=" + lon + + '}'; + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUtil.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUtil.java new file mode 100644 index 0000000000..61292de9d8 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/delaycheck/DelayCheckUtil.java @@ -0,0 +1,160 @@ +package com.mogo.module.main.delaycheck; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; + +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; +import com.mogo.map.location.MogoLocation; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.utils.NetworkUtils; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.mogo.utils.network.utils.GsonUtil; + +import java.util.HashMap; +import java.util.Map; + +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +/** + * 延时验证工具类 + * + * @author tongchenfei + */ +public class DelayCheckUtil implements Handler.Callback { + private static final String TAG = "DelayCheckUtil"; + private final Handler handler = new Handler(this); + + private static final int MSG_CHECK_NET_CONNECT_STATUS = 1001; + /** + * 首次延时检测时间间隔,暂定10分钟,等待机器稳定后再做打算 + */ + private static final long FIRST_CHECK_NET_CONNECT_STATUS_DELAY = 10 * 60 * 1000; + private static final long CHECK_NET_CONNECT_STATUS_DELAY = 5000L; + + private static final int MSG_START_DELAY_CHECK = 1002; + /** + * 默认检测时间间隔,若服务端正确返回,以服务端返回为主 + */ + private static final long DELAY_CHECK_DELAY = 10 * 60 * 1000; + + private final Context context; + + public DelayCheckUtil(Context context) { + this.context = context; + } + + /** + * 每5s检查一下网络状态,网络状态为连接状态时,开始空接口请求以及后续的参数上报 + */ + public void waitingForCheck() { + Logger.d(TAG, "waitingForCheck==="); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, FIRST_CHECK_NET_CONNECT_STATUS_DELAY); + } + + private long requestTime, netDelay, requestStartSystemTime,requestEndSystem; + + @Override + public boolean handleMessage(Message msg) { + switch (msg.what) { + case MSG_CHECK_NET_CONNECT_STATUS: + if (NetworkUtils.isConnected(context)) { + handler.sendEmptyMessage(MSG_START_DELAY_CHECK); + } else { + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + return true; + case MSG_START_DELAY_CHECK: + // 请求空接口 + startEmptyRequest(); + return true; + default: + return false; + } + } + + private void startEmptyRequest() { + Logger.d(TAG, "start empty request"); + requestTime = SystemClock.elapsedRealtime(); + requestStartSystemTime = System.currentTimeMillis(); + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl()) + .emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + requestEndSystem = System.currentTimeMillis(); + netDelay = SystemClock.elapsedRealtime() - requestTime; + startUpload(); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + }); + } + + private void startUpload() { + Logger.d(TAG, "start upload"); + MogoLocation lastLocation = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation(); + if (lastLocation == null) { + handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY); + return; + } + Logger.d(TAG, "lastLocation: " + lastLocation); + DelayCheckUploadRequest request = new DelayCheckUploadRequest(); + request.setSn(Utils.getSn()); + request.setStartTime(requestStartSystemTime); + request.setEndTime(requestEndSystem); + request.setNetState(NetworkUtils.netStrengthLevel); + request.setPlace(lastLocation.getAddress()); + request.setCityCode(lastLocation.getCityCode()); + request.setLat(lastLocation.getLatitude()); + request.setLon(lastLocation.getLongitude()); + request.setBurning(netDelay); + + RequestBody params = RequestBody.create(MediaType.get("application/json"), GsonUtil.jsonFromObject(request)); + + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl()) + .uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(DelayCheckResponse o) { + super.onSuccess(o); + Logger.d(TAG, "上报时延成功 " + o); + DelayCheckResult result = o.getResult(); + if(result.isNecessary()) { + handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, result.getBeatSeconds() * 1000); + } + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + }); + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java index 149ffad5e7..8651848b93 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java @@ -12,8 +12,10 @@ import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.utils.MogoHttpDnsUtil; import com.mogo.module.main.EventDispatchCenter; import com.mogo.module.main.cards.MogoModulesManager; +import com.mogo.module.main.delaycheck.DelayCheckUtil; import com.mogo.service.IMogoServiceApis; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -48,6 +50,11 @@ class MogoMainService extends Service implements IMogoLocationListener { initGpsSimulatorListener(); }, 2_000L ); + // 开启延时检测 + DelayCheckUtil delayCheckUtil = new DelayCheckUtil(this); + delayCheckUtil.waitingForCheck(); + + MogoHttpDnsUtil.getInstance().init(this); } @Nullable @@ -104,5 +111,6 @@ class MogoMainService extends Service implements IMogoLocationListener { mLocationClient = null; } mServiceApis = null; + MogoHttpDnsUtil.getInstance().release(); } } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java index 8cb65969ab..e21c7b9420 100755 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java @@ -1,165 +1,174 @@ package com.mogo.module.media.widget; import android.content.Context; -import android.content.res.TypedArray; +import android.graphics.BlurMaskFilter; import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.EmbossMaskFilter; import android.graphics.Paint; -import android.graphics.Paint.Align; import android.graphics.RectF; +import android.graphics.SweepGradient; import android.util.AttributeSet; import android.view.View; -import com.mogo.module.media.R; /** * 环形进度条 */ public class PercentageRingView extends View { - private Paint mCirclePaint; - private Paint mTextPaint; - private Paint mArcPaint; - private int mCircleX; - private int mCircleY; - private float mCurrentAngle; - private RectF mArcRectF; - private float mStartSweepValue; - private float mTargetPercent; - private float mCurrentPercent; - private int mRadius; - private int mCircleBackground; - private int mRingColor; - private int mTextSize; - private int mTextColor; + private Paint pathPaint; + private Paint fillArcPaint; + // 设置光源的方向 + private float[] direction = new float[]{1, 1, 1}; + /** + * 透明 + */ + public static final int TRANSPARENT = 0x00000000; + /** + * 红色 + */ + public static final int RED = 0xffff0000; + + // 设置环境光亮度 + private float light = 0.4f; + //渐变数组 + private int[] arcColors = new int[]{RED, TRANSPARENT}; + + // 选择要应用的反射等级 + private float specular = 6; + private EmbossMaskFilter emboss; + private RectF oval; + private BlurMaskFilter mBlur; + // view重绘的标记 + private boolean reset = false; + // 向 mask应用一定级别的模糊 + private float blur = 3.5f; + private int arcradus = 30; + //初始化进度 + private int progress = 0; + //设置进度最大值 + private int max = 100; - public PercentageRingView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context); - } public PercentageRingView(Context context, AttributeSet attrs) { super(context, attrs); - //自定义属性 values/attr - TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PercentageRing); - //中间圆的背景颜色 默认为浅紫色 - mCircleBackground = typedArray.getColor(R.styleable.PercentageRing_circleBackground, 0xffafb4db); - //外圆环的颜色 默认为深紫色 - mRingColor = typedArray.getColor(R.styleable.PercentageRing_ringColor, 0xff6950a1); - //中间圆的半径 默认为60 - mRadius = typedArray.getInt(R.styleable.PercentageRing_radius, 60); - //字体颜色 默认为白色 - mTextColor = typedArray.getColor(R.styleable.PercentageRing_textColor, 0xffffffff); - //最后一定要调用这个 释放掉TypedArray - typedArray.recycle(); - //初始化数据 - init(context); + initPaint(); + oval = new RectF(); + emboss = new EmbossMaskFilter(direction, light, specular, blur); + mBlur = new BlurMaskFilter(20, BlurMaskFilter.Blur.NORMAL); } - public PercentageRingView(Context context) { - super(context); - init(context); + //初始化画笔操作 + private void initPaint() { + //初始化画笔操作 + pathPaint = new Paint(); + // 设置是否抗锯齿 + pathPaint.setAntiAlias(true); + // 帮助消除锯齿 + pathPaint.setFlags(Paint.ANTI_ALIAS_FLAG); + // 设置中空的样式 + pathPaint.setStyle(Paint.Style.STROKE); + pathPaint.setDither(true); + pathPaint.setStrokeJoin(Paint.Join.ROUND); + + fillArcPaint = new Paint(); + // 设置是否抗锯齿 + fillArcPaint.setAntiAlias(true); + // 帮助消除锯齿 + fillArcPaint.setFlags(Paint.ANTI_ALIAS_FLAG); + // 设置中空的样式 + fillArcPaint.setStyle(Paint.Style.STROKE); + fillArcPaint.setDither(true); + fillArcPaint.setStrokeJoin(Paint.Join.ROUND); } - private void init(Context context) { - //圆环开始角度 -90° 正北方向 - mStartSweepValue = -90; - //当前角度 - mCurrentAngle = 0; - //当前百分比 - mCurrentPercent = 0; - //设置中心园的画笔 - mCirclePaint = new Paint(); - mCirclePaint.setAntiAlias(true); - mCirclePaint.setColor(mCircleBackground); - mCirclePaint.setStyle(Paint.Style.FILL); - //设置文字的画笔 - mTextPaint = new Paint(); - mTextPaint.setColor(mTextColor); - mTextPaint.setAntiAlias(true); - mTextPaint.setStyle(Paint.Style.FILL); - mTextPaint.setStrokeWidth((float) (0.025 * mRadius)); - mTextPaint.setTextSize(mRadius / 2); - mTextPaint.setTextAlign(Align.CENTER); - //设置外圆环的画笔 - mArcPaint = new Paint(); - mArcPaint.setAntiAlias(true); - mArcPaint.setColor(mRingColor); - mArcPaint.setStyle(Paint.Style.STROKE); -// mArcPaint.setStrokeWidth((float) (0.075 * mRadius)); - mArcPaint.setStrokeWidth((float) (0.17 * mRadius)); - //获得文字的字号 因为要设置文字在圆的中心位置 - mTextSize = (int) mTextPaint.getTextSize(); - } - - //主要是测量wrap_content时候的宽和高,因为宽高一样,只需要测量一次宽即可,高等于宽 - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(measure(widthMeasureSpec), measure(widthMeasureSpec)); - //设置圆心坐标 - mCircleX = getMeasuredWidth() / 2; - mCircleY = getMeasuredHeight() / 2; - //如果半径大于圆心横坐标,需要手动缩小半径的值,否则就画到外面去了 - if (mRadius > mCircleX) { - //设置半径大小为圆心横坐标到原点的距离 - mRadius = mCircleX; - mRadius = (int) (mCircleX - 0.075 * mRadius); - //因为半径改变了,所以要重新设置一下字体宽度 - mTextPaint.setStrokeWidth((float) (0.025 * mRadius)); - //重新设置字号 - mTextPaint.setTextSize(mRadius / 2); - //重新设置外圆环宽度 -// mArcPaint.setStrokeWidth((float) (0.075 * mRadius)); - mArcPaint.setStrokeWidth((float) (0.17 * mRadius)); - //重新获得字号大小 - mTextSize = (int) mTextPaint.getTextSize(); - } - //画中心园的外接矩形,用来画圆环用 - mArcRectF = new RectF(mCircleX - mRadius, mCircleY - mRadius, mCircleX + mRadius, mCircleY + mRadius); - } - - //当wrap_content的时候,view的大小根据半径大小改变,但最大不会超过屏幕 - private int measure(int measureSpec) { - int result = 0; - int specMode = MeasureSpec.getMode(measureSpec); - int specSize = MeasureSpec.getSize(measureSpec); - if (specMode == MeasureSpec.EXACTLY) { - result = specSize; - } else { - result = (int) (1.075 * mRadius * 2); - if (specMode == MeasureSpec.AT_MOST) { - result = Math.min(result, specSize); - } - } - return result; - - } - - //开始画中间圆、文字和外圆环 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - //画中间圆 - canvas.drawCircle(mCircleX, mCircleY, mRadius, mCirclePaint); - //画圆环 - canvas.drawArc(mArcRectF, mStartSweepValue, mCurrentAngle, false, mArcPaint); - //画文字 - canvas.drawText(String.valueOf(mCurrentPercent) + "%", mCircleX, mCircleY + mTextSize / 4, mTextPaint); - //判断当前百分比是否小于设置目标的百分比 - if (mCurrentPercent < mTargetPercent) { - //当前百分比+1 - mCurrentPercent += 1; - //当前角度+360 - mCurrentAngle += 3.6; - //每10ms重画一次 - postInvalidateDelayed(10); + if (reset) { + canvas.drawColor(Color.TRANSPARENT); + reset = false; } + drawcircle(canvas); } - //设置目标的百分比 - public void setTargetPercent(int percent) { - this.mTargetPercent = percent; + private void drawcircle(Canvas canvas) { + int height = getMeasuredWidth(); + int width = getMeasuredWidth(); + //半径 = 宽/2-圆环的宽度 + int radius = width / 2 - arcradus; + int cx = width / 2; + int cy = height / 2; + pathPaint.setColor(Color.BLUE); + //绘制大圆 + canvas.drawCircle(width / 2, height / 2, radius + arcradus + / 2 + 0.5f, pathPaint); + //绘制小圆 + canvas.drawCircle(width / 2, height / 2, radius - arcradus + / 2 - 0.5f, pathPaint); + + // 环形颜色填充 + SweepGradient sweepGradient = + new SweepGradient(width / 2, height / 2, arcColors, null); + fillArcPaint.setShader(sweepGradient); + // 设置画笔为白色 + + // 模糊效果 + fillArcPaint.setMaskFilter(mBlur); + // 设置线的类型,边是圆的 + fillArcPaint.setStrokeCap(Paint.Cap.ROUND); + + //设置圆弧的宽度 + fillArcPaint.setStrokeWidth(arcradus + 1); + // 确定圆弧的绘制位置,也就是里面圆弧坐标和外面圆弧坐标 + oval.set(width / 2 - radius, height / 2 - radius, width + / 2 + radius, height / 2 + radius); + // 画圆弧,第二个参数为:起始角度,第三个为跨的角度,第四个为true的时候是实心,false的时候为空心 + canvas.drawArc(oval, + 0, + ((float) progress / max) * 360, + false, + fillArcPaint); + } + + public int getProgress() { + return progress; + } + + public void setProgress(int progress) { + this.progress = progress; + this.invalidate(); + } + + public int getMax() { + return max; + } + + public void setMax(int max) { + this.max = max; + } + + public int[] getArcColors() { + return arcColors; + } + + public void setArcColors(int[] arcColors) { + this.arcColors = arcColors; +// this.invalidate(); + } + + /** + * 描述:重置进度 + * + * @throws + */ + public void reset() { + reset = true; + this.progress = 0; + this.invalidate(); } } diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java index 084475dd0d..42f1aa3342 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java @@ -1,6 +1,7 @@ package com.mogo.module.media.window; import android.content.Context; +import android.graphics.Color; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -68,6 +69,7 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { private ICallProviderResponse mCallProviderResponse; private CircleNumberProgress mPercentageRingView; +// private PercentageRingView mPercentageRingView; private ImageView mPauseImage; private AnimCircleImageView mAnimCircleImageView; @@ -149,6 +151,15 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { mAnimCircleImageView = mWindowView.findViewById(R.id.window_circle_img_new); mPauseImage = mWindowView.findViewById(R.id.window_play_pause_new); +// int[] arcColors = new int[]{ +// Color.parseColor("#1Affffff"), +// Color.parseColor("#80ffffff"), +// Color.parseColor("#BFffffff"), +// Color.parseColor("#ffffff") +// }; +// +// mPercentageRingView.setArcColors(arcColors); + if (mPauseImage != null) { mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause_new); } @@ -366,7 +377,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { @Override public void onMusicPlaying() { Logger.d(TAG, "onMusicPlaying===" + mMediaInfoData); - Log.d(TAG, "onMusicPlaying===" + mMediaInfoData); isFirstPlay = false; updateWindowUI(false); if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { @@ -393,7 +403,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { @Override public void onMusicPause() { Logger.d(TAG, "onMusicPause: ===" + mMediaInfoData); - Log.d(TAG, "onMusicPause: ===" + mMediaInfoData); if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { if (mPauseImage != null) { mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause_new); @@ -418,7 +427,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { @Override public void onMusicStopped() { Logger.d(TAG, "onMusicStopped===" + mMediaInfoData); - Log.d(TAG, "onMusicStopped===" + mMediaInfoData); if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { if (mPauseImage != null) { mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause_new); @@ -443,7 +451,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { @Override public void onMediaInfoChanged(MediaInfoData mediaInfoData) { Logger.d(TAG, "onMediaInfoChanged: " + mediaInfoData); - Log.d(TAG, "onMediaInfoChanged:" + mediaInfoData); mMediaInfoData = mediaInfoData; addWindowView(); updateWindowUI(); @@ -458,7 +465,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { (int) ((current * 1.0f * 100) / (total * 1.0f)); if (mPercentageRingView != null) { mPercentageRingView.setVisibility(View.VISIBLE); - Log.d(TAG, "progress vr = " + progress); mPercentageRingView.setProgress(progress); } } catch (Exception e) { @@ -477,7 +483,6 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { int progress = (int) ((current * 1.0f * 100) / (total * 1.0f)); if (mWindowProgress != null) { -// Log.d(TAG, "progress = " + progress); mWindowProgress.setProgress(progress); } } catch (Exception e) { diff --git a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml index 606fb00f07..9766ec9ffb 100644 --- a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml +++ b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml @@ -23,10 +23,7 @@ - - - - + - @@ -33,4 +35,4 @@ android:layout_centerInParent="true" android:src="@drawable/module_small_map_view_border" /> - \ No newline at end of file + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/alarm/V2XAlarmServer.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/alarm/V2XAlarmServer.java index c85a80e593..ef7ce042d4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/alarm/V2XAlarmServer.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/alarm/V2XAlarmServer.java @@ -2,7 +2,6 @@ package com.mogo.module.v2x.alarm; import android.text.TextUtils; -import com.mogo.commons.debug.DebugConfig; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.map.search.geo.IMogoGeoSearchListener; @@ -253,6 +252,10 @@ public class V2XAlarmServer { //Logger.i(MODULE_NAME, "根据经纬度查询结果为:" + regeocodeResult.getRegeocodeAddress().getFormatAddress()); String keyword = "停车场"; boolean isHighWay = false; + if (regeocodeResult == null || regeocodeResult.getRegeocodeAddress() == null || + regeocodeResult.getRegeocodeAddress().getFormatAddress() == null) { + return; + } // 如果当前位置是高速则推荐服务区 if (regeocodeResult.getRegeocodeAddress().getFormatAddress().contains("高速")) { keyword = "停车场|服务区"; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java index bc46500439..ddba430565 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java @@ -269,7 +269,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { mAlarmInfoMarker.setInfoWindowAdapter(new RoadConditionInfoWindow3DAdapter(markerShowEntity, AbsMogoApplication.getApp(), mAlarmInfoMarker.getMogoMarkerOptions())); mAlarmInfoMarker.showInfoWindow(); } else{ - optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity)); +// optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity)); mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); } // 当前Marker设置为最上面 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java index 94edcd19be..a8184cce51 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java @@ -47,9 +47,11 @@ public class MoGoV2XPolylineManager implements IMoGoV2XPolylineManager { case V2XPoiTypeEnum.ALERT_TRAFFIC_LIGHT_WARNING: case V2XPoiTypeEnum.FOURS_BLOCK_UP: case V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + "": + colors.add(0xFFFFA31A); colors.add(0xFFFFA31A); break; default: + colors.add(0xFFE32F46); colors.add(0xFFE32F46); break; } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundLayout.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundLayout.java index b0645b5823..a32e369284 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundLayout.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundLayout.java @@ -80,6 +80,14 @@ public class RoundLayout extends RelativeLayout implements IMogoSkinCompatSuppor super.draw(canvas); } + @Override + public void setBackgroundResource(int resId) { + super.setBackgroundResource(resId); + if (mBackgroundTintHelper != null) { + mBackgroundTintHelper.onSetBackgroundResource(resId); + } + } + @Override public void applySkin() { if (mBackgroundTintHelper != null) { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt index 149bf52401..c6158ee49b 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt @@ -10,6 +10,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.mogo.module.common.glide.SkinAbleBitmapTarget import com.mogo.module.v2x.R +import com.mogo.module.v2x.V2XServiceManager import com.mogo.utils.logger.Logger import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.utils.GSYVideoType @@ -45,6 +46,9 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer { } override fun getLayoutId(): Int { + if (V2XServiceManager.getMoGoStatusManager().isVrMode) { + return R.layout.v2x_road_video_plyer_layout_vr + } return R.layout.v2x_road_video_plyer_layout } diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_bg_video_tip_vr.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_bg_video_tip_vr.xml new file mode 100644 index 0000000000..3d287b5ac1 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_bg_video_tip_vr.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml index 847361a586..2e010d7624 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml @@ -119,8 +119,8 @@ + app:roundLayoutRadius="@dimen/dp_20" /> + + + + + + + + + + + + + + + + + + + + + + + + //加载中圈圈 + + + + diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout_vr.xml index d502ef6947..83891cf1a4 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout_vr.xml @@ -6,12 +6,12 @@ android:layout_height="@dimen/dp_394" android:layout_alignParentRight="true" android:layout_margin="@dimen/dp_3" - android:background="@drawable/v2x_alert_window_bg"> + android:background="@drawable/v2x_bg_video_tip_vr"> + app:roundLayoutRadius="@dimen/dp_20"> + android:src="@drawable/module_common_close_selector_vr" />