簡體   English   中英

如何在 Android 中為 ExoPlayer 設計自定義搜索欄和音量控制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM