如何在Android中为ExoPlayer设计自定义搜寻栏和音量控制 [英] How to design custom seekbar and volume control for ExoPlayer in Android

查看:198
本文介绍了如何在Android中为ExoPlayer设计自定义搜寻栏和音量控制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了,用于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 对于处理系统容量很有帮助.我已经实现了水平音量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) {

            }
        });

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.

<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>

One more question is how can I have custom volume controls for ExoPlayer like we have it in MXPlayer (vertical bar for volume).

Update

I have got the SeekBar using this method.

SeekBar seekBar = (SeekBar) mediaController.findViewById(getResources().getIdentifier("mediacontroller_progress","id","android"));
seekBar.setThumb(getResources().getDrawable(R.drawable.player_thumb));

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 Seekbar to control audio volume with ExoPlayer. Just use this :

Create AudioManager object :

    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

Handle Volume up/down Hardware Button :

    @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);
    }

Handle volume using 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) {

            }
        });

这篇关于如何在Android中为ExoPlayer设计自定义搜寻栏和音量控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆