diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java index 79ca7b4f74..73ca6ac8a3 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java @@ -75,6 +75,8 @@ public class ParamsUtil { public static Map< String, Object > getAnalyticsCustomParams() { Map< String, Object > map = new ArrayMap<>(); map.put( "debug", DebugConfig.isDebug() ? 1 : 0 ); + map.put( "systemversion", Utils.getFotaVersion() ); + map.put( "sn", Utils.getSn() ); return map; } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java index 350234532b..ccb06a943c 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java @@ -55,15 +55,24 @@ public class Utils { public static final String GET = "get"; public static final String GSM_SERIAL = "gsm.serial"; + public static final String FOTA_VERSION = "ro.fota.version"; public static final String PROPERTIES = "android.os.SystemProperties"; public static String getSn() { - String serial = ""; + return getSystemProperties( GSM_SERIAL ); + } + + public static String getFotaVersion() { + return getSystemProperties( FOTA_VERSION ); + } + + public static String getSystemProperties( String name ) { + String value = ""; try { Class< ? > c = Class.forName( PROPERTIES ); Method get = c.getMethod( GET, String.class ); - serial = ( String ) get.invoke( c, GSM_SERIAL ); + value = ( String ) get.invoke( c, GSM_SERIAL ); } catch ( ClassNotFoundException var3 ) { var3.printStackTrace(); } catch ( NoSuchMethodException var4 ) { @@ -73,7 +82,6 @@ public class Utils { } catch ( IllegalAccessException var6 ) { var6.printStackTrace(); } - - return serial; + return value; } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java index cae414cf21..46c005b357 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/anim/JSurfaceView.java @@ -15,9 +15,16 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; import com.mogo.utils.ThreadPoolService; +import com.mogo.utils.logger.Logger; + +import java.lang.ref.WeakReference; +import java.util.HashMap; +import java.util.Map; public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder.Callback { + private static final String TAG = "JSurfaceView"; + private SurfaceHolder mHolder; /** @@ -33,6 +40,15 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder */ private int[] mFrames; + // 使用 BitmapFactory.Option.inBitmap 属性复用 bitmap 对象 + private Bitmap mContainerBitmap = null; + + // mContainerBitmap 是否生效 + private boolean mContainerBitmapStatus = true; + + // mContainerBitmapStatus 为 false 时,使用该缓存方案 + private Map< Integer, WeakReference< Bitmap > > mBitmapRefMap = new HashMap<>(); + public JSurfaceView( Context context ) { super( context ); init(); @@ -87,28 +103,60 @@ public class JSurfaceView extends SurfaceView implements Runnable, SurfaceHolder private void drawBitmap() { //获取画布并锁定 - Canvas mCanvas = mHolder.lockCanvas(); - if ( mCanvas == null ) { + Canvas canvas = mHolder.lockCanvas(); + if ( canvas == null ) { return; } //绘制透明色 - mCanvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR ); - Bitmap mBitmap = BitmapFactory.decodeResource( getResources(), mFrames[mCurrentPos % mFrames.length] ); + canvas.drawColor( Color.TRANSPARENT, PorterDuff.Mode.CLEAR ); + + int factPosition = mCurrentPos % mFrames.length; + + if ( mContainerBitmapStatus ) { + if ( mContainerBitmap == null ) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inMutable = true; + mContainerBitmap = BitmapFactory.decodeResource( getResources(), mFrames[factPosition], options ); + } else { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inMutable = true; + options.inBitmap = mContainerBitmap; + try { + BitmapFactory.decodeResource( getResources(), mFrames[factPosition], options ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + mContainerBitmapStatus = false; + mContainerBitmap = null; + } + } + } + if ( !mContainerBitmapStatus ) { + WeakReference< Bitmap > ref = mBitmapRefMap.get( factPosition ); + if ( ref != null && ref.get() != null && !ref.get().isRecycled() ) { + mContainerBitmap = ref.get(); + } else { + mContainerBitmap = BitmapFactory.decodeResource( getResources(), mFrames[factPosition] ); + mBitmapRefMap.put( factPosition, new WeakReference<>( mContainerBitmap ) ); + } + } + + if ( mContainerBitmap == null || mContainerBitmap.isRecycled() ) { + return; + } Paint paint = new Paint(); Rect mSrcRect = new Rect( 0, 0, - mBitmap.getWidth(), - mBitmap.getHeight() ); // 图片绘制 + mContainerBitmap.getWidth(), + mContainerBitmap.getHeight() ); // 图片绘制 Rect mDestRect = new Rect( 0, 0, getWidth(), getHeight() );// 图片绘制位置 - mCanvas.drawBitmap( mBitmap, mSrcRect, mDestRect, paint ); + canvas.drawBitmap( mContainerBitmap, mSrcRect, mDestRect, paint ); //解锁画布,并展示bitmap到surface - mHolder.unlockCanvasAndPost( mCanvas ); - mBitmap.recycle(); + mHolder.unlockCanvasAndPost( canvas ); } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index deb4f5b845..0c29d8820b 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -1,7 +1,6 @@ package com.mogo.module.main; import android.os.Bundle; -import android.os.SystemClock; import android.view.View; import android.widget.FrameLayout; @@ -112,11 +111,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } - @Override - public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels ) { - super.onPageScrolled( position, positionOffset, positionOffsetPixels ); - } - @Override public void onPageScrollStateChanged( int state ) { super.onPageScrollStateChanged( state ); @@ -143,6 +137,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme properties.put( "appname", provider.getAppName() ); properties.put( "packagename", provider.getAppPackage() ); properties.put( "activeTime", System.currentTimeMillis() - mCardStartShowTime ); + properties.put( "type", provider.getModuleName() ); mAnalytics.track( "Launcher_Card_Show", properties ); mCardStartShowTime = System.currentTimeMillis(); } @@ -157,6 +152,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme Map< String, Object > properties = new HashMap<>(); properties.put( "appname", provider.getAppName() ); properties.put( "packagename", provider.getAppPackage() ); + properties.put( "type", provider.getModuleName() ); mAnalytics.track( "Launcher_Card_Slide", properties ); } } ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 28a9cf8288..3235099c5f 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -32,6 +32,10 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.logger.Logger; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.HashMap; import java.util.List; import java.util.Map; @@ -263,6 +267,8 @@ public class MarkerServiceHandler { lastMarker = null; getMarkerManager().removeMarkers(); + JSONArray array = new JSONArray(); + // 解析不同的Marker类型,然后对应的进行绘制 if (response != null && response.getResult() != null) { MarkerCardResult markerCardResult = response.getResult(); @@ -301,7 +307,7 @@ public class MarkerServiceHandler { drawMapMarker(markerShowEntity); } - analyticData(3, onlineCarList.size()); + fillNumberTrackEventBody(array, 3, onlineCarList.size()); } if (exploreWayList != null) { @@ -318,7 +324,7 @@ public class MarkerServiceHandler { drawMapMarker(markerShowEntity); } } - analyticData(1, exploreWayList.size()); + fillNumberTrackEventBody(array, 1, exploreWayList.size()); } if (shareMusicList != null) { @@ -334,7 +340,7 @@ public class MarkerServiceHandler { drawMapMarker(markerShowEntity); } - analyticData(4, shareMusicList.size()); + fillNumberTrackEventBody(array, 4, shareMusicList.size()); } if (noveltyInfoList != null) { @@ -373,27 +379,42 @@ public class MarkerServiceHandler { break; } } - analyticData(2, num_gas_station); - analyticData(6, num_road_closed); - analyticData(5, num_traffic_check); - analyticData(7, num_shop_discount); - analyticData(8, num_fours_shop); + fillNumberTrackEventBody(array,2, num_gas_station); + fillNumberTrackEventBody(array,6, num_road_closed); + fillNumberTrackEventBody(array,5, num_traffic_check); + fillNumberTrackEventBody(array,7, num_shop_discount); + fillNumberTrackEventBody(array,8, num_fours_shop); } + analyticData(array); + } + } + + + private static void fillNumberTrackEventBody(JSONArray arr, int type, int size){ + JSONObject object = new JSONObject( ); + try { + object.put( "type", type ); + object.put( "num", size); + if ( arr != null ) { + arr.put( object ); + } + } catch ( JSONException e ) { + e.printStackTrace(); } - getMapUIController().changeZoom(12); } /** * 统计地图内数据获取 * - * @param type 类型 - * @param num marker数量 + * @param array 埋点数据 */ - private static void analyticData(int type, int num) { + private static void analyticData(JSONArray array) { try { + if ( array == null || array.length() == 0 ) { + return; + } final Map properties = new HashMap<>(); - properties.put("type", type); - properties.put("num", num); + properties.put("data", array.toString()); getMogoAnalytics().track("Launcher_Data_Get", properties); } catch (Exception e) { e.printStackTrace(); @@ -411,14 +432,14 @@ public class MarkerServiceHandler { MogoMarkerOptions options = new MogoMarkerOptions() .owner(markerShowEntity.getMarkerType()) + .alpha( 0.7f ) + .object( markerShowEntity ) .latitude(markerShowEntity.getMarkerLocation().getLat()) .longitude(markerShowEntity.getMarkerLocation().getLon()); options.icon(markerView); IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options); marker.setOnMarkerClickListener(mogoMarkerClickListener); - marker.setObject(markerShowEntity); - marker.setAlpha(0.7f); return marker; } else { Logger.e(TAG, "Location 必须进行初始化!!!!!"); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 89feb55cb7..6ba131ff28 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -116,7 +116,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, case ServiceConst.MSG_TYPE_REFRESH_DECREASE: mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL; if ( mRefreshRemainingTime == 0 ) { - notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback ); + notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); } else { mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL ); } @@ -435,11 +435,11 @@ public class MogoServiceProvider implements IMogoModuleProvider, // 自动刷新触发 if ( mLastAutoRefreshLocation == null ) { mLastAutoRefreshLocation = new MogoLatLng( location.getLatitude(), location.getLongitude() ); - notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback ); + notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); } else { float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, new MogoLatLng( location.getLatitude(), location.getLongitude() ) ); if ( distance > mAutoRefreshStrategy.getDistance() ) { - notifyRefreshData( mLastAutoRefreshLocation, 2_000, mAutoRefreshCallback ); + notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback ); } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java index f6a67463f8..b4e7702f9d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java @@ -30,7 +30,7 @@ public class MogoReceiver extends BroadcastReceiver { /** * ADAS */ - public static final String ADAS_ACTION = "com.mogo.launcher.adas"; + public static final String ADAS_ACTION = "com.zhidao.autopilot.adas"; // ADAS 状态 0 - 关闭 1 - 打开 public static final String PARAM_ADAS_STATUS = "adas_drawer_status"; diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/imageloader/MogoImageView.java b/services/mogo-service-api/src/main/java/com/mogo/service/imageloader/MogoImageView.java index 18612539a7..8b9f951a83 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/imageloader/MogoImageView.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/imageloader/MogoImageView.java @@ -64,6 +64,8 @@ public class MogoImageView extends GenericDraweeView { mIsBlur = arrays.getBoolean( R.styleable.MogoImageView_miv_isBlur, false ); mBlurRadius = arrays.getInt( R.styleable.MogoImageView_miv_blurRadius, 25 ); arrays.recycle(); + + setImageResource( mPlaceHolder ); } public void setRadius( float radius ) {