优化播放控制

This commit is contained in:
sifacai@outlook.com 2022-08-24 00:15:09 +08:00
parent ecb1c29d17
commit 22cc057347
2 changed files with 34 additions and 12 deletions

View File

@ -63,6 +63,8 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
private PopMenu scaleTypeMenu = null; //缩放菜单 private PopMenu scaleTypeMenu = null; //缩放菜单
private PopMenu speedMenu = null; //播放速率菜单 private PopMenu speedMenu = null; //播放速率菜单
private float speedRate[] = {0.5f, 1.0f, 1.5f, 2.0f}; //倍速播放列表
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -224,16 +226,16 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
//初始化缩放键 //初始化缩放键
scaleBtn.setOnClickListener(this); scaleBtn.setOnClickListener(this);
scaleBtn.setText(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name())); scaleBtn.setText(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name()));
scaleTypeMenu = new PopMenu(this,scaleBtn); scaleTypeMenu = new PopMenu(this, scaleBtn);
MediaPlayer.ScaleType[] scaleTypes = MediaPlayer.ScaleType.values(); MediaPlayer.ScaleType[] scaleTypes = MediaPlayer.ScaleType.values();
for(int i=0;i<scaleTypes.length;i++){ for (int i = 0; i < scaleTypes.length; i++) {
PopMenu.menu menu = scaleTypeMenu.add(Type_Scale,i,i,Utils.getVlcScaleTypeName(scaleTypes[i].name())); PopMenu.menu menu = scaleTypeMenu.add(Type_Scale, i, i, Utils.getVlcScaleTypeName(scaleTypes[i].name()));
final int Si = i; final int Si = i;
menu.v.setOnClickListener(new View.OnClickListener() { menu.v.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
scaleTypeMenu.dismiss(); scaleTypeMenu.dismiss();
if(mediaPlayer.getVideoScale() != scaleTypes[Si]){ if (mediaPlayer.getVideoScale() != scaleTypes[Si]) {
mediaPlayer.setVideoScale(scaleTypes[Si]); mediaPlayer.setVideoScale(scaleTypes[Si]);
scaleBtn.setText(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name())); scaleBtn.setText(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name()));
} }
@ -243,7 +245,22 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
//初始化速率键 //初始化速率键
speedBtn.setOnClickListener(this); speedBtn.setOnClickListener(this);
speedMenu = new PopMenu(this,speedBtn); speedMenu = new PopMenu(this, speedBtn);
for (int i = 0; i < speedRate.length; i++) {
PopMenu.menu menu = speedMenu.add(Type_Speed, i, i, String.valueOf(speedRate[i]));
final int Fi = i;
menu.v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
speedMenu.dismiss();
if (mediaPlayer.getRate() != speedRate[Fi]) {
mediaPlayer.setRate(speedRate[Fi]);
speedBtn.setText(String.valueOf(mediaPlayer.getRate()));
}
}
});
}
} }
private void initPlayListMenu() { private void initPlayListMenu() {
@ -272,12 +289,12 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
private void initSubTrackMenu(MediaPlayer.TrackDescription[] subTrackList) { private void initSubTrackMenu(MediaPlayer.TrackDescription[] subTrackList) {
subTrackMenu = new PopMenu(this, subTracksBtn); subTrackMenu = new PopMenu(this, subTracksBtn);
for (int i = 0; i < subTrackList.length; i++) { for (int i = 0; i < subTrackList.length; i++) {
PopMenu.menu m = subTrackMenu.add(Type_SubtitleTrack,i,i,subTrackList[i].name); PopMenu.menu m = subTrackMenu.add(Type_SubtitleTrack, i, i, subTrackList[i].name);
m.v.setOnClickListener(new View.OnClickListener() { m.v.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
subTrackMenu.dismiss(); subTrackMenu.dismiss();
if(m.id != mediaPlayer.getSpuTrack()){ if (m.id != mediaPlayer.getSpuTrack()) {
mediaPlayer.setSpuTrack(m.id); mediaPlayer.setSpuTrack(m.id);
} }
} }
@ -289,12 +306,12 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
private void initAudioTrackMenu(MediaPlayer.TrackDescription[] audioTrackList) { private void initAudioTrackMenu(MediaPlayer.TrackDescription[] audioTrackList) {
audioTrackMenu = new PopMenu(this, audioTracksBtn); audioTrackMenu = new PopMenu(this, audioTracksBtn);
for (int i = 0; i < audioTrackList.length; i++) { for (int i = 0; i < audioTrackList.length; i++) {
PopMenu.menu m = audioTrackMenu.add(Type_SubtitleTrack,i,i,audioTrackList[i].name); PopMenu.menu m = audioTrackMenu.add(Type_SubtitleTrack, i, i, audioTrackList[i].name);
m.v.setOnClickListener(new View.OnClickListener() { m.v.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
audioTrackMenu.dismiss(); audioTrackMenu.dismiss();
if(m.id != mediaPlayer.getAudioTrack()){ if (m.id != mediaPlayer.getAudioTrack()) {
mediaPlayer.setAudioTrack(m.id); mediaPlayer.setAudioTrack(m.id);
} }
} }
@ -303,7 +320,6 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
audioTracksBtn.setOnClickListener(this); audioTracksBtn.setOnClickListener(this);
} }
/** /**
* 显示控制器 * 显示控制器
*/ */
@ -507,8 +523,10 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
audioTrackMenu.show(mediaPlayer.getAudioTrack()); audioTrackMenu.show(mediaPlayer.getAudioTrack());
} else if (id == R.id.playListBtn) { } else if (id == R.id.playListBtn) {
playListMenu.show(Utils.playIndex); playListMenu.show(Utils.playIndex);
} else if (id == R.id.scaleBtn){ } else if (id == R.id.scaleBtn) {
scaleTypeMenu.show(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name())); scaleTypeMenu.show(Utils.getVlcScaleTypeName(mediaPlayer.getVideoScale().name()));
} else if (id == R.id.scaleBtn) {
speedMenu.show(String.valueOf(mediaPlayer.getRate()));
} }
} }
} }

View File

@ -133,10 +133,14 @@
<TextView <TextView
android:id="@+id/speedBtn" android:id="@+id/speedBtn"
android:layout_width="@dimen/button_width" android:layout_width="wrap_content"
android:minWidth="@dimen/button_width"
android:layout_height="@dimen/button_height" android:layout_height="@dimen/button_height"
android:layout_marginLeft="@dimen/button_margin_left" android:layout_marginLeft="@dimen/button_margin_left"
android:background="@drawable/shape_user_focus" android:background="@drawable/shape_user_focus"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:gravity="center"
android:textSize="@dimen/title_size" android:textSize="@dimen/title_size"
android:focusable="true" /> android:focusable="true" />