From 43bedf50e6cafb1576dc7f4db954e14ebddb0095 Mon Sep 17 00:00:00 2001 From: okjackcaptain <378702538@qq.com> Date: Sat, 24 Sep 2022 10:47:22 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=AD=97=E5=B9=95=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=20-=20=E4=BA=91=E7=9B=98?= =?UTF-8?q?=E5=8E=9F=E7=94=BB=E6=94=AF=E6=8C=81Mx=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=99=A8=20-=20=E4=BA=91=E7=9B=98=E5=8E=9F=E7=94=BB=E6=94=AF?= =?UTF-8?q?=E6=8C=81Kodi=E6=92=AD=E6=94=BE=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../osc/player/controller/VodController.java | 34 ++++++++----------- .../tvbox/osc/player/thirdparty/Kodi.java | 19 ++++++----- .../tvbox/osc/player/thirdparty/MXPlayer.java | 17 +++++----- .../tvbox/osc/ui/activity/PlayActivity.java | 18 +++++----- .../tvbox/osc/ui/fragment/PlayFragment.java | 17 +++++----- 5 files changed, 52 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java index 0f6444f7..136083b9 100644 --- a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java +++ b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java @@ -20,9 +20,6 @@ import com.github.tvbox.osc.R; import com.github.tvbox.osc.api.ApiConfig; import com.github.tvbox.osc.bean.IJKCode; import com.github.tvbox.osc.bean.ParseBean; -import com.github.tvbox.osc.player.thirdparty.Kodi; -import com.github.tvbox.osc.player.thirdparty.MXPlayer; -import com.github.tvbox.osc.player.thirdparty.ReexPlayer; import com.github.tvbox.osc.subtitle.widget.SimpleSubtitleView; import com.github.tvbox.osc.ui.adapter.ParseAdapter; import com.github.tvbox.osc.ui.adapter.SelectDialogAdapter; @@ -347,22 +344,19 @@ public class VodController extends BaseController { // myHandle.postDelayed(myRunnable, myHandleSeconds); try { int playerType = mPlayerConfig.getInt("pl"); - boolean playerVail = false; - do { - playerType++; - if (playerType <= 2) { - playerVail = true; - } else if (playerType == 10) { - playerVail = MXPlayer.getPackageInfo() != null; - } else if (playerType == 11) { - playerVail = ReexPlayer.getPackageInfo() != null; - } else if (playerType == 12) { - playerVail = Kodi.getPackageInfo() != null; - } else if (playerType > 11) { - playerType = 0; - playerVail = true; + ArrayList exsitPlayerTypes = PlayerHelper.getExistPlayerTypes(); + int playerTypeIdx = 0; + int playerTypeSize = exsitPlayerTypes.size(); + for(int i = 0; i 0) { - String[] hds = new String[headers.size() * 2]; + url = url + "|"; int idx = 0; for (String hk : headers.keySet()) { - hds[idx] = hk; - hds[idx + 1] = headers.get(hk).trim(); - idx += 2; + url += hk + "=" + URLEncoder.encode(headers.get(hk).trim()); + if (idx < headers.keySet().size() -1) { + url += "&"; + } + idx ++; } - intent.putExtra("headers", headers); } + intent.setData(Uri.parse(url)); + intent.putExtra("title", title); + intent.putExtra("name", title); if (subtitle != null && !subtitle.isEmpty()) { intent.putExtra("subs", subtitle); diff --git a/app/src/main/java/com/github/tvbox/osc/player/thirdparty/MXPlayer.java b/app/src/main/java/com/github/tvbox/osc/player/thirdparty/MXPlayer.java index 0132f083..bc0290f3 100644 --- a/app/src/main/java/com/github/tvbox/osc/player/thirdparty/MXPlayer.java +++ b/app/src/main/java/com/github/tvbox/osc/player/thirdparty/MXPlayer.java @@ -11,6 +11,7 @@ import android.util.Log; import com.github.tvbox.osc.base.App; +import java.net.URLEncoder; import java.util.HashMap; public class MXPlayer { @@ -80,19 +81,19 @@ public class MXPlayer { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setPackage(packageInfo.packageName); intent.setClassName(packageInfo.packageName, packageInfo.activityName); - - intent.setData(Uri.parse(url)); - intent.putExtra("title", title); if (headers != null && headers.size() > 0) { - String[] hds = new String[headers.size() * 2]; + url = url + "|"; int idx = 0; for (String hk : headers.keySet()) { - hds[idx] = hk; - hds[idx + 1] = headers.get(hk).trim(); - idx += 2; + url += hk + "=" + URLEncoder.encode(headers.get(hk).trim()); + if (idx < headers.keySet().size() -1) { + url += "&"; + } + idx ++; } - intent.putExtra("headers", headers); } + intent.setData(Uri.parse(url)); + intent.putExtra("title", title); if (subtitle != null && !subtitle.isEmpty()) { Parcelable[] parcels = new Parcelable[1]; diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index 49d8b142..bf81e0a1 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -380,8 +380,10 @@ public class PlayActivity extends BaseActivity { mediaPlayer.pause(); long progress = mediaPlayer.getCurrentPosition();//保存当前进度,ijk 切换轨道 会有快进几秒 if (mediaPlayer instanceof IjkMediaPlayer) { - ((IjkMediaPlayer)mediaPlayer).setTrack(value.index); + mController.mSubtitleView.destroy(); + mController.mSubtitleView.clearSubtitleCache(); mController.mSubtitleView.isInternal = true; + ((IjkMediaPlayer)mediaPlayer).setTrack(value.index); new Handler().postDelayed(new Runnable() { @Override public void run() { @@ -493,9 +495,7 @@ public class PlayActivity extends BaseActivity { TrackInfo trackInfo = null; trackInfo = ((IjkMediaPlayer)(mVideoView.getMediaPlayer())).getTrackInfo(); if (trackInfo != null && trackInfo.getSubtitle().size() > 0) { - mController.mSubtitleView.isInternal = true; mController.mSubtitleView.hasInternal = true; - } ((IjkMediaPlayer)(mVideoView.getMediaPlayer())).setOnTimedTextListener(new IMediaPlayer.OnTimedTextListener() { @Override @@ -508,17 +508,17 @@ public class PlayActivity extends BaseActivity { } }); } - mController.mSubtitleView.bindToMediaPlayer(mVideoView.getMediaPlayer()); mController.mSubtitleView.setPlaySubtitleCacheKey(subtitleCacheKey); - if (!mController.mSubtitleView.isInternal) { + String subtitlePathCache = (String)CacheManager.getCache(MD5.string2MD5(subtitleCacheKey)); + if (subtitlePathCache != null && !subtitlePathCache.isEmpty()) { + mController.mSubtitleView.setSubtitlePath(subtitlePathCache); + } else { if (playSubtitle != null && playSubtitle .length() > 0) { - // 设置字幕 mController.mSubtitleView.setSubtitlePath(playSubtitle); } else { - String subtitlePathCache = (String)CacheManager.getCache(MD5.string2MD5(subtitleCacheKey)); - if (subtitlePathCache != null && !subtitlePathCache.isEmpty()) { - mController.mSubtitleView.setSubtitlePath(subtitlePathCache); + if (mController.mSubtitleView.hasInternal) { + mController.mSubtitleView.isInternal = true; } } } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index c6e9a332..c0e39ed3 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -381,8 +381,10 @@ public class PlayFragment extends BaseLazyFragment { mediaPlayer.pause(); long progress = mediaPlayer.getCurrentPosition();//保存当前进度,ijk 切换轨道 会有快进几秒 if (mediaPlayer instanceof IjkMediaPlayer) { - ((IjkMediaPlayer)mediaPlayer).setTrack(value.index); + mController.mSubtitleView.destroy(); + mController.mSubtitleView.clearSubtitleCache(); mController.mSubtitleView.isInternal = true; + ((IjkMediaPlayer)mediaPlayer).setTrack(value.index); new Handler().postDelayed(new Runnable() { @Override public void run() { @@ -492,7 +494,6 @@ public class PlayFragment extends BaseLazyFragment { TrackInfo trackInfo = null; trackInfo = ((IjkMediaPlayer)(mVideoView.getMediaPlayer())).getTrackInfo(); if (trackInfo != null && trackInfo.getSubtitle().size() > 0) { - mController.mSubtitleView.isInternal = true; mController.mSubtitleView.hasInternal = true; } ((IjkMediaPlayer)(mVideoView.getMediaPlayer())).setOnTimedTextListener(new IMediaPlayer.OnTimedTextListener() { @@ -506,17 +507,17 @@ public class PlayFragment extends BaseLazyFragment { } }); } - mController.mSubtitleView.bindToMediaPlayer(mVideoView.getMediaPlayer()); mController.mSubtitleView.setPlaySubtitleCacheKey(subtitleCacheKey); - if (!mController.mSubtitleView.isInternal) { + String subtitlePathCache = (String)CacheManager.getCache(MD5.string2MD5(subtitleCacheKey)); + if (subtitlePathCache != null && !subtitlePathCache.isEmpty()) { + mController.mSubtitleView.setSubtitlePath(subtitlePathCache); + } else { if (playSubtitle != null && playSubtitle .length() > 0) { - // 设置字幕 mController.mSubtitleView.setSubtitlePath(playSubtitle); } else { - String subtitlePathCache = (String)CacheManager.getCache(MD5.string2MD5(subtitleCacheKey)); - if (subtitlePathCache != null && !subtitlePathCache.isEmpty()) { - mController.mSubtitleView.setSubtitlePath(subtitlePathCache); + if (mController.mSubtitleView.hasInternal) { + mController.mSubtitleView.isInternal = true; } } }