From ba452b29624ce9234a3ce2c808f316f2b2f4b93e Mon Sep 17 00:00:00 2001 From: sifacaii Date: Wed, 24 Aug 2022 19:48:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=9B=E5=BA=A6=E6=8A=A5?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/sifacai/vlcjellyfin/Utils.java | 56 ++++++++----------- .../vlcjellyfin/VlcPlayerActivity.java | 30 +++++++++- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils.java index 494c17f..c864431 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils.java @@ -115,31 +115,41 @@ public class Utils { return (i * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT; } + public enum ReportType{ + playing, + Progress, + stop + } + + /** + * 报告播放开始 + * @param PositionTicks + */ + public static void ReportPlaying(long PositionTicks){ + String url = JellyfinUrl + "/Sessions/Playing"; + String json = "{\"itemId\":\"" + playList.get(playIndex).Id + "\",\"PositionTicks\":\"" + PositionTicks * 10000 + "\"}"; + okhttpSend(url,json); + } + /** * 报告播放进度 - * @param baseUrl - * @param Id * @param paused * @param PositionTicks - * @param token */ - public static void ReportPlaybackProgress(String baseUrl, String Id, boolean paused, long PositionTicks,String token) { - String json = "{\"itemId\" : \"" + Id + "\",\"canSeek\" : \"true\",\"isPaused\":\"" + paused + "\",\"isMuted\":\"false\","; - json += "\"positionTicks\": \"" + PositionTicks * 10000 + "\",\"PlayMethod\":\"DirectStream\"}"; - String url = baseUrl + "/Sessions/Playing/Progress"; + public static void ReportPlaybackProgress(boolean paused, long PositionTicks) { + String json = "{\"itemId\" : \"" + playList.get(playIndex).Id + "\",\"canSeek\" : \"true\",\"isPaused\":\"" + paused + "\",\"isMuted\":\"false\","; + json += "\"positionTicks\": \"" + PositionTicks * 10000 + "\",\"PlayMethod\":\"DirectPlay\"}"; + String url = JellyfinUrl + "/Sessions/Playing/Progress"; okhttpSend(url,json); } /** * 播放停止 - * @param baseUrl - * @param Id * @param PositionTicks - * @param token */ - public static void ReportPlaybackStop(String baseUrl, String Id, long PositionTicks,String token) { - String url = baseUrl + "/Sessions/Playing/Stopped"; - String json = "{\"itemId\":\"" + Id + "\",\"PositionTicks\":\"" + PositionTicks * 10000 + "\"}"; + public static void ReportPlaybackStop(long PositionTicks) { + String url = JellyfinUrl + "/Sessions/Playing/Stopped"; + String json = "{\"itemId\":\"" + playList.get(playIndex).Id + "\",\"PositionTicks\":\"" + PositionTicks * 10000 + "\"}"; okhttpSend(url,json); } @@ -165,24 +175,4 @@ public class Utils { } return ""; } - - public static int dp2px(Context context, float value) { - return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, context.getResources().getDisplayMetrics()) + 0.5f); - } - - public static int sp2px(Context context, float value) { - return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, value, context.getResources().getDisplayMetrics()) + 0.5f); - } - - public static int pt2px(Context context, float value) { - return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, value, context.getResources().getDisplayMetrics()) + 0.5f); - } - - public static int in2px(Context context, float value) { - return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_IN, value, context.getResources().getDisplayMetrics()) + 0.5f); - } - - public static int mm2px(Context context, float value) { - return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, value, context.getResources().getDisplayMetrics()) + 0.5f); - } } diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java index e841611..1e28b74 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java @@ -65,6 +65,10 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event private float speedRate[] = {0.5f, 1.0f, 1.5f, 2.0f}; //倍速播放列表 + private int ReportTime = 20; // 报告进度间隔次数 + private int ReportVal = 0; //累积次数 + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -94,16 +98,17 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event Hide(); pauseFlag.setVisibility(View.GONE); Log.d(TAG, "onEvent: 打开成功"); + ReportPlayState(Utils.ReportType.playing); initMenu(); break; case MediaPlayer.Event.Paused: //暂停 pauseFlag.setVisibility(View.VISIBLE); break; case MediaPlayer.Event.Stopped: + ReportPlayState(Utils.ReportType.stop); playNext(); break; case MediaPlayer.Event.Opening: //媒体打开 - Log.d(TAG, "onEvent: 媒体打开"); break; case MediaPlayer.Event.Buffering: //媒体加载public float getBuffering() 获取加载视频流的进度0-100 int Buffering = (int) event.getBuffering(); @@ -115,7 +120,6 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event Log.d(TAG, "onEvent: 取消loading"); dismissLoadingDialog(); } - Log.d(TAG, "onEvent: 加载:" + Buffering); break; case MediaPlayer.Event.EndReached://媒体播放结束 Log.d(TAG, "onEvent: EndReached"); @@ -124,7 +128,11 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event Log.d(TAG, "onEvent: EncounteredError"); break; case MediaPlayer.Event.TimeChanged://视频时间变化 - //setSeekBar(event.getTimeChanged()); + ReportVal += 1; + if(ReportVal > ReportTime){ + ReportPlayState(Utils.ReportType.Progress); + ReportVal = 0; + } break; case MediaPlayer.Event.PositionChanged://视频总时长的百分比 Log.d(TAG, "onEvent: 百分之:" + mediaPlayer.getPosition()); @@ -531,4 +539,20 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event speedMenu.show(String.valueOf(mediaPlayer.getRate())); } } + + private void ReportPlayState(Utils.ReportType type){ + long currplaytime = mediaPlayer.getTime(); + new Thread(new Runnable() { + @Override + public void run() { + if(type == Utils.ReportType.playing){ + Utils.ReportPlaying(currplaytime); + }else if(type == Utils.ReportType.stop){ + Utils.ReportPlaybackStop(currplaytime); + }else if(type == Utils.ReportType.Progress){ + Utils.ReportPlaybackProgress(!mediaPlayer.isPlaying(),currplaytime); + } + } + }).start(); + } } \ No newline at end of file