优化播放控制

This commit is contained in:
sifacai@outlook.com 2022-08-23 20:50:39 +08:00
parent f9ab6ca6a8
commit df3e210841
4 changed files with 48 additions and 9 deletions

1
.idea/misc.xml generated
View File

@ -3,6 +3,7 @@
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/code/VlcJellyfin/app/src/main/res/layout/activity_vlc_player.xml" value="0.286231884057971" />
<entry key="..\:/work/VlcJellyfin/app/src/main/res/drawable/shape_user_focus.xml" value="0.1625" />
<entry key="..\:/work/VlcJellyfin/app/src/main/res/drawable/shape_user_focus_VH.xml" value="0.1625" />
<entry key="..\:/work/VlcJellyfin/app/src/main/res/drawable/shape_user_focus_vholder.xml" value="0.1625" />

View File

@ -27,6 +27,7 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
private static final String TAG = "VLC播放器";
public final int TrackType_Subtitle = 0;
public final int TrackType_Audio = 1;
public final int TrackType_Playlist = 2;
private Activity mActivity;
private MediaPlayer mediaPlayer;
@ -47,11 +48,13 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
private ImageView stopBtn;
private ImageView subTracksBtn;
private ImageView audioTracksBtn;
private ImageView playListBtn;
private ImageView pauseFlag;
private SeekBar currPostion;
private Timer progressTime = null;
private PopupMenu playListMenu = null; //播放列表
private PopupMenu subTrackMenu = null; //字幕菜单
private PopupMenu audioTrackMenu = null; //单轨菜单
@ -168,7 +171,6 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
playPauseBtn.setOnClickListener(this);
stopBtn.setOnClickListener(this);
pauseFlag.setOnClickListener(this);
//currPostion.setOnSeekBarChangeListener(this);
currPostion.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
@ -191,8 +193,15 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
MediaPlayer.TrackDescription[] subTrackList = mediaPlayer.getSpuTracks();
MediaPlayer.TrackDescription[] audioTrackList = mediaPlayer.getAudioTracks();
subTracksBtn = findViewById(R.id.subTracks);
audioTracksBtn = findViewById(R.id.audioTracks);
playListBtn = findViewById(R.id.playListBtn);
subTracksBtn = findViewById(R.id.subTracksBtn);
audioTracksBtn = findViewById(R.id.audioTracksBtn);
if(Utils.playList.size() > 1){
initPlayListMenu();
}else{
playListBtn.setVisibility(View.GONE);
}
if(null != subTrackList && subTrackList.length > 1){
initSubTrackMenu(subTrackList);
}else{
@ -207,6 +216,15 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
}
private void initPlayListMenu(){
playListMenu = new PopupMenu(this,playListBtn);
for(int i=0;i<Utils.playList.size();i++){
playListMenu.getMenu().add(TrackType_Playlist,i,i,Utils.playList.get(i).Name);
}
playListMenu.setOnMenuItemClickListener(this);
subTracksBtn.setOnClickListener(this);
}
/**
* 初始化字幕菜单
* @param subTrackList
@ -427,12 +445,15 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
playOrpause();
} else if (id == R.id.stopBtn) {
stop();
} else if (id == R.id.subTracks){
} else if (id == R.id.subTracksBtn){
subTrackMenu.show();
Log.d(TAG, "onClick: 当前轨ID" + mediaPlayer.getSpuTrack());
} else if (id == R.id.audioTracks){
subTrackMenu.getMenu().getItem(mediaPlayer.getSpuTrack()).setChecked(true);
} else if (id == R.id.audioTracksBtn){
audioTrackMenu.show();
Log.d(TAG, "onClick: 当前单轨ID" + mediaPlayer.getAudioTrack());
audioTrackMenu.getMenu().getItem(mediaPlayer.getAudioTrack()).setChecked(true);
} else if (id == R.id.playListBtn){
playListMenu.show();
playListMenu.getMenu().getItem(Utils.playIndex).setChecked(true);
}
}
@ -447,6 +468,9 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
}else if(groupid == TrackType_Audio){
mediaPlayer.setAudioTrack(itemid);
return true;
}else if(groupid == TrackType_Playlist){
Utils.playIndex = itemid;
play();
}
return false;
}

View File

@ -0,0 +1,5 @@
<vector android:height="48dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M4,10h12v2L4,12zM4,6h12v2L4,8zM4,14h8v2L4,16zM14,14v6l5,-3z"/>
</vector>

View File

@ -132,7 +132,7 @@
android:focusable="true"/>
<ImageView
android:id="@+id/subTracks"
android:id="@+id/subTracksBtn"
android:layout_width="@dimen/button_width"
android:layout_height="@dimen/button_height"
android:layout_marginLeft="@dimen/button_margin_left"
@ -141,13 +141,22 @@
android:focusable="true"/>
<ImageView
android:id="@+id/audioTracks"
android:id="@+id/audioTracksBtn"
android:layout_width="@dimen/button_width"
android:layout_height="@dimen/button_height"
android:layout_marginLeft="@dimen/button_margin_left"
android:background="@drawable/shape_user_focus"
android:src="@drawable/ic_outline_audiotrack_48"
android:focusable="true" />
<ImageView
android:id="@+id/playListBtn"
android:layout_width="@dimen/button_width"
android:layout_height="@dimen/button_height"
android:layout_marginLeft="@dimen/button_margin_left"
android:background="@drawable/shape_user_focus"
android:src="@drawable/ic_outline_playlist_play_48"
android:focusable="true" />
</LinearLayout>
</LinearLayout>