From 53f478c6cf49f842a372e24fe7be1b15616368e6 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Sat, 17 Jul 2021 17:18:37 +0200 Subject: [PATCH] Select preferred audio and subtitle language --- app/build.gradle | 4 + .../jellyfin/fragments/SettingsFragment.kt | 15 +- .../viewmodels/PlayerActivityViewModel.kt | 8 +- app/src/main/res/values/languages.xml | 378 ++++++++++++++++++ app/src/main/res/values/strings.xml | 4 + app/src/main/res/xml/fragment_settings.xml | 25 ++ 6 files changed, 422 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/values/languages.xml create mode 100644 app/src/main/res/xml/fragment_settings.xml diff --git a/app/build.gradle b/app/build.gradle index f33496c6..bec035cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,6 +75,10 @@ dependencies { kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" + // Preference + def preference_version = "1.1.1" + implementation "androidx.preference:preference-ktx:$preference_version" + // Jellyfin def jellyfin_version = "1.0.1" implementation "org.jellyfin.sdk:jellyfin-platform-android:$jellyfin_version" diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt index b0443944..dc9d0ae0 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt @@ -1,18 +1,11 @@ package dev.jdtech.jellyfin.fragments import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment +import androidx.preference.PreferenceFragmentCompat import dev.jdtech.jellyfin.R -class SettingsFragment : Fragment() { - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_settings, container, false) +class SettingsFragment : PreferenceFragmentCompat() { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.fragment_settings, rootKey) } } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt index f002954f..1382add5 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import androidx.preference.PreferenceManager import com.google.android.exoplayer2.* import com.google.android.exoplayer2.trackselection.DefaultTrackSelector import dagger.hilt.android.lifecycle.HiltViewModel @@ -38,6 +39,8 @@ constructor( val playbackStateListener: PlaybackStateListener get() = _playbackStateListener + private val sp = PreferenceManager.getDefaultSharedPreferences(application) + init { _playbackStateListener = PlaybackStateListener() } @@ -49,7 +52,10 @@ constructor( DefaultRenderersFactory(application).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) val trackSelector = DefaultTrackSelector(application) trackSelector.setParameters( - trackSelector.buildUponParameters().setTunnelingEnabled(true), + trackSelector.buildUponParameters() + .setTunnelingEnabled(true) + .setPreferredAudioLanguage(sp.getString("audio_language", null)) + .setPreferredTextLanguage(sp.getString("subtitle_language", null)) ) val player = SimpleExoPlayer.Builder(application, renderersFactory) .setTrackSelector(trackSelector) diff --git a/app/src/main/res/values/languages.xml b/app/src/main/res/values/languages.xml new file mode 100644 index 00000000..0a4c73bd --- /dev/null +++ b/app/src/main/res/values/languages.xml @@ -0,0 +1,378 @@ + + + + None + Abkhazian + Afar + Afrikaans + Akan + Albanian + Amharic + Arabic + Aragonese + Armenian + Assamese + Avaric + Avestan + Aymara + Azerbaijani + Bambara + Bashkir + Basque + Belarusian + Bengali + Bihari languages + Bislama + Bokmål, Norwegian; Norwegian Bokmål + Bosnian + Breton + Bulgarian + Burmese + Catalan + Central Khmer + Chamorro + Chechen + Chichewa + Chinese + Church Slavic + Chuvash + Cornish + Corsican + Cree + Croatian + Czech + Danish + Divehi + Dutch + Dzongkha + English + Esperanto + Estonian + Ewe + Faroese + Fijian + Finnish + French + Fulah + Gaelic + Galician + Ganda + Georgian + German + Greek, Modern (1453-) + Guarani + Gujarati + Haitian + Hausa + Hebrew + Herero + Hindi + Hiri Motu + Hungarian + Icelandic + Ido + Igbo + Indonesian + Interlingua (International Auxiliary Language Association) + Interlingue + Inuktitut + Inupiaq + Irish + Italian + Japanese + Javanese + Kalaallisut + Kannada + Kanuri + Kashmiri + Kazakh + Kikuyu + Kinyarwanda + Kirghiz + Komi + Kongo + Korean + Kuanyama + Kurdish + Lao + Latin + Latvian + Limburgan + Lingala + Lithuanian + Luba-Katanga + Luxembourgish + Macedonian + Malagasy + Malay + Malayalam + Maltese + Manx + Maori + Marathi + Marshallese + Mongolian + Nauru + Navajo + Ndebele, North; North Ndebele + Ndebele, South; South Ndebele + Ndonga + Nepali + Northern Sami + Norwegian + Norwegian Nynorsk; Nynorsk, Norwegian + Occitan (post 1500) + Ojibwa + Oriya + Oromo + Ossetian + Pali + Panjabi + Persian + Polish + Portuguese + Pushto + Quechua + Romanian + Romansh + Rundi + Russian + Samoan + Sango + Sanskrit + Sardinian + Serbian + Shona + Sichuan Yi + Sindhi + Sinhala + Slovak + Slovenian + Somali + Sotho, Southern + Spanish + Sundanese + Swahili + Swati + Swedish + Tagalog + Tahitian + Tajik + Tamil + Tatar + Telugu + Thai + Tibetan + Tigrinya + Tonga (Tonga Islands) + Tsonga + Tswana + Turkish + Turkmen + Twi + Uighur + Ukrainian + Urdu + Uzbek + Venda + Vietnamese + Volapük + Walloon + Welsh + Western Frisian + Wolof + Xhosa + Yiddish + Yoruba + Zhuang + Zulu + + + + null + ab + aa + af + ak + sq + am + ar + an + hy + as + av + ae + ay + az + bm + ba + eu + be + bn + bh + bi + nb + bs + br + bg + my + ca + km + ch + ce + ny + zh + cu + cv + kw + co + cr + hr + cs + da + dv + nl + dz + en + eo + et + ee + fo + fj + fi + fr + ff + gd + gl + lg + ka + de + el + gn + gu + ht + ha + he + hz + hi + ho + hu + is + io + ig + id + ia + ie + iu + ik + ga + it + ja + jv + kl + kn + kr + ks + kk + ki + rw + ky + kv + kg + ko + kj + ku + lo + la + lv + li + ln + lt + lu + lb + mk + mg + ms + ml + mt + gv + mi + mr + mh + mn + na + nv + nd + nr + ng + ne + se + no + nn + oc + oj + or + om + os + pi + pa + fa + pl + pt + ps + qu + ro + rm + rn + ru + sm + sg + sa + sc + sr + sn + ii + sd + si + sk + sl + so + st + es + su + sw + ss + sv + tl + ty + tg + ta + tt + te + th + bo + ti + to + ts + tn + tr + tk + tw + ug + uk + ur + uz + ve + vi + vo + wa + cy + fy + wo + xh + yi + yo + za + zu + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 69f200ad..24f3abd6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,4 +38,8 @@ Continue Watching Latest %1$s Series poster + + Language + Preferred audio language + Preferred subtitle language \ No newline at end of file diff --git a/app/src/main/res/xml/fragment_settings.xml b/app/src/main/res/xml/fragment_settings.xml new file mode 100644 index 00000000..bdef52f9 --- /dev/null +++ b/app/src/main/res/xml/fragment_settings.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file