[英]How to design custom seekbar and volume control for ExoPlayer in Android
我已經嘗試過這個和這個為 ExoPlayer 設計自定義搜索欄但沒有運氣。
我想為 ExoPlayer 設計自定義拇指和 ProgressBar。 以下是 ExoPlayer 的 XML,我試圖在其中放置搜索欄,但它沒有按預期出現。
<com.google.android.exoplayer.AspectRatioFrameLayout
android:id="@+id/video_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<SurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
<View
android:id="@+id/shutter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"/>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:thumb="@drawable/thumb"/>
<com.google.android.exoplayer.text.SubtitleLayout
android:id="@+id/subtitles"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.google.android.exoplayer.AspectRatioFrameLayout>
還有一個問題是,我如何才能像在MXPlayer中那樣為 ExoPlayer 設置自定義音量控制(垂直音量條)。
我已經使用這種方法獲得了SeekBar
。
SeekBar seekBar = (SeekBar) mediaController.findViewById(getResources().getIdentifier("mediacontroller_progress","id","android"));
seekBar.setThumb(getResources().getDrawable(R.drawable.player_thumb));
現在唯一的事情就是像MXPlayer一樣獲得垂直音量控制。
AudioManager有助於處理系統音量。 我已經實現了水平音量Seekbar
來控制ExoPlayer
的音量。 只需使用這個:
創建 AudioManager 對象:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
處理音量增大/減小硬件按鈕:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN){
volumeSeekBar.setProgress(audioManager.getStreamVolume(exoPlayer.getAudioStreamType()));
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP){
volumeSeekBar.setProgress(audioManager.getStreamVolume(exoPlayer.getAudioStreamType()));
}
return super.onKeyUp(keyCode, event);
}
使用 Seekbar 處理音量:
volumeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
audioManager.setStreamVolume(exoPlayer.getAudioStreamType(), i, 0);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
我創建了一個有效的解決方案(至少對我而言)並創建了一個垂直的 SeekBar。 像這樣創建 Java 類希望這會對您有所幫助。
如果我正確閱讀了 ExoPlayer 源代碼,您必須保留對准備 ExoPlayer 實例時使用的 audioRenderer 的引用。
exoPlayer.prepare(audioRenderer);
要更改音量,您必須發送以下消息:
exoPlayer.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0.1f);
我已經為 ExoPlayer 的 Design Custom Seekbar 嘗試過這個和這個,但沒有運氣。
我想為 ExoPlayer 設計自定義拇指和進度條。 以下是 ExoPlayer 的 XML,我曾嘗試在其中放置搜索欄,但沒有按預期出現。
<com.google.android.exoplayer.AspectRatioFrameLayout
android:id="@+id/video_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<SurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
<View
android:id="@+id/shutter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"/>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:thumb="@drawable/thumb"/>
<com.google.android.exoplayer.text.SubtitleLayout
android:id="@+id/subtitles"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.google.android.exoplayer.AspectRatioFrameLayout>
還有一個問題是我如何為 ExoPlayer 設置自定義音量控件,就像我們在MXPlayer 中一樣(音量垂直條)。
我已經使用這種方法獲得了SeekBar
。
SeekBar seekBar = (SeekBar) mediaController.findViewById(getResources().getIdentifier("mediacontroller_progress","id","android"));
seekBar.setThumb(getResources().getDrawable(R.drawable.player_thumb));
現在唯一要做的就是像MXPlayer一樣獲得垂直音量控制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.