add option to use system default caption style

This commit is contained in:
Bnyro 2022-07-16 21:21:32 +02:00
parent 9c31c16a0b
commit e876557368
4 changed files with 42 additions and 0 deletions

View File

@ -23,9 +23,11 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.accessibility.CaptioningManager
import android.widget.Toast
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
@ -78,6 +80,7 @@ import com.google.android.exoplayer2.source.MediaSource
import com.google.android.exoplayer2.source.MergingMediaSource
import com.google.android.exoplayer2.source.ProgressiveMediaSource
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
import com.google.android.exoplayer2.ui.CaptionStyleCompat
import com.google.android.exoplayer2.ui.PlayerNotificationManager
import com.google.android.exoplayer2.ui.StyledPlayerView
import com.google.android.exoplayer2.ui.TimeBar
@ -738,6 +741,14 @@ class PlayerFragment : Fragment() {
useController = false
player = exoPlayer
}
val useSystemCaptionStyle = PreferenceHelper.getBoolean(requireContext(), "system_caption_style", true)
if (useSystemCaptionStyle) {
// set the subtitle style
val captionStyle = getCaptionStyle()
exoPlayerView.subtitleView?.setApplyEmbeddedStyles(captionStyle == CaptionStyleCompat.DEFAULT)
exoPlayerView.subtitleView?.setStyle(captionStyle)
}
}
private fun initializePlayerView(view: View, response: Streams) {
@ -1531,4 +1542,14 @@ class PlayerFragment : Fragment() {
}
}
}
private fun getCaptionStyle(): CaptionStyleCompat {
val captioningManager = ContextCompat.getSystemService(
requireContext(),
CaptioningManager::class.java
)
return if (captioningManager == null || !captioningManager.isEnabled) {
CaptionStyleCompat.DEFAULT
} else CaptionStyleCompat.createFromCaptionStyle(captioningManager.userStyle)
}
}

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM11,11L9.5,11v-0.5h-2v3h2L9.5,13L11,13v1c0,0.55 -0.45,1 -1,1L7,15c-0.55,0 -1,-0.45 -1,-1v-4c0,-0.55 0.45,-1 1,-1h3c0.55,0 1,0.45 1,1v1zM18,11h-1.5v-0.5h-2v3h2L16.5,13L18,13v1c0,0.55 -0.45,1 -1,1h-3c-0.55,0 -1,-0.45 -1,-1v-4c0,-0.55 0.45,-1 1,-1h3c0.55,0 1,0.45 1,1v1z" />
</vector>

View File

@ -249,4 +249,5 @@
<string name="history_summary">Watch and search history</string>
<string name="watch_positions_title">Watch positions</string>
<string name="reset_watch_positions">Reset watch positions</string>
<string name="system_caption_style">System caption style</string>
</resources>

View File

@ -78,6 +78,16 @@
</PreferenceCategory>
<PreferenceCategory app:title="@string/player">
<SwitchPreferenceCompat
android:icon="@drawable/ic_caption"
app:key="system_caption_style"
app:title="@string/system_caption_style"
app:defaultValue="true" />
</PreferenceCategory>
<PreferenceCategory>
<SwitchPreferenceCompat