|
@@ -40,7 +40,7 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
|
|
|
private TextView mTvTitle;
|
|
|
private Group mGroupPlayInfo;
|
|
|
- private ImageView mIvStatusIcon;
|
|
|
+ // private ImageView mIvStatusIcon;
|
|
|
private TextView mTvProgress;
|
|
|
private TextView mTvStatusText;
|
|
|
private AppCompatSeekBar mSeekbar;
|
|
@@ -66,6 +66,9 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
}
|
|
|
};
|
|
|
private TextView mTvTotalProgress;
|
|
|
+ private TextView mTvPackUp;
|
|
|
+ private String fileUrl;
|
|
|
+ private OnEventListener mEventListener;
|
|
|
|
|
|
|
|
|
public CourseWarePlayView(@NonNull Context context) {
|
|
@@ -89,10 +92,11 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
mSeekbar = findViewById(R.id.seekbar);
|
|
|
mTvProgress = findViewById(R.id.tv_progress);
|
|
|
mTvStatusText = findViewById(R.id.tv_status_text);
|
|
|
- mIvStatusIcon = findViewById(R.id.iv_status_icon);
|
|
|
mTvTotalProgress = findViewById(R.id.tv_total_progress);
|
|
|
mIvPlay.setOnClickListener(this);
|
|
|
- mIvStatusIcon.setOnClickListener(this);
|
|
|
+ findViewById(R.id.tv_close).setOnClickListener(this);
|
|
|
+ mTvPackUp = findViewById(R.id.tv_pack_up);
|
|
|
+ mTvPackUp.setOnClickListener(this);
|
|
|
}
|
|
|
|
|
|
public void setName(String name) {
|
|
@@ -139,16 +143,15 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
this.playStatus = playStatus;
|
|
|
if (playStatus == PLAY_STATUS_LOADING) {
|
|
|
mGroupPlayInfo.setVisibility(View.GONE);
|
|
|
- mIvStatusIcon.setVisibility(View.GONE);
|
|
|
mTvStatusText.setText("正在加载...");
|
|
|
+ setPackUpUI();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (playStatus == PLAY_STATUS_FAIL) {
|
|
|
//加载失败
|
|
|
mGroupPlayInfo.setVisibility(View.GONE);
|
|
|
- mIvStatusIcon.setVisibility(View.VISIBLE);
|
|
|
- mIvStatusIcon.setImageResource(R.drawable.icon_play_courseware_reload);
|
|
|
+ setPackUpUI();
|
|
|
mTvStatusText.setText("重新加载");
|
|
|
return;
|
|
|
}
|
|
@@ -158,24 +161,31 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
int durationMillis = getAudioMixerManager().getDurationMillis();
|
|
|
setTotalProgress(durationMillis);
|
|
|
mGroupPlayInfo.setVisibility(View.VISIBLE);
|
|
|
- mIvStatusIcon.setVisibility(View.VISIBLE);
|
|
|
- mIvStatusIcon.setImageResource(R.drawable.icon_stop_play_course_ware);
|
|
|
mTvStatusText.setText("正在播放");
|
|
|
mIvPlay.setImageResource(R.drawable.icon_pause_course_ware);
|
|
|
+ setPackUpUI();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (playStatus == PLAY_STATUS_PAUSE || playStatus == PLAY_STATUS_STOP) {
|
|
|
//播放中
|
|
|
mGroupPlayInfo.setVisibility(View.VISIBLE);
|
|
|
- mIvStatusIcon.setVisibility(View.VISIBLE);
|
|
|
- mIvStatusIcon.setImageResource(R.drawable.icon_stop_play_course_ware);
|
|
|
mTvStatusText.setText("播放暂停");
|
|
|
mIvPlay.setImageResource(R.drawable.icon_play_course_ware);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void setPackUpUI() {
|
|
|
+ if (playStatus == PLAY_STATUS_FAIL) {
|
|
|
+ mTvPackUp.setText("刷新");
|
|
|
+ mTvPackUp.setCompoundDrawablesWithIntrinsicBounds(null, null, getContext().getResources().getDrawable(R.drawable.icon_play_courseware_reload), null);
|
|
|
+ } else {
|
|
|
+ mTvPackUp.setText("收起");
|
|
|
+ mTvPackUp.setCompoundDrawablesWithIntrinsicBounds(null, null, getContext().getResources().getDrawable(R.drawable.icon_pack_up_courseware), null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
int id = v.getId();
|
|
@@ -186,18 +196,59 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
if (playStatus == PLAY_STATUS_PAUSE) {
|
|
|
getAudioMixerManager().resume();
|
|
|
}
|
|
|
+ if (playStatus == PLAY_STATUS_STOP) {
|
|
|
+ restart();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- if (id == R.id.iv_status_icon) {
|
|
|
+ if (id == R.id.tv_close) {
|
|
|
+ //关闭
|
|
|
+ stop();
|
|
|
+ setVisibility(View.GONE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (id == R.id.tv_pack_up) {
|
|
|
+ //收起
|
|
|
if (playStatus == PLAY_STATUS_FAIL) {
|
|
|
//刷新
|
|
|
+ restart();
|
|
|
} else {
|
|
|
- stop();
|
|
|
- setVisibility(View.GONE);
|
|
|
+ //收起
|
|
|
+ if (mEventListener != null) {
|
|
|
+ mEventListener.onPackUp();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void restart() {
|
|
|
+ if (!TextUtils.isEmpty(fileUrl)) {
|
|
|
+ start(fileUrl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean isPackUp = false;
|
|
|
+
|
|
|
+ public void packUp() {
|
|
|
+ isPackUp = true;
|
|
|
+ setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void expand() {
|
|
|
+ isPackUp = false;
|
|
|
+ setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void setOnEventListener(OnEventListener listener) {
|
|
|
+ this.mEventListener = listener;
|
|
|
+ }
|
|
|
+
|
|
|
+ public interface OnEventListener {
|
|
|
+ void onPackUp();//收起按钮
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private RtcAudioMixerControl getAudioMixerManager() {
|
|
|
if (mRtcAudioMixerControl == null) {
|
|
@@ -243,10 +294,12 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
|
|
|
|
|
|
private void stop() {
|
|
|
+ isPackUp = false;
|
|
|
getAudioMixerManager().stop();
|
|
|
}
|
|
|
|
|
|
public void release() {
|
|
|
+ isPackUp = false;
|
|
|
if (mRtcAudioMixerControl != null) {
|
|
|
mRtcAudioMixerControl.stop();
|
|
|
}
|
|
@@ -255,10 +308,16 @@ public class CourseWarePlayView extends FrameLayout implements View.OnClickListe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public boolean isPackUp() {
|
|
|
+ return isPackUp;
|
|
|
+ }
|
|
|
+
|
|
|
public void start(String fileUrl) {
|
|
|
if (TextUtils.isEmpty(fileUrl)) {
|
|
|
return;
|
|
|
}
|
|
|
+ this.fileUrl = fileUrl;
|
|
|
setPlayStatus(PLAY_STATUS_LOADING);
|
|
|
getAudioMixerManager().startMix(fileUrl);
|
|
|
}
|