MPVPlayer: Use preferred languages

This commit is contained in:
jarnedemeulemeester 2021-09-16 19:00:11 +02:00
parent 9cddd50d0e
commit 87edeabb9a
No known key found for this signature in database
GPG key ID: B61B7B150DB6A6D2
3 changed files with 204 additions and 188 deletions

View file

@ -39,7 +39,8 @@ import java.util.concurrent.CopyOnWriteArraySet
@Suppress("SpellCheckingInspection") @Suppress("SpellCheckingInspection")
class MPVPlayer( class MPVPlayer(
context: Context, context: Context,
requestAudioFocus: Boolean requestAudioFocus: Boolean,
preferredLanguages: Map<String, String>
) : BasePlayer(), MPVLib.EventObserver, AudioManager.OnAudioFocusChangeListener { ) : BasePlayer(), MPVLib.EventObserver, AudioManager.OnAudioFocusChangeListener {
private val audioManager: AudioManager by lazy { context.getSystemService()!! } private val audioManager: AudioManager by lazy { context.getSystemService()!! }
@ -81,6 +82,17 @@ class MPVPlayer(
MPVLib.setOptionString("sub-font-provider", "none") MPVLib.setOptionString("sub-font-provider", "none")
MPVLib.setOptionString("ytdl", "no") MPVLib.setOptionString("ytdl", "no")
for (preferredLanguage in preferredLanguages) {
when (preferredLanguage.key) {
TrackType.AUDIO -> {
MPVLib.setOptionString("alang", preferredLanguage.value)
}
TrackType.SUBTITLE -> {
MPVLib.setOptionString("slang", preferredLanguage.value)
}
}
}
MPVLib.addObserver(this) MPVLib.addObserver(this)
// Observe properties // Observe properties

View file

@ -51,16 +51,20 @@ constructor(
init { init {
val useMpv = sp.getBoolean("mpv_player", false) val useMpv = sp.getBoolean("mpv_player", false)
val preferredAudioLanguage = sp.getString("audio_language", null) ?: ""
val preferredSubtitleLanguage = sp.getString("subtitle_language", null) ?: ""
if (useMpv) { if (useMpv) {
player = MPVPlayer(application, false) val preferredLanguages = mapOf(TrackType.AUDIO to preferredAudioLanguage, TrackType.SUBTITLE to preferredSubtitleLanguage)
player = MPVPlayer(application, false, preferredLanguages)
} else { } else {
val renderersFactory = val renderersFactory =
DefaultRenderersFactory(application).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) DefaultRenderersFactory(application).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON)
trackSelector.setParameters( trackSelector.setParameters(
trackSelector.buildUponParameters() trackSelector.buildUponParameters()
.setTunnelingEnabled(true) .setTunnelingEnabled(true)
.setPreferredAudioLanguage(sp.getString("audio_language", null)) .setPreferredAudioLanguage(preferredAudioLanguage)
.setPreferredTextLanguage(sp.getString("subtitle_language", null)) .setPreferredTextLanguage(preferredSubtitleLanguage)
) )
player = SimpleExoPlayer.Builder(application, renderersFactory) player = SimpleExoPlayer.Builder(application, renderersFactory)
.setTrackSelector(trackSelector) .setTrackSelector(trackSelector)

View file

@ -190,189 +190,189 @@
<string-array name="languages_values"> <string-array name="languages_values">
<item>null</item> <item>null</item>
<item>ab</item> <item>abk</item>
<item>aa</item> <item>aar</item>
<item>af</item> <item>afr</item>
<item>ak</item> <item>aka</item>
<item>sq</item> <item>sqi</item>
<item>am</item> <item>amh</item>
<item>ar</item> <item>ara</item>
<item>an</item> <item>arg</item>
<item>hy</item> <item>hye</item>
<item>as</item> <item>asm</item>
<item>av</item> <item>ava</item>
<item>ae</item> <item>ave</item>
<item>ay</item> <item>aym</item>
<item>az</item> <item>aze</item>
<item>bm</item> <item>bam</item>
<item>ba</item> <item>bak</item>
<item>eu</item> <item>eus</item>
<item>be</item> <item>bel</item>
<item>bn</item> <item>ben</item>
<item>bh</item> <item>bih</item>
<item>bi</item> <item>bis</item>
<item>nb</item> <item>nob</item>
<item>bs</item> <item>bos</item>
<item>br</item> <item>bre</item>
<item>bg</item> <item>bul</item>
<item>my</item> <item>bur</item>
<item>ca</item> <item>cat</item>
<item>km</item> <item>khm</item>
<item>ch</item> <item>cha</item>
<item>ce</item> <item>che</item>
<item>ny</item> <item>nya</item>
<item>zh</item> <item>chi</item>
<item>cu</item> <item>chu</item>
<item>cv</item> <item>chv</item>
<item>kw</item> <item>cor</item>
<item>co</item> <item>cos</item>
<item>cr</item> <item>cre</item>
<item>hr</item> <item>hrv</item>
<item>cs</item> <item>cze</item>
<item>da</item> <item>dan</item>
<item>dv</item> <item>div</item>
<item>nl</item> <item>dut</item>
<item>dz</item> <item>dzo</item>
<item>en</item> <item>eng</item>
<item>eo</item> <item>epo</item>
<item>et</item> <item>est</item>
<item>ee</item> <item>ewe</item>
<item>fo</item> <item>fao</item>
<item>fj</item> <item>fij</item>
<item>fi</item> <item>fin</item>
<item>fr</item> <item>fre</item>
<item>ff</item> <item>ful</item>
<item>gd</item> <item>gla</item>
<item>gl</item> <item>glg</item>
<item>lg</item> <item>lug</item>
<item>ka</item> <item>geo</item>
<item>de</item> <item>ger</item>
<item>el</item> <item>gre</item>
<item>gn</item> <item>grn</item>
<item>gu</item> <item>guj</item>
<item>ht</item> <item>hat</item>
<item>ha</item> <item>hau</item>
<item>he</item> <item>heb</item>
<item>hz</item> <item>her</item>
<item>hi</item> <item>hin</item>
<item>ho</item> <item>hmo</item>
<item>hu</item> <item>hun</item>
<item>is</item> <item>ice</item>
<item>io</item> <item>ido</item>
<item>ig</item> <item>ibo</item>
<item>id</item> <item>ind</item>
<item>ia</item> <item>ina</item>
<item>ie</item> <item>ile</item>
<item>iu</item> <item>iku</item>
<item>ik</item> <item>ipk</item>
<item>ga</item> <item>gle</item>
<item>it</item> <item>ita</item>
<item>ja</item> <item>jpn</item>
<item>jv</item> <item>jav</item>
<item>kl</item> <item>kal</item>
<item>kn</item> <item>kan</item>
<item>kr</item> <item>kau</item>
<item>ks</item> <item>kas</item>
<item>kk</item> <item>kaz</item>
<item>ki</item> <item>kik</item>
<item>rw</item> <item>kin</item>
<item>ky</item> <item>kir</item>
<item>kv</item> <item>kom</item>
<item>kg</item> <item>kon</item>
<item>ko</item> <item>kor</item>
<item>kj</item> <item>kua</item>
<item>ku</item> <item>kur</item>
<item>lo</item> <item>lao</item>
<item>la</item> <item>lat</item>
<item>lv</item> <item>lav</item>
<item>li</item> <item>lim</item>
<item>ln</item> <item>lin</item>
<item>lt</item> <item>lit</item>
<item>lu</item> <item>lub</item>
<item>lb</item> <item>ltz</item>
<item>mk</item> <item>mac</item>
<item>mg</item> <item>mlg</item>
<item>ms</item> <item>may</item>
<item>ml</item> <item>mal</item>
<item>mt</item> <item>mlt</item>
<item>gv</item> <item>glv</item>
<item>mi</item> <item>mao</item>
<item>mr</item> <item>mar</item>
<item>mh</item> <item>mah</item>
<item>mn</item> <item>mon</item>
<item>na</item> <item>nau</item>
<item>nv</item> <item>nav</item>
<item>nd</item> <item>nde</item>
<item>nr</item> <item>nbl</item>
<item>ng</item> <item>ndo</item>
<item>ne</item> <item>nep</item>
<item>se</item> <item>sme</item>
<item>no</item> <item>nor</item>
<item>nn</item> <item>nno</item>
<item>oc</item> <item>oci</item>
<item>oj</item> <item>oji</item>
<item>or</item> <item>ori</item>
<item>om</item> <item>orm</item>
<item>os</item> <item>oss</item>
<item>pi</item> <item>pli</item>
<item>pa</item> <item>pan</item>
<item>fa</item> <item>per</item>
<item>pl</item> <item>pol</item>
<item>pt</item> <item>por</item>
<item>ps</item> <item>pus</item>
<item>qu</item> <item>que</item>
<item>ro</item> <item>rum</item>
<item>rm</item> <item>roh</item>
<item>rn</item> <item>run</item>
<item>ru</item> <item>rus</item>
<item>sm</item> <item>smo</item>
<item>sg</item> <item>sag</item>
<item>sa</item> <item>san</item>
<item>sc</item> <item>srd</item>
<item>sr</item> <item>srp</item>
<item>sn</item> <item>sna</item>
<item>ii</item> <item>iii</item>
<item>sd</item> <item>snd</item>
<item>si</item> <item>sin</item>
<item>sk</item> <item>slo</item>
<item>sl</item> <item>slv</item>
<item>so</item> <item>som</item>
<item>st</item> <item>sot</item>
<item>es</item> <item>spa</item>
<item>su</item> <item>sun</item>
<item>sw</item> <item>swa</item>
<item>ss</item> <item>ssw</item>
<item>sv</item> <item>swe</item>
<item>tl</item> <item>tgl</item>
<item>ty</item> <item>tah</item>
<item>tg</item> <item>tgk</item>
<item>ta</item> <item>tam</item>
<item>tt</item> <item>tat</item>
<item>te</item> <item>tel</item>
<item>th</item> <item>tha</item>
<item>bo</item> <item>tib</item>
<item>ti</item> <item>tir</item>
<item>to</item> <item>ton</item>
<item>ts</item> <item>tso</item>
<item>tn</item> <item>tsn</item>
<item>tr</item> <item>tur</item>
<item>tk</item> <item>tuk</item>
<item>tw</item> <item>twi</item>
<item>ug</item> <item>uig</item>
<item>uk</item> <item>ukr</item>
<item>ur</item> <item>urd</item>
<item>uz</item> <item>uzb</item>
<item>ve</item> <item>ven</item>
<item>vi</item> <item>vie</item>
<item>vo</item> <item>vol</item>
<item>wa</item> <item>wln</item>
<item>cy</item> <item>wel</item>
<item>fy</item> <item>fry</item>
<item>wo</item> <item>wol</item>
<item>xh</item> <item>xho</item>
<item>yi</item> <item>yid</item>
<item>yo</item> <item>yor</item>
<item>za</item> <item>zha</item>
<item>zu</item> <item>zul</item>
</string-array> </string-array>
</resources> </resources>