Exoplayer repeat & shuffle controls
This commit is contained in:
parent
e47d9f4548
commit
c858d556d5
@ -2,13 +2,7 @@ package sushi.hardcore.droidfs.file_viewers
|
|||||||
|
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import com.google.android.exoplayer2.*
|
import com.google.android.exoplayer2.*
|
||||||
import com.google.android.exoplayer2.extractor.ExtractorsFactory
|
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory
|
||||||
import com.google.android.exoplayer2.extractor.flac.FlacExtractor
|
|
||||||
import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor
|
|
||||||
import com.google.android.exoplayer2.extractor.mp3.Mp3Extractor
|
|
||||||
import com.google.android.exoplayer2.extractor.mp4.Mp4Extractor
|
|
||||||
import com.google.android.exoplayer2.extractor.ogg.OggExtractor
|
|
||||||
import com.google.android.exoplayer2.extractor.wav.WavExtractor
|
|
||||||
import com.google.android.exoplayer2.source.MediaSource
|
import com.google.android.exoplayer2.source.MediaSource
|
||||||
import com.google.android.exoplayer2.source.ProgressiveMediaSource
|
import com.google.android.exoplayer2.source.ProgressiveMediaSource
|
||||||
import sushi.hardcore.droidfs.ConstValues
|
import sushi.hardcore.droidfs.ConstValues
|
||||||
@ -28,14 +22,8 @@ abstract class MediaPlayer: FileViewerActivity() {
|
|||||||
|
|
||||||
private fun createMediaSource(filePath: String): MediaSource {
|
private fun createMediaSource(filePath: String): MediaSource {
|
||||||
val dataSourceFactory = GocryptfsDataSource.Factory(gocryptfsVolume, filePath)
|
val dataSourceFactory = GocryptfsDataSource.Factory(gocryptfsVolume, filePath)
|
||||||
return ProgressiveMediaSource.Factory(dataSourceFactory, ExtractorsFactory { arrayOf(
|
return ProgressiveMediaSource.Factory(dataSourceFactory, DefaultExtractorsFactory())
|
||||||
MatroskaExtractor(),
|
.createMediaSource(MediaItem.fromUri(ConstValues.fakeUri))
|
||||||
Mp4Extractor(),
|
|
||||||
Mp3Extractor(),
|
|
||||||
OggExtractor(),
|
|
||||||
WavExtractor(),
|
|
||||||
FlacExtractor()
|
|
||||||
) }).createMediaSource(MediaItem.fromUri(ConstValues.fakeUri))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initializePlayer(){
|
private fun initializePlayer(){
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
android:id="@+id/audio_controller"
|
android:id="@+id/audio_controller"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:show_timeout="0"/>
|
app:show_timeout="0"
|
||||||
|
app:show_shuffle_button="true"
|
||||||
|
app:repeat_toggle_modes="all|one"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@ -2,6 +2,7 @@
|
|||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:background="@color/fullScreenBackgroundColor">
|
android:background="@color/fullScreenBackgroundColor">
|
||||||
|
|
||||||
@ -9,6 +10,8 @@
|
|||||||
android:id="@+id/video_player"
|
android:id="@+id/video_player"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="center"/>
|
android:layout_gravity="center"
|
||||||
|
app:show_shuffle_button="true"
|
||||||
|
app:repeat_toggle_modes="all|one"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
73
app/src/main/res/layout/exo_player_control_view.xml
Normal file
73
app/src/main/res/layout/exo_player_control_view.xml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:layoutDirection="ltr"
|
||||||
|
android:background="#CC000000"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:targetApi="28">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_shuffle"
|
||||||
|
style="@style/ExoMediaButton"/>
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_prev"
|
||||||
|
style="@style/ExoMediaButton.Previous"/>
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_play"
|
||||||
|
style="@style/ExoMediaButton.Play"/>
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_pause"
|
||||||
|
style="@style/ExoMediaButton.Pause"/>
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_next"
|
||||||
|
style="@style/ExoMediaButton.Next"/>
|
||||||
|
|
||||||
|
<ImageButton android:id="@id/exo_repeat_toggle"
|
||||||
|
style="@style/ExoMediaButton"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView android:id="@id/exo_position"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingLeft="4dp"
|
||||||
|
android:paddingRight="4dp"
|
||||||
|
android:includeFontPadding="false"
|
||||||
|
android:textColor="#FFBEBEBE"/>
|
||||||
|
|
||||||
|
<View android:id="@id/exo_progress_placeholder"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_height="26dp"/>
|
||||||
|
|
||||||
|
<TextView android:id="@id/exo_duration"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingLeft="4dp"
|
||||||
|
android:paddingRight="4dp"
|
||||||
|
android:includeFontPadding="false"
|
||||||
|
android:textColor="#FFBEBEBE"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user