添加进度报告

This commit is contained in:
sifacaii 2022-08-24 19:48:04 +08:00
parent 611ddc5dbe
commit ba452b2962
2 changed files with 50 additions and 36 deletions

View File

@ -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);
}
}

View File

@ -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();
}
}