From 49fbbe905aa5aaf347f202557446750e72a4f027 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Mon, 3 Aug 2020 10:49:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=BA=E5=99=A8=E4=B8=8A?= =?UTF-8?q?=E6=9C=AA=E8=A3=85=E9=85=B7=E6=88=91=E9=9F=B3=E4=B9=90=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/media/presenter/NoopPresenter.java | 52 +++++++++++++++++++ .../media/presenter/PresenterFactory.java | 45 ++++++++++++++++ .../module/media/window/MediaWindow2.java | 6 ++- 3 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java create mode 100644 modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java new file mode 100644 index 0000000000..4270a87d06 --- /dev/null +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/NoopPresenter.java @@ -0,0 +1,52 @@ +package com.mogo.module.media.presenter; + +import android.content.Context; + +import com.mogo.module.media.model.MediaInfoData; +import com.mogo.module.media.view.IMusicView; + +/** + * 空presenter实现,为了减少各种空判断 + * + * @author tongchenfei + */ +public class NoopPresenter extends BaseMediaPresenter { + public NoopPresenter(IMusicView view) { + super(view); + } + + @Override + public void init(Context context) { + + } + + @Override + public void play(MediaInfoData mediaInfoData) { + + } + + @Override + public void pause(MediaInfoData mediaInfoData) { + + } + + @Override + public void stop(MediaInfoData mediaInfoData) { + + } + + @Override + public void pre() { + + } + + @Override + public void next() { + + } + + @Override + public void openApp() { + + } +} diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java new file mode 100644 index 0000000000..c5661387b7 --- /dev/null +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/PresenterFactory.java @@ -0,0 +1,45 @@ +package com.mogo.module.media.presenter; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; + +import com.mogo.module.media.view.IMusicView; + +import java.util.List; + +/** + * Presenter简单工厂,根据包名判断选择哪个presenter + * + * @author tongchenfei + */ +public class PresenterFactory { + private static final String KW_PKG_NAME = "cn.kuwo.kwmusiccar"; + private static final String WE_CAR_FLOW_PKG_NAME = "com.tencent.wecarflow"; + + /** + * 获取泛型是IMusicView的BaseMediaPresenter + * + * @param context 上下文,用来遍历机器上的包名 + * @param view IMusicView,用来做view展示 + * @return presenter + */ + public static BaseMediaPresenter createMusicViewPresenter(Context context, + IMusicView view) { + BaseMediaPresenter result = null; + PackageManager pkm = context.getPackageManager(); + List pkgInfoList = pkm.getInstalledPackages(0); + // 只做了两级优先级判断,比较简单 + for (PackageInfo pkgInfo : pkgInfoList) { + if (pkgInfo.packageName.equals(KW_PKG_NAME)) { + result = new KwPresenter(view); + } else if (pkgInfo.packageName.equals(WE_CAR_FLOW_PKG_NAME) && result == null) { + result = new WeCarFlowPresenter(view); + } + } + if (result == null) { + result = new NoopPresenter(view); + } + return result; + } +} 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 55eb757511..5991f1ed25 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 @@ -17,7 +17,9 @@ import com.mogo.module.media.ServiceMediaHandler; import com.mogo.module.media.constants.MusicConstant; import com.mogo.module.media.listener.NoDoubleClickListener; import com.mogo.module.media.model.MediaInfoData; +import com.mogo.module.media.presenter.BaseMediaPresenter; import com.mogo.module.media.presenter.KwPresenter; +import com.mogo.module.media.presenter.PresenterFactory; import com.mogo.module.media.utils.Utils; import com.mogo.module.media.view.IMusicView; import com.mogo.module.media.widget.AnimCircleImageView; @@ -41,7 +43,7 @@ public class MediaWindow2 implements IMusicView { public static final String TAG = MediaWindow2.class.getName(); private Context mContext; - private KwPresenter mPresenter; + private BaseMediaPresenter mPresenter; private MediaInfoData mMediaInfoData = new MediaInfoData(); @@ -60,7 +62,7 @@ public class MediaWindow2 implements IMusicView { public void initMedia(Context context) { mContext = context; - mPresenter = new KwPresenter(this); + mPresenter = PresenterFactory.createMusicViewPresenter(context, this); mPresenter.init(context); if(DebugConfig.isLauncher()) {