Merge pull request #2820 from Redirion/remember-subtitles
Remember caption option in player, closes #2811
This commit is contained in:
commit
e92ca5e572
|
@ -26,14 +26,13 @@ import android.animation.PropertyValuesHolder;
|
||||||
import android.animation.ValueAnimator;
|
import android.animation.ValueAnimator;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import androidx.annotation.NonNull;
|
import android.preference.PreferenceManager;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
@ -45,6 +44,10 @@ import android.widget.ProgressBar;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.PlaybackParameters;
|
import com.google.android.exoplayer2.PlaybackParameters;
|
||||||
import com.google.android.exoplayer2.Player;
|
import com.google.android.exoplayer2.Player;
|
||||||
|
@ -285,6 +288,17 @@ public abstract class VideoPlayer extends BasePlayer
|
||||||
if (captionPopupMenu == null) return;
|
if (captionPopupMenu == null) return;
|
||||||
captionPopupMenu.getMenu().removeGroup(captionPopupMenuGroupId);
|
captionPopupMenu.getMenu().removeGroup(captionPopupMenuGroupId);
|
||||||
|
|
||||||
|
String userPreferredLanguage = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
.getString(context.getString(R.string.caption_user_set_key), null);
|
||||||
|
/*
|
||||||
|
* only search for autogenerated cc as fallback
|
||||||
|
* if "(auto-generated)" was not already selected
|
||||||
|
* we are only looking for "(" instead of "(auto-generated)" to hopefully get all
|
||||||
|
* internationalized variants such as "(automatisch-erzeugt)" and so on
|
||||||
|
*/
|
||||||
|
boolean searchForAutogenerated = userPreferredLanguage != null &&
|
||||||
|
!userPreferredLanguage.contains("(");
|
||||||
|
|
||||||
// Add option for turning off caption
|
// Add option for turning off caption
|
||||||
MenuItem captionOffItem = captionPopupMenu.getMenu().add(captionPopupMenuGroupId,
|
MenuItem captionOffItem = captionPopupMenu.getMenu().add(captionPopupMenuGroupId,
|
||||||
0, Menu.NONE, R.string.caption_none);
|
0, Menu.NONE, R.string.caption_none);
|
||||||
|
@ -294,6 +308,8 @@ public abstract class VideoPlayer extends BasePlayer
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters()
|
trackSelector.setParameters(trackSelector.buildUponParameters()
|
||||||
.setRendererDisabled(textRendererIndex, true));
|
.setRendererDisabled(textRendererIndex, true));
|
||||||
}
|
}
|
||||||
|
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
prefs.edit().remove(context.getString(R.string.caption_user_set_key)).commit();
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -308,9 +324,26 @@ public abstract class VideoPlayer extends BasePlayer
|
||||||
trackSelector.setPreferredTextLanguage(captionLanguage);
|
trackSelector.setPreferredTextLanguage(captionLanguage);
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters()
|
trackSelector.setParameters(trackSelector.buildUponParameters()
|
||||||
.setRendererDisabled(textRendererIndex, false));
|
.setRendererDisabled(textRendererIndex, false));
|
||||||
|
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
prefs.edit().putString(context.getString(R.string.caption_user_set_key),
|
||||||
|
captionLanguage).commit();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
// apply caption language from previous user preference
|
||||||
|
if (userPreferredLanguage != null && (captionLanguage.equals(userPreferredLanguage) ||
|
||||||
|
searchForAutogenerated && captionLanguage.startsWith(userPreferredLanguage) ||
|
||||||
|
userPreferredLanguage.contains("(") &&
|
||||||
|
captionLanguage.startsWith(userPreferredLanguage.substring(0,
|
||||||
|
userPreferredLanguage.indexOf('('))))) {
|
||||||
|
final int textRendererIndex = getRendererIndex(C.TRACK_TYPE_TEXT);
|
||||||
|
if (textRendererIndex != RENDERER_UNAVAILABLE) {
|
||||||
|
trackSelector.setPreferredTextLanguage(captionLanguage);
|
||||||
|
trackSelector.setParameters(trackSelector.buildUponParameters()
|
||||||
|
.setRendererDisabled(textRendererIndex, false));
|
||||||
|
}
|
||||||
|
searchForAutogenerated = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
captionPopupMenu.setOnDismissListener(this);
|
captionPopupMenu.setOnDismissListener(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,6 +133,7 @@
|
||||||
|
|
||||||
<!-- Caption Size -->
|
<!-- Caption Size -->
|
||||||
<string name="caption_settings_key" translatable="false">caption_settings_key</string>
|
<string name="caption_settings_key" translatable="false">caption_settings_key</string>
|
||||||
|
<string name="caption_user_set_key" translatable="false">caption_user_set_key</string>
|
||||||
|
|
||||||
<!-- Content & History -->
|
<!-- Content & History -->
|
||||||
<string name="show_search_suggestions_key" translatable="false">show_search_suggestions</string>
|
<string name="show_search_suggestions_key" translatable="false">show_search_suggestions</string>
|
||||||
|
|
Loading…
Reference in New Issue