From e96126d8404533b1bc2e7b2e0eff06a693592ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 2 Nov 2020 18:01:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=94=B9=E6=8E=89=E7=9A=84=E7=9B=B4=E6=92=AD?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E7=9A=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java index 4e1ccf0329..205b9d43d5 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java @@ -178,7 +178,7 @@ public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatS private void playLiveVideo(MarkerCarInfo.CarLiveInfo carLiveInfo) { try { if (mLivePlayer != null) { - mLivePlayer.startPlay("rtmp://58.200.131.2:1935/livetv/hunantv", TXLivePlayer.PLAY_TYPE_LIVE_RTMP); + mLivePlayer.startPlay(carLiveInfo.getVideoUrl(), TXLivePlayer.PLAY_TYPE_LIVE_RTMP); mLivePlayer.setPlayListener(new ITXLivePlayListener() { @Override public void onPlayEvent(int event, Bundle bundle) { From 5307924e43604d21cee65561cf109b26a0b50e48 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 2 Nov 2020 18:47:36 +0800 Subject: [PATCH 2/3] opt --- .../tanlu/fragment/TanluListWindow.java | 11 ++++++++--- .../res/drawable-xhdpi/tanlu_circle_image.png | Bin 6908 -> 44187 bytes 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java index dbc96cf077..244dafdc50 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java @@ -602,7 +602,9 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL @Override public void onQueryRoadInfoFail(@NotNull String msg, int code) { Logger.e(TAG, "onQueryRoadInfoFail ----- msg = " + msg); - speakFailVoice(searchfaileVoiceStrings[2]); +// speakFailVoice(searchfaileVoiceStrings[2]); + speakFailVoice("未发现" + mKeywords + "附近的特殊路况"); + moveToMarcker(currentLat, currentLon); } @Override @@ -1158,14 +1160,17 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL .longitude(lon); IMogoMarker mogoAnimationMarker = mMarkerManager.addMarker(TanluConstants.MODEL_NAME, options); - mogoAnimationMarker.startScaleAnimation(0, 4f, 0, 4f, 500, new LinearInterpolator(), new OnMarkerAnimationListener() { + mogoAnimationMarker.startScaleAnimation(0, 1f, 0, 1f, 500, new LinearInterpolator(), new OnMarkerAnimationListener() { @Override public void onAnimStart() { } @Override public void onAnimEnd() { - mogoAnimationMarker.destroy(); + UiThreadHandler.postDelayed( () -> { + mogoAnimationMarker.destroy(); + }, 1_200L ); + } }); diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/tanlu_circle_image.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/tanlu_circle_image.png index 4b3c40856e5f97208a4244492de41f65811c8e89..32847b095dd10aca98da36070cba27165becb15f 100644 GIT binary patch literal 44187 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 literal 6908 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 Date: Mon, 2 Nov 2020 19:49:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?app=E5=88=97=E8=A1=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/apps/AppFilterImpl.java | 11 ++ .../module/apps/applaunch/AppLauncher.java | 16 ++- .../com/mogo/module/apps/model/AppInfo.java | 14 ++- .../com/mogo/module/apps/model/AppsModel.java | 118 ++++++++++++++---- 4 files changed, 133 insertions(+), 26 deletions(-) diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java index 7029ae106b..c000684d06 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppFilterImpl.java @@ -42,6 +42,17 @@ public class AppFilterImpl { } } + public static boolean isSelfApp( PackageInfo packageInfo ) { + try { + if ( packageInfo.packageName.startsWith( "com.mogo.launcher" ) ) { + return true; + } + } catch ( Exception e ) { + + } + return false; + } + public static boolean sFilter( PackageInfo packageInfo ) { if ( isInExternalFilter( packageInfo ) ) { return true; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java index f148156e82..077cc96031 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java @@ -1,6 +1,9 @@ package com.mogo.module.apps.applaunch; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; import com.mogo.module.apps.AppServiceHandler; import com.mogo.module.apps.R; @@ -21,7 +24,18 @@ public class AppLauncher extends BaseAppLauncher { @Override public void launch( Context context, AppInfo appInfo ) { - launch( context, appInfo.getPackageName() ); + if ( !TextUtils.isEmpty( appInfo.getActivityClsName() ) ) { + Intent intent = new Intent(); + intent.setComponent( new ComponentName( appInfo.getPackageName(), appInfo.getActivityClsName() ) ); + try { + intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); + context.startActivity( intent ); + } catch ( Exception e ) { + launch( context, appInfo.getPackageName() ); + } + } else { + launch( context, appInfo.getPackageName() ); + } } @Override diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java index 62b2c34105..8eca3575a3 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java @@ -15,15 +15,17 @@ public class AppInfo { private final String mName; private final String mPackageName; + private final String mActivityClsName; private final String mVersionName; private final int mVersionCode; private final Drawable mIcon; private final int mIconResId; private final int mTrackType; // 埋点类型 - public AppInfo( String mName, String mPackageName, String mVersionName, int mVersionCode, Drawable mIcon, int mIconResId, int mTrackType ) { + public AppInfo( String mName, String mPackageName, String mActivityClsName, String mVersionName, int mVersionCode, Drawable mIcon, int mIconResId, int mTrackType ) { this.mName = mName; this.mPackageName = mPackageName; + this.mActivityClsName = mActivityClsName; this.mVersionName = mVersionName; this.mVersionCode = mVersionCode; this.mIcon = mIcon; @@ -31,8 +33,12 @@ public class AppInfo { this.mTrackType = mTrackType; } + public AppInfo( String mName, String mPackageName, String mVersionName, int mVersionCode, Drawable mIcon, int mIconResId, int mTrackType ) { + this( mName, mPackageName,"", mVersionName, mVersionCode, mIcon, mIconResId, mTrackType ); + } + public AppInfo( String mName, String mPackageName, String mVersionName, int mVersionCode, Drawable mIcon, int mIconResId ) { - this( mName, mPackageName, mVersionName, mVersionCode, mIcon, mIconResId, 0 ); + this( mName, mPackageName,"", mVersionName, mVersionCode, mIcon, mIconResId, 0 ); } public int getIconResId() { @@ -43,6 +49,10 @@ public class AppInfo { return mName; } + public String getActivityClsName() { + return mActivityClsName; + } + public String getPackageName() { return mPackageName; } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java index c7b1df564e..491ea9b82f 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java @@ -1,17 +1,21 @@ package com.mogo.module.apps.model; import android.content.Context; +import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import com.mogo.commons.debug.DebugConfig; import com.mogo.module.apps.AppFilterImpl; import com.mogo.module.apps.AppsConst; import com.mogo.module.apps.AppsListChangedLiveData; import com.mogo.utils.logger.Logger; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -69,7 +73,6 @@ public class AppsModel { AppFilterImpl.loadExternalFilterPackagesList(); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); - e.printStackTrace(); } final PackageManager packageManager = mContext.getPackageManager(); List< PackageInfo > packages = packageManager.getInstalledPackages( 0 ); @@ -77,23 +80,24 @@ public class AppsModel { for ( int i = 0; i < packages.size(); ++i ) { PackageInfo packageInfo = packages.get( i ); if ( AppFilterImpl.sFilter( packageInfo ) ) { + if ( DebugConfig.isDebug() ) { + if ( AppFilterImpl.isSelfApp( packageInfo ) ) { + counter = addSelfLauncher( mContext, packageManager, packageInfo, counter ); + } + } continue; } - int page = counter++ / AppsConst.TOTAL_SIZE_EACH_PAGE; - if ( mPagedApps.get( page ) == null ) { - mPagedApps.put( page, new ArrayList<>() ); + List< ResolveInfo > resolveInfoList = getApkLaunchResolveInfoForInstalled( mContext, packageInfo.packageName ); + if ( resolveInfoList == null || resolveInfoList.isEmpty() ) { + continue; } - String appName = getApplicationName( packageManager, packageInfo ); - String packageName = packageInfo.packageName; - String versionName = packageInfo.versionName; - int versionCode = packageInfo.versionCode; - int iconResId = AppEnumHelper.getCustomizedAppIconResId( packageName ); - Drawable appIcon = null; - if ( iconResId == 0 ) { - appIcon = packageInfo.applicationInfo.loadIcon( packageManager ); + for ( ResolveInfo resolveInfo : resolveInfoList ) { + if ( resolveInfo == null ) { + continue; + } + int page = counter++ / AppsConst.TOTAL_SIZE_EACH_PAGE; + addApp( packageManager, packageInfo, resolveInfo, page ); } - AppInfo appInfo = new AppInfo( appName, packageName, versionName, versionCode, appIcon, iconResId ); - mPagedApps.get( page ).add( appInfo ); } if ( callback != null ) { callback.onLoaded( mPagedApps ); @@ -101,6 +105,82 @@ public class AppsModel { mIsLoaded.set( true ); } + private int addSelfLauncher( Context context, + PackageManager packageManager, + PackageInfo packageInfo, + int counter ) { + List< ResolveInfo > resolveInfoList = getApkLaunchResolveInfoForInstalled( context, packageInfo.packageName ); + if ( resolveInfoList == null || resolveInfoList.isEmpty() ) { + return counter; + } + for ( ResolveInfo resolveInfo : resolveInfoList ) { + if ( resolveInfo == null ) { + continue; + } + if ( TextUtils.equals( resolveInfo.activityInfo.name, + "com.zhidao.mogo.module.main.launcher.MainLauncherActivity" ) ) { + continue; + } + int page = counter++ / AppsConst.TOTAL_SIZE_EACH_PAGE; + addApp( packageManager, packageInfo, resolveInfo, page ); + } + return counter; + } + + /** + * 获取所有可以启动的ResolveInfo,其中包含所有activity及其Icon + * + * @param context context of the operation + * @return all app lists + */ + public static List< ResolveInfo > getApkLaunchResolveInfoForInstalled( Context context, + String packageName ) { + List< ResolveInfo > apps = null; + if ( null != context ) { + PackageManager manager = context.getPackageManager(); + Intent mainIntent = new Intent( Intent.ACTION_MAIN, null ); + mainIntent.addCategory( Intent.CATEGORY_LAUNCHER ); + if ( null != packageName && !packageName.isEmpty() ) { + mainIntent.setPackage( packageName ); + } + apps = manager.queryIntentActivities( mainIntent, 0 ); + } + return null == apps ? new ArrayList<>() : apps; + } + + private void addApp( PackageManager packageManager, + PackageInfo packageInfo, + ResolveInfo resolveInfo, + int page ) { + if ( mPagedApps.get( page ) == null ) { + mPagedApps.put( page, new ArrayList<>() ); + } + mPagedApps.get( page ).add( wrapAppInfo( packageManager, packageInfo, resolveInfo ) ); + } + + private AppInfo wrapAppInfo( PackageManager packageManager, + PackageInfo packageInfo, + ResolveInfo resolveInfo ) { + String appName = getApplicationName( packageManager, packageInfo ); + String packageName = packageInfo.packageName; + String versionName = packageInfo.versionName; + int versionCode = packageInfo.versionCode; + int iconResId = AppEnumHelper.getCustomizedAppIconResId( packageName ); + Drawable appIcon = null; + if ( iconResId == 0 ) { + if ( resolveInfo != null + && resolveInfo.activityInfo != null + && !TextUtils.equals( packageName, resolveInfo.activityInfo.processName ) ) { + appIcon = resolveInfo.activityInfo.loadIcon( packageManager ); + appName = resolveInfo.activityInfo.loadLabel( packageManager ).toString(); + } + if ( appIcon == null ) { + appIcon = packageInfo.applicationInfo.loadIcon( packageManager ); + } + } + return new AppInfo( appName, packageName, resolveInfo != null ? resolveInfo.activityInfo.name : null, versionName, versionCode, appIcon, iconResId, 0 ); + } + public void appAdded( String packageName ) { if ( !mIsLoaded.get() ) { return; @@ -115,16 +195,8 @@ public class AppsModel { final PackageManager packageManager = mContext.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo( packageName, 0 ); if ( !AppFilterImpl.sFilter( packageInfo ) ) { - String appName = getApplicationName( packageManager, packageInfo ); - String versionName = packageInfo.versionName; - int versionCode = packageInfo.versionCode; - Drawable appIcon = packageInfo.applicationInfo.loadIcon( packageManager ); - AppInfo appInfo = new AppInfo( appName, packageName, versionName, versionCode, appIcon, AppEnumHelper.getCustomizedAppIconResId( packageName ) ); int pageIndex = getPageIndex( packageName, true ); - if ( mPagedApps.get( pageIndex ) == null ) { - mPagedApps.put( pageIndex, new ArrayList<>() ); - } - mPagedApps.get( pageIndex ).add( appInfo ); + addApp( packageManager, packageInfo, null, pageIndex ); } AppsListChangedLiveData.getInstance().postValue( true ); } catch ( PackageManager.NameNotFoundException e ) {