From 84faae325bc1eee09a2008f831f877ccd7084cfa Mon Sep 17 00:00:00 2001 From: Max Git Date: Mon, 13 Jul 2020 07:09:11 +0200 Subject: [PATCH 01/10] Add support for more audio types --- .gitignore | 1 + app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9341bbee..21421ba8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ local.properties # IntelliJ *.iml .idea +/.vs diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 0c62c8b0..e5d0068b 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -38,7 +38,9 @@ public class MusicUtil { // web client maximum is 12444445 and 320kbps is 320000 builder.append("&MaxStreamingBitrate=" + PreferenceUtil.getInstance(App.getInstance()).getMaximumBitrate()); - builder.append("&Container=flac"); + + builder.append("&Container=mka|opus,mp3|mp3,m4a|aac,ogg|vorbis,flac|flac"); + builder.append("&TranscodingContainer=ts"); builder.append("&TranscodingProtocol=hls"); From e10821323758a37c8bf898c4a42822f1b88c4275 Mon Sep 17 00:00:00 2001 From: Max Git Date: Thu, 16 Jul 2020 19:24:12 +0200 Subject: [PATCH 02/10] These changes are all added by Android Studio. --- app/build.gradle | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 139657c0..7c9a95a3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { minSdkVersion 19 diff --git a/build.gradle b/build.gradle index bdfedd59..1d4b35e0 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { dependencies { classpath 'com.android.tools:r8:1.6.84' - classpath 'com.android.tools.build:gradle:4.0.0' + classpath 'com.android.tools.build:gradle:4.0.1' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' } } From 378772d93f745c8884c55b4b063daa32fab49df8 Mon Sep 17 00:00:00 2001 From: Max Git Date: Thu, 16 Jul 2020 19:25:02 +0200 Subject: [PATCH 03/10] Add support for disabling/enabling directplay codecs --- .../adapter/DirectplayCodecAdapter.java | 66 +++++++++++++++++++ .../gramophone/model/DirectplayCodec.java | 32 +++++++++ .../preferences/DirectplayPreference.java | 24 +++++++ .../DirectplayPreferenceDialog.java | 48 ++++++++++++++ .../ui/activities/SettingsActivity.java | 5 ++ .../dkanada/gramophone/util/MusicUtil.java | 32 +++++++-- .../gramophone/util/PreferenceUtil.java | 39 +++++++++++ .../preference_dialog_directplay_codecs.xml | 12 ++++ ...ence_dialog_directplay_codecs_listitem.xml | 42 ++++++++++++ app/src/main/res/values/strings.xml | 3 + app/src/main/res/xml/pref_directplay.xml | 15 +++++ 11 files changed, 311 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java create mode 100644 app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java create mode 100644 app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java create mode 100644 app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java create mode 100644 app/src/main/res/layout/preference_dialog_directplay_codecs.xml create mode 100644 app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml create mode 100644 app/src/main/res/xml/pref_directplay.xml diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java new file mode 100644 index 00000000..9806470a --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java @@ -0,0 +1,66 @@ +package com.dkanada.gramophone.adapter; + +import android.annotation.SuppressLint; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.dkanada.gramophone.R; +import com.dkanada.gramophone.model.DirectplayCodec; + +import java.util.List; + +public class DirectplayCodecAdapter extends RecyclerView.Adapter /*implements SwipeAndDragHelper.ActionCompletionContract*/ { + private List directplayCodecs; + + public DirectplayCodecAdapter(List directplayCodecs) { + this.directplayCodecs = directplayCodecs; + } + + @Override + @NonNull + public DirectplayCodecAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_directplay_codecs_listitem, parent, false); + return new ViewHolder(view); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void onBindViewHolder(@NonNull DirectplayCodecAdapter.ViewHolder holder, int position) { + DirectplayCodec directplayCodec = directplayCodecs.get(position); + + holder.checkBox.setChecked(directplayCodec.selected); + holder.title.setText(directplayCodec.title); + + holder.itemView.setOnClickListener(v -> { + directplayCodec.selected = !directplayCodec.selected; + holder.checkBox.setChecked(directplayCodec.selected); + }); + } + + @Override + public int getItemCount() { + return directplayCodecs.size(); + } + + public List getDirectplayCodecs() { + return directplayCodecs; + } + + static class ViewHolder extends RecyclerView.ViewHolder { + public CheckBox checkBox; + public TextView title; + + public ViewHolder(View view) { + super(view); + checkBox = view.findViewById(R.id.checkbox); + title = view.findViewById(R.id.title); + } + } +} + diff --git a/app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java b/app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java new file mode 100644 index 00000000..c0e43186 --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java @@ -0,0 +1,32 @@ +package com.dkanada.gramophone.model; + +public class DirectplayCodec { + public String codecName; + public String title; + public String value; + public boolean selected; + + public DirectplayCodec(String codecName, String title, String value, boolean selected) { + this.codecName = codecName; + this.title = title; + this.value = value; + this.selected = selected; + } + + public enum Codec { + // These are all non-translatable so just keep them here. + FLAC("FLAC","flac|flac"), + MP3("MP3", "mp3|mp3"), + AAC("AAC (.m4a)", "m4a|aac"), + OPUS("OPUS (.mka)", "mka|opus"), + VORBIS("VORBIS (.ogg)", "ogg|vorbis"); + + public final String title; + public final String value; + + Codec(String title, String value) { + this.value = value; + this.title = title; + } + } +} diff --git a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java b/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java new file mode 100644 index 00000000..17ac990a --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java @@ -0,0 +1,24 @@ +package com.dkanada.gramophone.preferences; + +import android.content.Context; +import android.util.AttributeSet; + +import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference; + +public class DirectplayPreference extends ATEDialogPreference { + public DirectplayPreference(Context context) { + super(context); + } + + public DirectplayPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } +} diff --git a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java b/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java new file mode 100644 index 00000000..a82388ec --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java @@ -0,0 +1,48 @@ +package com.dkanada.gramophone.preferences; + +import android.app.Dialog; +import android.os.Bundle; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.dkanada.gramophone.R; +import com.dkanada.gramophone.adapter.DirectplayCodecAdapter; +import com.dkanada.gramophone.util.PreferenceUtil; + +public class DirectplayPreferenceDialog extends DialogFragment { + public static DirectplayPreferenceDialog newInstance() { + return new DirectplayPreferenceDialog(); + } + + private DirectplayCodecAdapter adapter; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + View view = getActivity().getLayoutInflater().inflate(R.layout.preference_dialog_directplay_codecs, null); + + adapter = new DirectplayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectplayCodecs()); + + RecyclerView recyclerView = view.findViewById(R.id.recycler_view); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + recyclerView.setAdapter(adapter); + + return new MaterialDialog.Builder(getContext()) + .title(R.string.directplay_codecs) + .customView(view, false) + .positiveText(android.R.string.ok) + .negativeText(android.R.string.cancel) + .autoDismiss(false) + .onNegative((dialog, action) -> dismiss()) + .onPositive((dialog, action) -> { + PreferenceUtil.getInstance(getContext()).setDirectplayCodecs(adapter.getDirectplayCodecs()); + dismiss(); + }) + .build(); + } +} diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index f9c00b6f..a80502b5 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -16,6 +16,8 @@ import android.view.MenuItem; import android.view.View; import com.afollestad.materialdialogs.color.ColorChooserDialog; +import com.dkanada.gramophone.preferences.DirectplayPreference; +import com.dkanada.gramophone.preferences.DirectplayPreferenceDialog; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat; @@ -122,6 +124,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia addPreferencesFromResource(R.xml.pref_lockscreen); addPreferencesFromResource(R.xml.pref_audio); addPreferencesFromResource(R.xml.pref_images); + addPreferencesFromResource(R.xml.pref_directplay); } @Nullable @@ -131,6 +134,8 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia return NowPlayingScreenPreferenceDialog.newInstance(); } else if (preference instanceof LibraryPreference) { return LibraryPreferenceDialog.newInstance(); + } else if (preference instanceof DirectplayPreference) { + return DirectplayPreferenceDialog.newInstance(); } return super.onCreatePreferenceDialog(preference); diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 0c62c8b0..6fbce92b 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -14,6 +14,7 @@ import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; import com.dkanada.gramophone.model.Album; import com.dkanada.gramophone.model.Artist; +import com.dkanada.gramophone.model.DirectplayCodec; import com.dkanada.gramophone.model.Genre; import com.dkanada.gramophone.model.Song; @@ -26,25 +27,42 @@ import java.util.Locale; public class MusicUtil { public static Uri getSongFileUri(Song song) { - StringBuilder builder = new StringBuilder(); + PreferenceUtil preferenceUtil = PreferenceUtil.getInstance(App.getInstance()); + + StringBuilder builder = new StringBuilder(256); ApiClient apiClient = App.getApiClient(); builder.append(apiClient.getApiUrl()); builder.append("/Audio/"); builder.append(song.id); builder.append("/universal"); - builder.append("?UserId=" + apiClient.getCurrentUserId()); - builder.append("&DeviceId=" + apiClient.getDeviceId()); + builder.append("?UserId=").append(apiClient.getCurrentUserId()); + builder.append("&DeviceId=").append(apiClient.getDeviceId()); // web client maximum is 12444445 and 320kbps is 320000 - builder.append("&MaxStreamingBitrate=" + PreferenceUtil.getInstance(App.getInstance()).getMaximumBitrate()); - builder.append("&Container=flac"); + builder.append("&MaxStreamingBitrate=").append(preferenceUtil.getMaximumBitrate()); + + boolean containerAdded = false; + for (DirectplayCodec directplayCodec : preferenceUtil.getDirectplayCodecs()){ + if (directplayCodec.selected){ + if (!containerAdded){ + builder.append("&Container="); + containerAdded = true; + } + builder.append(directplayCodec.value).append(','); + } + } + if (containerAdded){ + // Remove last comma + builder.deleteCharAt(builder.length() - 1); + } + builder.append("&TranscodingContainer=ts"); builder.append("&TranscodingProtocol=hls"); // preferred codec when transcoding - builder.append("&AudioCodec=" + PreferenceUtil.getInstance(App.getInstance()).getTranscodeCodec()); - builder.append("&api_key=" + apiClient.getAccessToken()); + builder.append("&AudioCodec=").append(preferenceUtil.getTranscodeCodec()); + builder.append("&api_key=").append(apiClient.getAccessToken()); Log.i(MusicUtil.class.getName(), "playing audio: " + builder); return Uri.parse(builder.toString()); diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 9ba7d58b..a2576325 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.preference.PreferenceManager; + import androidx.annotation.StyleRes; import com.google.gson.Gson; @@ -14,14 +15,18 @@ import com.dkanada.gramophone.R; import com.dkanada.gramophone.helper.sort.SortMethod; import com.dkanada.gramophone.helper.sort.SortOrder; import com.dkanada.gramophone.model.CategoryInfo; +import com.dkanada.gramophone.model.DirectplayCodec; import com.dkanada.gramophone.ui.fragments.player.NowPlayingScreen; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public final class PreferenceUtil { public static final String CATEGORIES = "library_categories"; + public static final String DIRECTPLAY_CODECS = "directplay_codecs"; public static final String MAXIMUM_LIST_SIZE = "maximum_list_size"; public static final String REMEMBER_LAST_TAB = "remember_last_tab"; public static final String LAST_TAB = "last_tab"; @@ -417,4 +422,38 @@ public final class PreferenceUtil { defaultCategories.add(new CategoryInfo(CategoryInfo.Category.PLAYLISTS, true)); return defaultCategories; } + + public List getDirectplayCodecs() { + DirectplayCodec.Codec[] codecs = DirectplayCodec.Codec.values(); + + Set selectedCodecNames = new HashSet<>(); + for (DirectplayCodec.Codec codec : codecs){ + selectedCodecNames.add(codec.name()); + } + + selectedCodecNames = mPreferences.getStringSet(DIRECTPLAY_CODECS, selectedCodecNames); + + ArrayList directplayCodecs = new ArrayList<>(); + for (DirectplayCodec.Codec codec : codecs){ + String name = codec.name(); + boolean selected = selectedCodecNames.contains(name); + + directplayCodecs.add(new DirectplayCodec(name, codec.title, codec.value, selected)); + } + + return directplayCodecs; + } + + public void setDirectplayCodecs(List directplayCodecs){ + Set codecNames = new HashSet<>(); + for (DirectplayCodec directplayCodec : directplayCodecs){ + if (directplayCodec.selected){ + codecNames.add(directplayCodec.codecName); + } + } + + final SharedPreferences.Editor editor = mPreferences.edit(); + editor.putStringSet(DIRECTPLAY_CODECS, codecNames); + editor.apply(); + } } diff --git a/app/src/main/res/layout/preference_dialog_directplay_codecs.xml b/app/src/main/res/layout/preference_dialog_directplay_codecs.xml new file mode 100644 index 00000000..e3f54417 --- /dev/null +++ b/app/src/main/res/layout/preference_dialog_directplay_codecs.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml b/app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml new file mode 100644 index 00000000..436681e2 --- /dev/null +++ b/app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f0ffd314..3d827a34 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -93,11 +93,13 @@ Colors Now Playing Audio + Directplay Images Library Lockscreen Notification + Directplay Codecs Categories Primary Color Accent Color @@ -135,6 +137,7 @@ Colors the app shortcuts in the primary color. Go to the last opened tab on launch. Configure visibility and order of display categories. + Disable directplay codecs to force transcoding. Delete Remove diff --git a/app/src/main/res/xml/pref_directplay.xml b/app/src/main/res/xml/pref_directplay.xml new file mode 100644 index 00000000..2ac7fa80 --- /dev/null +++ b/app/src/main/res/xml/pref_directplay.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file From 21f12974818c2928c4cae6d864b8ca23333ee945 Mon Sep 17 00:00:00 2001 From: Max Git Date: Thu, 16 Jul 2020 20:02:12 +0200 Subject: [PATCH 04/10] Fix brackets --- app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 6fbce92b..06590970 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -43,7 +43,7 @@ public class MusicUtil { builder.append("&MaxStreamingBitrate=").append(preferenceUtil.getMaximumBitrate()); boolean containerAdded = false; - for (DirectplayCodec directplayCodec : preferenceUtil.getDirectplayCodecs()){ + for (DirectplayCodec directplayCodec : preferenceUtil.getDirectplayCodecs()) { if (directplayCodec.selected){ if (!containerAdded){ builder.append("&Container="); @@ -52,7 +52,7 @@ public class MusicUtil { builder.append(directplayCodec.value).append(','); } } - if (containerAdded){ + if (containerAdded) { // Remove last comma builder.deleteCharAt(builder.length() - 1); } From dd9fb28ec73510335d71cdc31be40af3c9814c4c Mon Sep 17 00:00:00 2001 From: Max Git Date: Thu, 16 Jul 2020 22:12:21 +0200 Subject: [PATCH 05/10] Cleanup --- .../com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java | 2 +- .../main/java/com/dkanada/gramophone/util/PreferenceUtil.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java index 9806470a..474d1eb4 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java @@ -15,7 +15,7 @@ import com.dkanada.gramophone.model.DirectplayCodec; import java.util.List; -public class DirectplayCodecAdapter extends RecyclerView.Adapter /*implements SwipeAndDragHelper.ActionCompletionContract*/ { +public class DirectplayCodecAdapter extends RecyclerView.Adapter { private List directplayCodecs; public DirectplayCodecAdapter(List directplayCodecs) { diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index a2576325..ffff797c 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -444,7 +444,7 @@ public final class PreferenceUtil { return directplayCodecs; } - public void setDirectplayCodecs(List directplayCodecs){ + public void setDirectplayCodecs(List directplayCodecs) { Set codecNames = new HashSet<>(); for (DirectplayCodec directplayCodec : directplayCodecs){ if (directplayCodec.selected){ From 407cee4161d2b966d48fafae6611fa7c0a8d2b81 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 23 Jul 2020 14:20:02 +0900 Subject: [PATCH 06/10] revert sdk version updates for now --- app/build.gradle | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7c9a95a3..139657c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 29 - buildToolsVersion '29.0.2' + compileSdkVersion 28 + buildToolsVersion '28.0.3' defaultConfig { minSdkVersion 19 diff --git a/build.gradle b/build.gradle index 1d4b35e0..bdfedd59 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { dependencies { classpath 'com.android.tools:r8:1.6.84' - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:4.0.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' } } From 613edf239af35a0d20f006887e7188cb0caee3da Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 23 Jul 2020 14:34:28 +0900 Subject: [PATCH 07/10] match upstream name for direct play --- ...apter.java => DirectPlayCodecAdapter.java} | 32 +++++++++---------- ...ectplayCodec.java => DirectPlayCodec.java} | 11 +++---- ...ference.java => DirectPlayPreference.java} | 10 +++--- ...g.java => DirectPlayPreferenceDialog.java} | 18 +++++------ .../ui/activities/SettingsActivity.java | 8 ++--- .../dkanada/gramophone/util/MusicUtil.java | 11 ++++--- .../gramophone/util/PreferenceUtil.java | 31 +++++++++--------- ... preference_dialog_direct_play_codecs.xml} | 0 ...ce_dialog_direct_play_codecs_listitem.xml} | 0 app/src/main/res/values/strings.xml | 6 ++-- app/src/main/res/xml/pref_directplay.xml | 10 +++--- 11 files changed, 68 insertions(+), 69 deletions(-) rename app/src/main/java/com/dkanada/gramophone/adapter/{DirectplayCodecAdapter.java => DirectPlayCodecAdapter.java} (54%) rename app/src/main/java/com/dkanada/gramophone/model/{DirectplayCodec.java => DirectPlayCodec.java} (67%) rename app/src/main/java/com/dkanada/gramophone/preferences/{DirectplayPreference.java => DirectPlayPreference.java} (59%) rename app/src/main/java/com/dkanada/gramophone/preferences/{DirectplayPreferenceDialog.java => DirectPlayPreferenceDialog.java} (70%) rename app/src/main/res/layout/{preference_dialog_directplay_codecs.xml => preference_dialog_direct_play_codecs.xml} (100%) rename app/src/main/res/layout/{preference_dialog_directplay_codecs_listitem.xml => preference_dialog_direct_play_codecs_listitem.xml} (100%) diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java similarity index 54% rename from app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java rename to app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java index 474d1eb4..b0bd3cd1 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/DirectplayCodecAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java @@ -11,45 +11,45 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.dkanada.gramophone.R; -import com.dkanada.gramophone.model.DirectplayCodec; +import com.dkanada.gramophone.model.DirectPlayCodec; import java.util.List; -public class DirectplayCodecAdapter extends RecyclerView.Adapter { - private List directplayCodecs; +public class DirectPlayCodecAdapter extends RecyclerView.Adapter { + private List directPlayCodecs; - public DirectplayCodecAdapter(List directplayCodecs) { - this.directplayCodecs = directplayCodecs; + public DirectPlayCodecAdapter(List directPlayCodecs) { + this.directPlayCodecs = directPlayCodecs; } @Override @NonNull - public DirectplayCodecAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_directplay_codecs_listitem, parent, false); + public DirectPlayCodecAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_direct_play_codecs_listitem, parent, false); return new ViewHolder(view); } @SuppressLint("ClickableViewAccessibility") @Override - public void onBindViewHolder(@NonNull DirectplayCodecAdapter.ViewHolder holder, int position) { - DirectplayCodec directplayCodec = directplayCodecs.get(position); + public void onBindViewHolder(@NonNull DirectPlayCodecAdapter.ViewHolder holder, int position) { + DirectPlayCodec directPlayCodec = directPlayCodecs.get(position); - holder.checkBox.setChecked(directplayCodec.selected); - holder.title.setText(directplayCodec.title); + holder.checkBox.setChecked(directPlayCodec.selected); + holder.title.setText(directPlayCodec.title); holder.itemView.setOnClickListener(v -> { - directplayCodec.selected = !directplayCodec.selected; - holder.checkBox.setChecked(directplayCodec.selected); + directPlayCodec.selected = !directPlayCodec.selected; + holder.checkBox.setChecked(directPlayCodec.selected); }); } @Override public int getItemCount() { - return directplayCodecs.size(); + return directPlayCodecs.size(); } - public List getDirectplayCodecs() { - return directplayCodecs; + public List getDirectPlayCodecs() { + return directPlayCodecs; } static class ViewHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java b/app/src/main/java/com/dkanada/gramophone/model/DirectPlayCodec.java similarity index 67% rename from app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java rename to app/src/main/java/com/dkanada/gramophone/model/DirectPlayCodec.java index c0e43186..f19f21ac 100644 --- a/app/src/main/java/com/dkanada/gramophone/model/DirectplayCodec.java +++ b/app/src/main/java/com/dkanada/gramophone/model/DirectPlayCodec.java @@ -1,12 +1,12 @@ package com.dkanada.gramophone.model; -public class DirectplayCodec { +public class DirectPlayCodec { public String codecName; public String title; public String value; public boolean selected; - public DirectplayCodec(String codecName, String title, String value, boolean selected) { + public DirectPlayCodec(String codecName, String title, String value, boolean selected) { this.codecName = codecName; this.title = title; this.value = value; @@ -14,12 +14,11 @@ public class DirectplayCodec { } public enum Codec { - // These are all non-translatable so just keep them here. FLAC("FLAC","flac|flac"), MP3("MP3", "mp3|mp3"), - AAC("AAC (.m4a)", "m4a|aac"), - OPUS("OPUS (.mka)", "mka|opus"), - VORBIS("VORBIS (.ogg)", "ogg|vorbis"); + AAC("AAC", "m4a|aac"), + OGG("OGG", "ogg|vorbis"), + MKA("MKA", "mka|opus"); public final String title; public final String value; diff --git a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java b/app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreference.java similarity index 59% rename from app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java rename to app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreference.java index 17ac990a..5071f3d5 100644 --- a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreference.java +++ b/app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreference.java @@ -5,20 +5,20 @@ import android.util.AttributeSet; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference; -public class DirectplayPreference extends ATEDialogPreference { - public DirectplayPreference(Context context) { +public class DirectPlayPreference extends ATEDialogPreference { + public DirectPlayPreference(Context context) { super(context); } - public DirectplayPreference(Context context, AttributeSet attrs) { + public DirectPlayPreference(Context context, AttributeSet attrs) { super(context, attrs); } - public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr) { + public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } - public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } } diff --git a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java b/app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreferenceDialog.java similarity index 70% rename from app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java rename to app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreferenceDialog.java index a82388ec..1ea1e92e 100644 --- a/app/src/main/java/com/dkanada/gramophone/preferences/DirectplayPreferenceDialog.java +++ b/app/src/main/java/com/dkanada/gramophone/preferences/DirectPlayPreferenceDialog.java @@ -11,36 +11,36 @@ import androidx.recyclerview.widget.RecyclerView; import com.afollestad.materialdialogs.MaterialDialog; import com.dkanada.gramophone.R; -import com.dkanada.gramophone.adapter.DirectplayCodecAdapter; +import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter; import com.dkanada.gramophone.util.PreferenceUtil; -public class DirectplayPreferenceDialog extends DialogFragment { - public static DirectplayPreferenceDialog newInstance() { - return new DirectplayPreferenceDialog(); +public class DirectPlayPreferenceDialog extends DialogFragment { + public static DirectPlayPreferenceDialog newInstance() { + return new DirectPlayPreferenceDialog(); } - private DirectplayCodecAdapter adapter; + private DirectPlayCodecAdapter adapter; @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - View view = getActivity().getLayoutInflater().inflate(R.layout.preference_dialog_directplay_codecs, null); + View view = getActivity().getLayoutInflater().inflate(R.layout.preference_dialog_direct_play_codecs, null); - adapter = new DirectplayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectplayCodecs()); + adapter = new DirectPlayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectPlayCodecs()); RecyclerView recyclerView = view.findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setAdapter(adapter); return new MaterialDialog.Builder(getContext()) - .title(R.string.directplay_codecs) + .title(R.string.direct_play_codecs) .customView(view, false) .positiveText(android.R.string.ok) .negativeText(android.R.string.cancel) .autoDismiss(false) .onNegative((dialog, action) -> dismiss()) .onPositive((dialog, action) -> { - PreferenceUtil.getInstance(getContext()).setDirectplayCodecs(adapter.getDirectplayCodecs()); + PreferenceUtil.getInstance(getContext()).setDirectPlayCodecs(adapter.getDirectPlayCodecs()); dismiss(); }) .build(); diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index a80502b5..1f027c36 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -16,8 +16,8 @@ import android.view.MenuItem; import android.view.View; import com.afollestad.materialdialogs.color.ColorChooserDialog; -import com.dkanada.gramophone.preferences.DirectplayPreference; -import com.dkanada.gramophone.preferences.DirectplayPreferenceDialog; +import com.dkanada.gramophone.preferences.DirectPlayPreference; +import com.dkanada.gramophone.preferences.DirectPlayPreferenceDialog; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat; @@ -134,8 +134,8 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia return NowPlayingScreenPreferenceDialog.newInstance(); } else if (preference instanceof LibraryPreference) { return LibraryPreferenceDialog.newInstance(); - } else if (preference instanceof DirectplayPreference) { - return DirectplayPreferenceDialog.newInstance(); + } else if (preference instanceof DirectPlayPreference) { + return DirectPlayPreferenceDialog.newInstance(); } return super.onCreatePreferenceDialog(preference); diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 06590970..0dbbccfd 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -14,7 +14,7 @@ import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; import com.dkanada.gramophone.model.Album; import com.dkanada.gramophone.model.Artist; -import com.dkanada.gramophone.model.DirectplayCodec; +import com.dkanada.gramophone.model.DirectPlayCodec; import com.dkanada.gramophone.model.Genre; import com.dkanada.gramophone.model.Song; @@ -43,17 +43,18 @@ public class MusicUtil { builder.append("&MaxStreamingBitrate=").append(preferenceUtil.getMaximumBitrate()); boolean containerAdded = false; - for (DirectplayCodec directplayCodec : preferenceUtil.getDirectplayCodecs()) { - if (directplayCodec.selected){ + for (DirectPlayCodec directPlayCodec : preferenceUtil.getDirectPlayCodecs()) { + if (directPlayCodec.selected){ if (!containerAdded){ builder.append("&Container="); containerAdded = true; } - builder.append(directplayCodec.value).append(','); + + builder.append(directPlayCodec.value).append(','); } } if (containerAdded) { - // Remove last comma + // remove last comma builder.deleteCharAt(builder.length() - 1); } diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index ffff797c..14caeb1c 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -15,7 +15,7 @@ import com.dkanada.gramophone.R; import com.dkanada.gramophone.helper.sort.SortMethod; import com.dkanada.gramophone.helper.sort.SortOrder; import com.dkanada.gramophone.model.CategoryInfo; -import com.dkanada.gramophone.model.DirectplayCodec; +import com.dkanada.gramophone.model.DirectPlayCodec; import com.dkanada.gramophone.ui.fragments.player.NowPlayingScreen; import java.lang.reflect.Type; @@ -26,7 +26,7 @@ import java.util.Set; public final class PreferenceUtil { public static final String CATEGORIES = "library_categories"; - public static final String DIRECTPLAY_CODECS = "directplay_codecs"; + public static final String DIRECT_PLAY_CODECS = "direct_play_codecs"; public static final String MAXIMUM_LIST_SIZE = "maximum_list_size"; public static final String REMEMBER_LAST_TAB = "remember_last_tab"; public static final String LAST_TAB = "last_tab"; @@ -423,37 +423,36 @@ public final class PreferenceUtil { return defaultCategories; } - public List getDirectplayCodecs() { - DirectplayCodec.Codec[] codecs = DirectplayCodec.Codec.values(); + public List getDirectPlayCodecs() { + DirectPlayCodec.Codec[] codecs = DirectPlayCodec.Codec.values(); Set selectedCodecNames = new HashSet<>(); - for (DirectplayCodec.Codec codec : codecs){ + for (DirectPlayCodec.Codec codec : codecs){ selectedCodecNames.add(codec.name()); } - selectedCodecNames = mPreferences.getStringSet(DIRECTPLAY_CODECS, selectedCodecNames); + selectedCodecNames = mPreferences.getStringSet(DIRECT_PLAY_CODECS, selectedCodecNames); - ArrayList directplayCodecs = new ArrayList<>(); - for (DirectplayCodec.Codec codec : codecs){ + ArrayList directPlayCodecs = new ArrayList<>(); + for (DirectPlayCodec.Codec codec : codecs){ String name = codec.name(); boolean selected = selectedCodecNames.contains(name); - - directplayCodecs.add(new DirectplayCodec(name, codec.title, codec.value, selected)); + directPlayCodecs.add(new DirectPlayCodec(name, codec.title, codec.value, selected)); } - return directplayCodecs; + return directPlayCodecs; } - public void setDirectplayCodecs(List directplayCodecs) { + public void setDirectPlayCodecs(List directPlayCodecs) { Set codecNames = new HashSet<>(); - for (DirectplayCodec directplayCodec : directplayCodecs){ - if (directplayCodec.selected){ - codecNames.add(directplayCodec.codecName); + for (DirectPlayCodec directPlayCodec : directPlayCodecs){ + if (directPlayCodec.selected){ + codecNames.add(directPlayCodec.codecName); } } final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putStringSet(DIRECTPLAY_CODECS, codecNames); + editor.putStringSet(DIRECT_PLAY_CODECS, codecNames); editor.apply(); } } diff --git a/app/src/main/res/layout/preference_dialog_directplay_codecs.xml b/app/src/main/res/layout/preference_dialog_direct_play_codecs.xml similarity index 100% rename from app/src/main/res/layout/preference_dialog_directplay_codecs.xml rename to app/src/main/res/layout/preference_dialog_direct_play_codecs.xml diff --git a/app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml b/app/src/main/res/layout/preference_dialog_direct_play_codecs_listitem.xml similarity index 100% rename from app/src/main/res/layout/preference_dialog_directplay_codecs_listitem.xml rename to app/src/main/res/layout/preference_dialog_direct_play_codecs_listitem.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3d827a34..9491aff5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -93,13 +93,13 @@ Colors Now Playing Audio - Directplay + Direct Play Images Library Lockscreen Notification - Directplay Codecs + Direct Play Codecs Categories Primary Color Accent Color @@ -137,7 +137,7 @@ Colors the app shortcuts in the primary color. Go to the last opened tab on launch. Configure visibility and order of display categories. - Disable directplay codecs to force transcoding. + Disable direct play codecs to force transcoding. Delete Remove diff --git a/app/src/main/res/xml/pref_directplay.xml b/app/src/main/res/xml/pref_directplay.xml index 2ac7fa80..53d1ad56 100644 --- a/app/src/main/res/xml/pref_directplay.xml +++ b/app/src/main/res/xml/pref_directplay.xml @@ -4,12 +4,12 @@ - + android:key="direct_play_codecs" + android:summary="@string/pref_summary_direct_play_codecs" + android:title="@string/direct_play_codecs" /> - \ No newline at end of file + From c94a6a4b07375c90c4d0450b1d7f77d596bc0c26 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 23 Jul 2020 14:36:12 +0900 Subject: [PATCH 08/10] update gitignore --- .gitignore | 4 ++-- .../dkanada/gramophone/adapter/DirectPlayCodecAdapter.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 21421ba8..521ffffe 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ build # Configuration local.properties -# IntelliJ +# Other *.iml .idea -/.vs +.vs diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java index b0bd3cd1..a6e0c6dd 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/DirectPlayCodecAdapter.java @@ -63,4 +63,3 @@ public class DirectPlayCodecAdapter extends RecyclerView.Adapter Date: Thu, 23 Jul 2020 14:44:25 +0900 Subject: [PATCH 09/10] update preference xml --- .../dkanada/gramophone/ui/activities/SettingsActivity.java | 2 +- app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java | 5 +++-- .../res/xml/{pref_directplay.xml => pref_direct_play.xml} | 0 3 files changed, 4 insertions(+), 3 deletions(-) rename app/src/main/res/xml/{pref_directplay.xml => pref_direct_play.xml} (100%) diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index 1f027c36..7c5741fc 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -124,7 +124,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia addPreferencesFromResource(R.xml.pref_lockscreen); addPreferencesFromResource(R.xml.pref_audio); addPreferencesFromResource(R.xml.pref_images); - addPreferencesFromResource(R.xml.pref_directplay); + addPreferencesFromResource(R.xml.pref_direct_play); } @Nullable diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index 0dbbccfd..593886c9 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -44,8 +44,8 @@ public class MusicUtil { boolean containerAdded = false; for (DirectPlayCodec directPlayCodec : preferenceUtil.getDirectPlayCodecs()) { - if (directPlayCodec.selected){ - if (!containerAdded){ + if (directPlayCodec.selected) { + if (!containerAdded) { builder.append("&Container="); containerAdded = true; } @@ -53,6 +53,7 @@ public class MusicUtil { builder.append(directPlayCodec.value).append(','); } } + if (containerAdded) { // remove last comma builder.deleteCharAt(builder.length() - 1); diff --git a/app/src/main/res/xml/pref_directplay.xml b/app/src/main/res/xml/pref_direct_play.xml similarity index 100% rename from app/src/main/res/xml/pref_directplay.xml rename to app/src/main/res/xml/pref_direct_play.xml From d26bc61314b0819468ceb0f31035e2eb217b2739 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 23 Jul 2020 14:47:00 +0900 Subject: [PATCH 10/10] linting --- .../java/com/dkanada/gramophone/util/PreferenceUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 14caeb1c..3255576c 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -427,14 +427,14 @@ public final class PreferenceUtil { DirectPlayCodec.Codec[] codecs = DirectPlayCodec.Codec.values(); Set selectedCodecNames = new HashSet<>(); - for (DirectPlayCodec.Codec codec : codecs){ + for (DirectPlayCodec.Codec codec : codecs) { selectedCodecNames.add(codec.name()); } selectedCodecNames = mPreferences.getStringSet(DIRECT_PLAY_CODECS, selectedCodecNames); ArrayList directPlayCodecs = new ArrayList<>(); - for (DirectPlayCodec.Codec codec : codecs){ + for (DirectPlayCodec.Codec codec : codecs) { String name = codec.name(); boolean selected = selectedCodecNames.contains(name); directPlayCodecs.add(new DirectPlayCodec(name, codec.title, codec.value, selected)); @@ -445,8 +445,8 @@ public final class PreferenceUtil { public void setDirectPlayCodecs(List directPlayCodecs) { Set codecNames = new HashSet<>(); - for (DirectPlayCodec directPlayCodec : directPlayCodecs){ - if (directPlayCodec.selected){ + for (DirectPlayCodec directPlayCodec : directPlayCodecs) { + if (directPlayCodec.selected) { codecNames.add(directPlayCodec.codecName); } }