如何在Android中为ExoPlayer设计自定义搜寻栏和音量控制 [英] How to design custom seekbar and volume control for ExoPlayer in Android
问题描述
我尝试了这和此,用于ExoPlayer的设计自定义搜索栏,但没有运气. /p>
我想为ExoPlayer设计自定义缩略图和ProgressBar.以下是我尝试放入seekbar的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 . AudioManager 对于处理系统容量很有帮助.我已经实现了水平音量 创建AudioManager对象: 增大/减小音量按钮: 使用Seekbar处理音量: I have tried this and this for Design Custom Seekbar for ExoPlayer but no luck. I want to design custom thumb and ProgressBar for ExoPlayer. Following is the XML for ExoPlayer where I've tried to put seekbar but it's not coming as expected. One more question is how can I have custom volume controls for ExoPlayer like we have it in MXPlayer (vertical bar for volume). I have got the Now the only thing is to get vertical volume control like MXPlayer. AudioManager is helpful for handling the system volume. I have implemented horizontal volume Create AudioManager object : Handle Volume up/down Hardware Button : Handle volume using Seekbar :
这篇关于如何在Android中为ExoPlayer设计自定义搜寻栏和音量控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!Seekbar
来控制ExoPlayer
的音频音量.只需使用此即可: 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);
}
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) {
}
});
<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>
Update
SeekBar
using this method.SeekBar seekBar = (SeekBar) mediaController.findViewById(getResources().getIdentifier("mediacontroller_progress","id","android"));
seekBar.setThumb(getResources().getDrawable(R.drawable.player_thumb));
Seekbar
to control audio volume with ExoPlayer
. Just use this : 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);
}
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) {
}
});