Removed unused files, translations, styles, settings key

This commit is contained in:
Avently 2020-07-25 09:39:42 +03:00
parent f2e4b69466
commit 5293d17e32
69 changed files with 5 additions and 4112 deletions

View file

@ -42,11 +42,6 @@
</intent-filter>
</receiver>
<service
android:name=".player.BackgroundPlayer"
android:exported="false">
</service>
<service
android:name=".player.MainPlayer"
android:exported="false">
@ -57,25 +52,9 @@
<activity
android:name=".player.BackgroundPlayerActivity"
android:label="@string/title_activity_background_player"
android:label="@string/title_activity_play_queue"
android:launchMode="singleTask" />
<activity
android:name=".player.PopupVideoPlayerActivity"
android:label="@string/title_activity_popup_player"
android:launchMode="singleTask" />
<service
android:name=".player.PopupVideoPlayer"
android:exported="false" />
<activity
android:name=".player.MainVideoPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/VideoPlayerTheme" />
<activity
android:name=".settings.SettingsActivity"
android:label="@string/settings" />

View file

@ -1,684 +0,0 @@
/*
* Copyright 2017 Mauricio Colli <mauriciocolli@outlook.com>
* BackgroundPlayer.java is part of NewPipe
*
* License: GPL-3.0+
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.schabi.newpipe.player;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.source.MediaSource;
import com.nostra13.universalimageloader.core.assist.FailReason;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.player.event.PlayerEventListener;
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
import org.schabi.newpipe.player.resolver.AudioPlaybackResolver;
import org.schabi.newpipe.player.resolver.MediaSourceTag;
import org.schabi.newpipe.util.BitmapUtils;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ThemeHelper;
import static org.schabi.newpipe.player.helper.PlayerHelper.getTimeString;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/**
* Service Background Player implementing {@link VideoPlayer}.
*
* @author mauriciocolli
*/
public final class BackgroundPlayer extends Service {
public static final String ACTION_CLOSE
= "org.schabi.newpipe.player.BackgroundPlayer.CLOSE";
public static final String ACTION_PLAY_PAUSE
= "org.schabi.newpipe.player.BackgroundPlayer.PLAY_PAUSE";
public static final String ACTION_REPEAT
= "org.schabi.newpipe.player.BackgroundPlayer.REPEAT";
public static final String ACTION_PLAY_NEXT
= "org.schabi.newpipe.player.BackgroundPlayer.ACTION_PLAY_NEXT";
public static final String ACTION_PLAY_PREVIOUS
= "org.schabi.newpipe.player.BackgroundPlayer.ACTION_PLAY_PREVIOUS";
public static final String ACTION_FAST_REWIND
= "org.schabi.newpipe.player.BackgroundPlayer.ACTION_FAST_REWIND";
public static final String ACTION_FAST_FORWARD
= "org.schabi.newpipe.player.BackgroundPlayer.ACTION_FAST_FORWARD";
public static final String SET_IMAGE_RESOURCE_METHOD = "setImageResource";
private static final String TAG = "BackgroundPlayer";
private static final boolean DEBUG = BasePlayer.DEBUG;
private static final int NOTIFICATION_ID = 123789;
private static final int NOTIFICATION_UPDATES_BEFORE_RESET = 60;
private BasePlayerImpl basePlayerImpl;
/*//////////////////////////////////////////////////////////////////////////
// Service-Activity Binder
//////////////////////////////////////////////////////////////////////////*/
private SharedPreferences sharedPreferences;
/*//////////////////////////////////////////////////////////////////////////
// Notification
//////////////////////////////////////////////////////////////////////////*/
private PlayerEventListener activityListener;
private IBinder mBinder;
private NotificationManager notificationManager;
private NotificationCompat.Builder notBuilder;
private RemoteViews notRemoteView;
private RemoteViews bigNotRemoteView;
private boolean shouldUpdateOnProgress;
private int timesNotificationUpdated;
/*//////////////////////////////////////////////////////////////////////////
// Service's LifeCycle
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCreate() {
if (DEBUG) {
Log.d(TAG, "onCreate() called");
}
notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
assureCorrectAppLanguage(this);
ThemeHelper.setTheme(this);
basePlayerImpl = new BasePlayerImpl(this);
basePlayerImpl.setup();
mBinder = new PlayerServiceBinder(basePlayerImpl);
shouldUpdateOnProgress = true;
}
@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
if (DEBUG) {
Log.d(TAG, "onStartCommand() called with: intent = [" + intent + "], "
+ "flags = [" + flags + "], startId = [" + startId + "]");
}
basePlayerImpl.handleIntent(intent);
if (basePlayerImpl.mediaSessionManager != null) {
basePlayerImpl.mediaSessionManager.handleMediaButtonIntent(intent);
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
if (DEBUG) {
Log.d(TAG, "destroy() called");
}
onClose();
}
@Override
protected void attachBaseContext(final Context base) {
super.attachBaseContext(AudioServiceLeakFix.preventLeakOf(base));
}
@Override
public IBinder onBind(final Intent intent) {
return mBinder;
}
/*//////////////////////////////////////////////////////////////////////////
// Actions
//////////////////////////////////////////////////////////////////////////*/
private void onClose() {
if (DEBUG) {
Log.d(TAG, "onClose() called");
}
if (basePlayerImpl != null) {
basePlayerImpl.savePlaybackState();
basePlayerImpl.stopActivityBinding();
basePlayerImpl.destroy();
}
if (notificationManager != null) {
notificationManager.cancel(NOTIFICATION_ID);
}
mBinder = null;
basePlayerImpl = null;
stopForeground(true);
stopSelf();
}
private void onScreenOnOff(final boolean on) {
if (DEBUG) {
Log.d(TAG, "onScreenOnOff() called with: on = [" + on + "]");
}
shouldUpdateOnProgress = on;
basePlayerImpl.triggerProgressUpdate();
if (on) {
basePlayerImpl.startProgressLoop();
} else {
basePlayerImpl.stopProgressLoop();
}
}
/*//////////////////////////////////////////////////////////////////////////
// Notification
//////////////////////////////////////////////////////////////////////////*/
private void resetNotification() {
notBuilder = createNotification();
timesNotificationUpdated = 0;
}
private NotificationCompat.Builder createNotification() {
notRemoteView = new RemoteViews(BuildConfig.APPLICATION_ID,
R.layout.player_background_notification);
bigNotRemoteView = new RemoteViews(BuildConfig.APPLICATION_ID,
R.layout.player_background_notification_expanded);
setupNotification(notRemoteView);
setupNotification(bigNotRemoteView);
NotificationCompat.Builder builder = new NotificationCompat
.Builder(this, getString(R.string.notification_channel_id))
.setOngoing(true)
.setSmallIcon(R.drawable.ic_newpipe_triangle_white)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setCustomContentView(notRemoteView)
.setCustomBigContentView(bigNotRemoteView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setLockScreenThumbnail(builder);
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
builder.setPriority(NotificationCompat.PRIORITY_MAX);
}
return builder;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setLockScreenThumbnail(final NotificationCompat.Builder builder) {
boolean isLockScreenThumbnailEnabled = sharedPreferences.getBoolean(
getString(R.string.enable_lock_screen_video_thumbnail_key), true);
if (isLockScreenThumbnailEnabled) {
basePlayerImpl.mediaSessionManager.setLockScreenArt(
builder,
getCenteredThumbnailBitmap()
);
} else {
basePlayerImpl.mediaSessionManager.clearLockScreenArt(builder);
}
}
@Nullable
private Bitmap getCenteredThumbnailBitmap() {
final int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels;
final int screenHeight = Resources.getSystem().getDisplayMetrics().heightPixels;
return BitmapUtils.centerCrop(basePlayerImpl.getThumbnail(), screenWidth, screenHeight);
}
private void setupNotification(final RemoteViews remoteViews) {
if (basePlayerImpl == null) {
return;
}
remoteViews.setTextViewText(R.id.notificationSongName, basePlayerImpl.getVideoTitle());
remoteViews.setTextViewText(R.id.notificationArtist, basePlayerImpl.getUploaderName());
remoteViews.setOnClickPendingIntent(R.id.notificationPlayPause,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_PLAY_PAUSE), PendingIntent.FLAG_UPDATE_CURRENT));
remoteViews.setOnClickPendingIntent(R.id.notificationStop,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_CLOSE), PendingIntent.FLAG_UPDATE_CURRENT));
remoteViews.setOnClickPendingIntent(R.id.notificationRepeat,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_REPEAT), PendingIntent.FLAG_UPDATE_CURRENT));
// Starts background player activity -- attempts to unlock lockscreen
final Intent intent = NavigationHelper.getBackgroundPlayerActivityIntent(this);
remoteViews.setOnClickPendingIntent(R.id.notificationContent,
PendingIntent.getActivity(this, NOTIFICATION_ID, intent,
PendingIntent.FLAG_UPDATE_CURRENT));
if (basePlayerImpl.playQueue != null && basePlayerImpl.playQueue.size() > 1) {
remoteViews.setInt(R.id.notificationFRewind, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_previous);
remoteViews.setInt(R.id.notificationFForward, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_next);
remoteViews.setOnClickPendingIntent(R.id.notificationFRewind,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_PLAY_PREVIOUS), PendingIntent.FLAG_UPDATE_CURRENT));
remoteViews.setOnClickPendingIntent(R.id.notificationFForward,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_PLAY_NEXT), PendingIntent.FLAG_UPDATE_CURRENT));
} else {
remoteViews.setInt(R.id.notificationFRewind, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_rewind);
remoteViews.setInt(R.id.notificationFForward, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_fastforward);
remoteViews.setOnClickPendingIntent(R.id.notificationFRewind,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_FAST_REWIND), PendingIntent.FLAG_UPDATE_CURRENT));
remoteViews.setOnClickPendingIntent(R.id.notificationFForward,
PendingIntent.getBroadcast(this, NOTIFICATION_ID,
new Intent(ACTION_FAST_FORWARD), PendingIntent.FLAG_UPDATE_CURRENT));
}
setRepeatModeIcon(remoteViews, basePlayerImpl.getRepeatMode());
}
/**
* Updates the notification, and the play/pause button in it.
* Used for changes on the remoteView
*
* @param drawableId if != -1, sets the drawable with that id on the play/pause button
*/
private synchronized void updateNotification(final int drawableId) {
// if (DEBUG) {
// Log.d(TAG, "updateNotification() called with: drawableId = [" + drawableId + "]");
// }
if (notBuilder == null) {
return;
}
if (drawableId != -1) {
if (notRemoteView != null) {
notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
}
if (bigNotRemoteView != null) {
bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
}
}
notificationManager.notify(NOTIFICATION_ID, notBuilder.build());
timesNotificationUpdated++;
}
/*//////////////////////////////////////////////////////////////////////////
// Utils
//////////////////////////////////////////////////////////////////////////*/
private void setRepeatModeIcon(final RemoteViews remoteViews, final int repeatMode) {
switch (repeatMode) {
case Player.REPEAT_MODE_OFF:
remoteViews.setInt(R.id.notificationRepeat, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_repeat_off);
break;
case Player.REPEAT_MODE_ONE:
remoteViews.setInt(R.id.notificationRepeat, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_repeat_one);
break;
case Player.REPEAT_MODE_ALL:
remoteViews.setInt(R.id.notificationRepeat, SET_IMAGE_RESOURCE_METHOD,
R.drawable.exo_controls_repeat_all);
break;
}
}
//////////////////////////////////////////////////////////////////////////
protected class BasePlayerImpl extends BasePlayer {
@NonNull
private final AudioPlaybackResolver resolver;
private int cachedDuration;
private String cachedDurationString;
BasePlayerImpl(final Context context) {
super(context);
this.resolver = new AudioPlaybackResolver(context, dataSource);
}
@Override
public void initPlayer(final boolean playOnReady) {
super.initPlayer(playOnReady);
}
@Override
public void handleIntent(final Intent intent) {
super.handleIntent(intent);
resetNotification();
if (bigNotRemoteView != null) {
bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
}
if (notRemoteView != null) {
notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
}
startForeground(NOTIFICATION_ID, notBuilder.build());
}
/*//////////////////////////////////////////////////////////////////////////
// Thumbnail Loading
//////////////////////////////////////////////////////////////////////////*/
private void updateNotificationThumbnail() {
if (basePlayerImpl == null) {
return;
}
if (notRemoteView != null) {
notRemoteView.setImageViewBitmap(R.id.notificationCover,
basePlayerImpl.getThumbnail());
}
if (bigNotRemoteView != null) {
bigNotRemoteView.setImageViewBitmap(R.id.notificationCover,
basePlayerImpl.getThumbnail());
}
}
@Override
public void onLoadingComplete(final String imageUri, final View view,
final Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
resetNotification();
updateNotificationThumbnail();
updateNotification(-1);
}
@Override
public void onLoadingFailed(final String imageUri, final View view,
final FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
resetNotification();
updateNotificationThumbnail();
updateNotification(-1);
}
/*//////////////////////////////////////////////////////////////////////////
// States Implementation
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onPrepared(final boolean playWhenReady) {
super.onPrepared(playWhenReady);
}
@Override
public void onShuffleClicked() {
super.onShuffleClicked();
updatePlayback();
}
@Override
public void onMuteUnmuteButtonClicked() {
super.onMuteUnmuteButtonClicked();
updatePlayback();
}
@Override
public void onUpdateProgress(final int currentProgress, final int duration,
final int bufferPercent) {
updateProgress(currentProgress, duration, bufferPercent);
if (!shouldUpdateOnProgress) {
return;
}
if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) {
resetNotification();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) {
updateNotificationThumbnail();
}
}
if (bigNotRemoteView != null) {
if (cachedDuration != duration) {
cachedDuration = duration;
cachedDurationString = getTimeString(duration);
}
bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, duration,
currentProgress, false);
bigNotRemoteView.setTextViewText(R.id.notificationTime,
getTimeString(currentProgress) + " / " + cachedDurationString);
}
if (notRemoteView != null) {
notRemoteView.setProgressBar(R.id.notificationProgressBar, duration,
currentProgress, false);
}
updateNotification(-1);
}
@Override
public void onPlayPrevious() {
super.onPlayPrevious();
triggerProgressUpdate();
}
@Override
public void onPlayNext() {
super.onPlayNext();
triggerProgressUpdate();
}
@Override
public void destroy() {
super.destroy();
if (notRemoteView != null) {
notRemoteView.setImageViewBitmap(R.id.notificationCover, null);
}
if (bigNotRemoteView != null) {
bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null);
}
}
/*//////////////////////////////////////////////////////////////////////////
// ExoPlayer Listener
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onPlaybackParametersChanged(final PlaybackParameters playbackParameters) {
super.onPlaybackParametersChanged(playbackParameters);
updatePlayback();
}
@Override
public void onLoadingChanged(final boolean isLoading) {
// Disable default behavior
}
@Override
public void onRepeatModeChanged(final int i) {
resetNotification();
updateNotification(-1);
updatePlayback();
}
/*//////////////////////////////////////////////////////////////////////////
// Playback Listener
//////////////////////////////////////////////////////////////////////////*/
protected void onMetadataChanged(@NonNull final MediaSourceTag tag) {
super.onMetadataChanged(tag);
resetNotification();
updateNotificationThumbnail();
updateNotification(-1);
updateMetadata();
}
@Override
@Nullable
public MediaSource sourceOf(final PlayQueueItem item, final StreamInfo info) {
return resolver.resolve(info);
}
@Override
public void onPlaybackShutdown() {
super.onPlaybackShutdown();
onClose();
}
/*//////////////////////////////////////////////////////////////////////////
// Activity Event Listener
//////////////////////////////////////////////////////////////////////////*/
/*package-private*/ void setActivityListener(final PlayerEventListener listener) {
activityListener = listener;
updateMetadata();
updatePlayback();
triggerProgressUpdate();
}
/*package-private*/ void removeActivityListener(final PlayerEventListener listener) {
if (activityListener == listener) {
activityListener = null;
}
}
private void updateMetadata() {
if (activityListener != null && getCurrentMetadata() != null) {
activityListener.onMetadataUpdate(getCurrentMetadata().getMetadata(), playQueue);
}
}
private void updatePlayback() {
if (activityListener != null && simpleExoPlayer != null && playQueue != null) {
activityListener.onPlaybackUpdate(currentState, getRepeatMode(),
playQueue.isShuffled(), getPlaybackParameters());
}
}
private void updateProgress(final int currentProgress, final int duration,
final int bufferPercent) {
if (activityListener != null) {
activityListener.onProgressUpdate(currentProgress, duration, bufferPercent);
}
}
private void stopActivityBinding() {
if (activityListener != null) {
activityListener.onServiceStopped();
activityListener = null;
}
}
/*//////////////////////////////////////////////////////////////////////////
// Broadcast Receiver
//////////////////////////////////////////////////////////////////////////*/
@Override
protected void setupBroadcastReceiver(final IntentFilter intentFltr) {
super.setupBroadcastReceiver(intentFltr);
intentFltr.addAction(ACTION_CLOSE);
intentFltr.addAction(ACTION_PLAY_PAUSE);
intentFltr.addAction(ACTION_REPEAT);
intentFltr.addAction(ACTION_PLAY_PREVIOUS);
intentFltr.addAction(ACTION_PLAY_NEXT);
intentFltr.addAction(ACTION_FAST_REWIND);
intentFltr.addAction(ACTION_FAST_FORWARD);
intentFltr.addAction(Intent.ACTION_SCREEN_ON);
intentFltr.addAction(Intent.ACTION_SCREEN_OFF);
intentFltr.addAction(Intent.ACTION_HEADSET_PLUG);
}
@Override
public void onBroadcastReceived(final Intent intent) {
super.onBroadcastReceived(intent);
if (intent == null || intent.getAction() == null) {
return;
}
if (DEBUG) {
Log.d(TAG, "onBroadcastReceived() called with: intent = [" + intent + "]");
}
switch (intent.getAction()) {
case ACTION_CLOSE:
onClose();
break;
case ACTION_PLAY_PAUSE:
onPlayPause();
break;
case ACTION_REPEAT:
onRepeatClicked();
break;
case ACTION_PLAY_NEXT:
onPlayNext();
break;
case ACTION_PLAY_PREVIOUS:
onPlayPrevious();
break;
case ACTION_FAST_FORWARD:
onFastForward();
break;
case ACTION_FAST_REWIND:
onFastRewind();
break;
case Intent.ACTION_SCREEN_ON:
onScreenOnOff(true);
break;
case Intent.ACTION_SCREEN_OFF:
onScreenOnOff(false);
break;
}
}
/*//////////////////////////////////////////////////////////////////////////
// States
//////////////////////////////////////////////////////////////////////////*/
@Override
public void changeState(final int state) {
super.changeState(state);
updatePlayback();
}
@Override
public void onPlaying() {
super.onPlaying();
resetNotification();
updateNotificationThumbnail();
updateNotification(R.drawable.exo_controls_pause);
}
@Override
public void onPaused() {
super.onPaused();
resetNotification();
updateNotificationThumbnail();
updateNotification(R.drawable.exo_controls_play);
}
@Override
public void onCompleted() {
super.onCompleted();
resetNotification();
if (bigNotRemoteView != null) {
bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 100, false);
}
if (notRemoteView != null) {
notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 100, false);
}
updateNotificationThumbnail();
updateNotification(R.drawable.ic_replay_white_24dp);
}
}
}

View file

@ -1,6 +1,6 @@
/*
* Copyright 2017 Mauricio Colli <mauriciocolli@outlook.com>
* BackgroundPlayer.java is part of NewPipe
* Part of NewPipe
*
* License: GPL-3.0+
* This program is free software: you can redistribute it and/or modify

View file

@ -1,72 +0,0 @@
package org.schabi.newpipe.player;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import org.schabi.newpipe.R;
import static org.schabi.newpipe.player.PopupVideoPlayer.ACTION_CLOSE;
public final class PopupVideoPlayerActivity extends ServicePlayerActivity {
private static final String TAG = "PopupVideoPlayerActivity";
@Override
public String getTag() {
return TAG;
}
@Override
public String getSupportActionTitle() {
return getResources().getString(R.string.title_activity_popup_player);
}
@Override
public Intent getBindIntent() {
return new Intent(this, PopupVideoPlayer.class);
}
@Override
public void startPlayerListener() {
if (player != null && player instanceof PopupVideoPlayer.VideoPlayerImpl) {
((PopupVideoPlayer.VideoPlayerImpl) player).setActivityListener(this);
}
}
@Override
public void stopPlayerListener() {
if (player != null && player instanceof PopupVideoPlayer.VideoPlayerImpl) {
((PopupVideoPlayer.VideoPlayerImpl) player).removeActivityListener(this);
}
}
@Override
public int getPlayerOptionMenuResource() {
return R.menu.menu_play_queue_popup;
}
@Override
public boolean onPlayerOptionSelected(final MenuItem item) {
if (item.getItemId() == R.id.action_switch_background) {
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startService(
getSwitchIntent(MainPlayer.class, MainPlayer.PlayerType.AUDIO)
.putExtra(BasePlayer.START_PAUSED, !this.player.isPlaying())
);
return true;
}
return false;
}
@Override
public void setupMenu(final Menu menu) {
}
//@Override
public Intent getPlayerShutdownIntent() {
return new Intent(ACTION_CLOSE);
}
}

View file

@ -1,6 +1,6 @@
/*
* Copyright 2017 Mauricio Colli <mauriciocolli@outlook.com>
* PopupVideoPlayer.java is part of NewPipe
* Part of NewPipe
*
* License: GPL-3.0+
* This program is free software: you can redistribute it and/or modify

View file

@ -213,7 +213,7 @@ public class PlayerGestureListener
return false;
}
/*if (DEBUG && false) Log.d(TAG, "MainVideoPlayer.onScroll = " +
/*if (DEBUG && false) Log.d(TAG, "onScrollInMain = " +
", e1.getRaw = [" + initialEvent.getRawX() + ", " + initialEvent.getRawY() + "]" +
", e2.getRaw = [" + movingEvent.getRawX() + ", " + movingEvent.getRawY() + "]" +
", distanceXy = [" + distanceX + ", " + distanceY + "]");*/
@ -431,7 +431,7 @@ public class PlayerGestureListener
}
// if (DEBUG) {
// Log.d(TAG, "PopupVideoPlayer.onScroll = "
// Log.d(TAG, "onScrollInPopup = "
// + "e1.getRaw = [" + initialEvent.getRawX() + ", "
// + initialEvent.getRawY() + "], "
// + "e1.getX,Y = [" + initialEvent.getX() + ", "

View file

@ -1,299 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:gravity="center"
tools:layout_height="84dp"
tools:layout_width="@dimen/popup_minimum_width">
<com.google.android.exoplayer2.ui.AspectRatioFrameLayout
android:id="@+id/aspectRatioLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
<View
android:id="@+id/surfaceForeground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"/>
<com.google.android.exoplayer2.ui.SubtitleView
android:id="@+id/subtitleView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.google.android.exoplayer2.ui.AspectRatioFrameLayout>
<ImageView
android:id="@+id/endScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:visibility="gone"
tools:background="@android:color/white"
tools:ignore="ContentDescription"
tools:visibility="visible"/>
<RelativeLayout
android:id="@+id/playbackControlRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#32000000"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:id="@+id/videoPlayPause"
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_centerHorizontal="false"
android:layout_centerInParent="true"
android:visibility="gone"
tools:ignore="ContentDescription"
tools:visibility="visible" />
<RelativeLayout
android:id="@+id/topControls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@drawable/player_controls_top_background"
android:paddingBottom="20dp"
android:paddingLeft="2dp"
android:paddingRight="6dp"
android:paddingTop="4dp"
tools:ignore="RtlHardcoded">
<TextView
android:id="@+id/qualityTextView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:gravity="center"
android:padding="5dp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="?attr/selectableItemBackground"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="1080p60"/>
<TextView
android:id="@+id/playbackSpeed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_toRightOf="@+id/qualityTextView"
android:gravity="center"
android:padding="5dp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="?attr/selectableItemBackground"
tools:ignore="RelativeOverlap,RtlHardcoded,RtlSymmetry"
tools:text="1.75x"/>
<RelativeLayout
android:id="@+id/extraOptionsView"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_toRightOf="@+id/playbackSpeed"
android:layout_toLeftOf="@id/fullScreenButton"
android:visibility="gone">
<TextView
android:id="@+id/resizeTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:minWidth="50dp"
android:padding="5dp"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:ignore="HardcodedText,RtlHardcoded"
tools:text="FIT" />
<TextView
android:id="@+id/captionTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="5dp"
android:layout_toRightOf="@id/resizeTextView"
android:gravity="center|left"
android:minWidth="40dp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="?attr/selectableItemBackground"
tools:ignore="RelativeOverlap,RtlHardcoded,RtlSymmetry"
tools:text="English" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/fullScreenButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_fullscreen_white_24dp"
tools:ignore="ContentDescription,RtlHardcoded" />
</RelativeLayout>
<!--Shadow Bottom Control-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/player_controls_background"
android:orientation="horizontal"
android:paddingTop="50dp"/>
<LinearLayout
android:id="@+id/bottomControls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="2dp"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
android:id="@+id/playbackCurrentTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="-:--:--"
android:textColor="@android:color/white"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry"
tools:text="1:06:29"/>
<androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/playbackSeekBar"
style="@style/Widget.AppCompat.SeekBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
tools:progress="25"
tools:secondaryProgress="50"/>
<TextView
android:id="@+id/playbackEndTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="-:--:--"
android:textColor="@android:color/white"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry"
tools:text="1:23:49"/>
<TextView
android:id="@+id/playbackLiveSync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center_vertical"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:visibility="gone"
android:background="?attr/selectableItemBackground"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="5.5">
<!--tools:visibility="gone">-->
<ImageView
android:id="@+id/controlAnimationView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
app:srcCompat="@drawable/ic_fast_rewind_white_24dp"
android:visibility="gone"
tools:ignore="ContentDescription"
tools:visibility="visible"/>
</LinearLayout>
<TextView
android:id="@+id/currentDisplaySeek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#64000000"
android:paddingBottom="5dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="5dp"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="gone"
tools:ignore="RtlHardcoded"
tools:text="1:06:29"
tools:visibility="visible"/>
<RelativeLayout
android:id="@+id/loading_panel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@color/black"
android:gravity="center"
android:padding="20dp"
tools:visibility="gone">
<ProgressBar
android:id="@+id/progressBarLoadingPanel"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"/>
</RelativeLayout>
<TextView
android:id="@+id/resizing_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:background="#6e000000"
android:gravity="center"
android:padding="5dp"
android:text="@string/popup_resizing_indicator_title"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="gone"
tools:ignore="RtlHardcoded"
tools:visibility="gone"/>
<View
android:id="@+id/closingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#AAFF0000"
android:visibility="gone"/>
</FrameLayout>

View file

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/notificationContent"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/background_notification_color"
android:clickable="true"
android:focusable="true"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/notificationCover"
android:layout_width="64dp"
android:layout_height="64dp"
android:scaleType="centerCrop"
android:src="@drawable/dummy_thumbnail"
tools:ignore="ContentDescription"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="RtlHardcoded">
<TextView
android:id="@+id/notificationSongName"
android:layout_width="match_parent"
android:ellipsize="end"
android:layout_height="wrap_content"
android:maxLines="1"
android:textSize="14sp"
android:textColor="@color/background_title_color"
tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nec aliquam augue, eget cursus est. Ut id tristique enim, ut scelerisque tellus. Sed ultricies ipsum non mauris ultricies, commodo malesuada velit porta."/>
<TextView
android:id="@+id/notificationArtist"
android:layout_width="match_parent"
android:ellipsize="end"
android:layout_height="wrap_content"
android:maxLines="1"
android:textSize="12sp"
android:textColor="@color/background_subtext_color"
tools:text="Duis posuere arcu condimentum lobortis mattis."/>
</LinearLayout>
<ImageButton
android:id="@+id/notificationRepeat"
android:layout_width="40dp"
android:layout_height="match_parent"
android:background="#00000000"
android:clickable="true"
android:focusable="true"
android:padding="5dp"
android:scaleType="fitCenter"
android:src="@drawable/exo_controls_repeat_all"
tools:ignore="ContentDescription"/>
<ImageButton
android:id="@+id/notificationPlayPause"
android:layout_width="45dp"
android:layout_height="match_parent"
android:background="#00000000"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
android:src="@drawable/exo_controls_pause"
tools:ignore="ContentDescription"/>
<ImageButton
android:id="@+id/notificationStop"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="5dp"
android:background="#00000000"
android:clickable="true"
android:focusable="true"
android:padding="5dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_close_white_24dp"
tools:ignore="ContentDescription,RtlHardcoded"/>
</LinearLayout>

View file

@ -1,10 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="org.schabi.newpipe.history.HistoryActivity">
<item android:id="@+id/action_switch_background"
android:orderInCategory="1999"
android:title="@string/switch_to_background"
app:showAsAction="never"/>
</menu>

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu
android:id="@+id/menu_video_options"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/toggleOrientation"
android:icon="@drawable/ic_screen_rotation_white_24dp"
android:title="@string/toggle_orientation"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/switchPopup"
android:icon="@drawable/ic_fullscreen_exit_white_24dp"
android:title="@string/switch_to_popup"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/switchBackground"
android:icon="?attr/ic_headset"
android:title="@string/switch_to_background"
app:showAsAction="ifRoom|withText" />
</menu>

View file

@ -227,8 +227,6 @@
<string name="trending">الشائعة</string>
<string name="top_50">أفضل 50</string>
<string name="new_and_hot">جديد وساخن</string>
<string name="title_activity_background_player">مشغل الخلفية</string>
<string name="title_activity_popup_player">المشغل المنبثق</string>
<string name="play_queue_remove">حذف</string>
<string name="play_queue_stream_detail">التفاصيل</string>
<string name="play_queue_audio_settings">الإعدادات الصوتية</string>

View file

@ -273,8 +273,6 @@
<string name="player_stream_failure">无法播放此串流</string>
<string name="player_unrecoverable_failure">发生无法恢复播放器错误</string>
<string name="player_recoverable_failure">恢复播放器错误</string>
<string name="title_activity_background_player">后台播放</string>
<string name="title_activity_popup_player">悬浮窗播放器</string>
<string name="play_queue_remove">移除</string>
<string name="play_queue_stream_detail">详情</string>
<string name="play_queue_audio_settings">音频设置</string>

View file

@ -314,8 +314,6 @@
<string name="trending">Трэнды</string>
<string name="top_50">Топ 50</string>
<string name="new_and_hot">Новае і гарачае</string>
<string name="title_activity_background_player">У фоне</string>
<string name="title_activity_popup_player">У акне</string>
<string name="play_queue_remove">Выдаліць</string>
<string name="play_queue_stream_detail">Падрабязнасці</string>
<string name="play_queue_audio_settings">Налады аўдыё</string>

View file

@ -307,8 +307,6 @@
<string name="trending">Набиращи популярност</string>
<string name="top_50">Топ 50</string>
<string name="new_and_hot">Ново и горещо</string>
<string name="title_activity_background_player">Във фонов режим</string>
<string name="title_activity_popup_player">В прозорец</string>
<string name="play_queue_remove">Премахни</string>
<string name="play_queue_stream_detail">Детайли</string>
<string name="play_queue_audio_settings">Аудио настройки</string>

View file

@ -259,8 +259,6 @@
<string name="kiosk">Quiosc</string>
<string name="trending">Tendències</string>
<string name="top_50">Els millors 50</string>
<string name="title_activity_background_player">Reproductor en rerefons</string>
<string name="title_activity_popup_player">Reproductor emergent</string>
<string name="enqueue_on_background">Afegeix a la cua de reproducció en rerefons</string>
<string name="enqueue_on_popup">Afegeix a la cua de reproducció emergent</string>
<string name="start_here_on_main">Reprodueix aquí</string>

View file

@ -188,7 +188,6 @@
<string name="theme_title">ڕووكار</string>
<string name="switch_to_main">گۆڕین بۆ سەرەکی</string>
<string name="show_original_time_ago_summary">دەقە بنچینەییەکان لە خزمەتگوزارییەکانەوە لە بابەتی پەخشەکاندا دیار دەبن</string>
<string name="title_activity_popup_player">کارپێکەری پەنجەرەی بچووک</string>
<string name="download_dialog_title">داگرتن</string>
<string name="caption_setting_title">ژێرنووسەکان</string>
<string name="invalid_url_toast">بەستەر هەڵەیە</string>
@ -601,7 +600,6 @@
<string name="title_last_played">دواین کارپێکراو</string>
<string name="could_not_setup_download_menu">ناتوانرێ لیستی داگرتن دابنرێ</string>
<string name="import_export_title">هێنانەوە/هاوردەکردن</string>
<string name="title_activity_background_player">کارپێکەری پاشبنەما</string>
<string name="app_update_notification_content_title">وەشانی نوێی داوانامە بەردەستە!</string>
<string name="playlist_thumbnail_change_success">وێنۆچکەی خشتەی کارپێکردن گۆڕدرا.</string>
<string name="import_soundcloud_instructions">هێنانەوەی پەڕەی کەسی SoundCloud بەدانانی بەستەر یاخوود ئایدی:

View file

@ -234,8 +234,6 @@ otevření ve vyskakovacím okně</string>
<string name="trending">Trendy</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nové &amp; hot</string>
<string name="title_activity_background_player">Přehrávač na pozadí</string>
<string name="title_activity_popup_player">Přehrávač v okně</string>
<string name="play_queue_remove">Odebrat</string>
<string name="play_queue_stream_detail">Podrobnosti</string>
<string name="play_queue_audio_settings">Nastavení zvuku</string>

View file

@ -315,8 +315,6 @@
<string name="trending">Populært lige nu</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nyt og populært</string>
<string name="title_activity_background_player">Baggrundsafspiller</string>
<string name="title_activity_popup_player">Pop op-afspiller</string>
<string name="play_queue_remove">Fjern</string>
<string name="play_queue_stream_detail">Detaljer</string>
<string name="play_queue_audio_settings">Lydindstillinger</string>

View file

@ -225,8 +225,6 @@
<string name="subscription_page_summary">Abonnement-Seite</string>
<string name="feed_page_summary">Feed-Seite</string>
<string name="channel_page_summary">Kanal-Seite</string>
<string name="title_activity_background_player">Wiedergabe im Hintergrund</string>
<string name="title_activity_popup_player">Pop-up Player</string>
<string name="play_queue_stream_detail">Details</string>
<string name="top_50">Top 50</string>
<string name="player_unrecoverable_failure">Nicht behebbarer Wiedergabefehler aufgetreten</string>

View file

@ -307,8 +307,6 @@
<string name="override_current_data">Αυτό θα παρακάμψει τις τρέχουσες ρυθμίσεις σας.</string>
<string name="import_settings">Θέλετε επίσης να εισάγετε ρυθμίσεις;</string>
<string name="kiosk">Περίπτερο</string>
<string name="title_activity_background_player">Συσκευή αναπαραγωγής Παρασκηνίου</string>
<string name="title_activity_popup_player">Συσκευή αναπαραγωγής Αναδυόμενου παραθύρου</string>
<string name="play_queue_remove">Αφαίρεση</string>
<string name="play_queue_stream_detail">Λεπτομέρειες</string>
<string name="play_queue_audio_settings">Ρυθμίσεις ήχου</string>

View file

@ -162,8 +162,6 @@
<string name="player_stream_failure">Ne povis ludi tion torenton</string>
<string name="player_unrecoverable_failure">Neatendebla eraro de ludilo okazis</string>
<string name="player_recoverable_failure">Reakiri el eraro de la ludilo</string>
<string name="title_activity_background_player">Fona ludilo</string>
<string name="title_activity_popup_player">Ŝprucfenestra ludilo</string>
<string name="play_queue_remove">Retiri</string>
<string name="play_queue_stream_detail">Detalado</string>
<string name="play_queue_audio_settings">Sonaj parametroj</string>

View file

@ -230,8 +230,6 @@
<string name="player_stream_failure">No se pudo reproducir este stream</string>
<string name="player_unrecoverable_failure">Se produjo un error irrecuperable del reproductor</string>
<string name="player_recoverable_failure">Recuperándose del error del reproductor</string>
<string name="title_activity_background_player">Reproductor en segundo plano</string>
<string name="title_activity_popup_player">Reproductor emergente</string>
<string name="play_queue_remove">Quitar</string>
<string name="play_queue_stream_detail">Detalles</string>
<string name="play_queue_audio_settings">Configuración de audio</string>

View file

@ -295,8 +295,6 @@
<string name="trending">Trendid</string>
<string name="top_50">"Top 50 "</string>
<string name="new_and_hot">Uus ja kuum</string>
<string name="title_activity_background_player">Taustapleier</string>
<string name="title_activity_popup_player">Hüpikpleier</string>
<string name="play_queue_remove">Eemalda</string>
<string name="play_queue_stream_detail">Üksikasjad</string>
<string name="play_queue_audio_settings">Heli seaded</string>

View file

@ -243,8 +243,6 @@
<string name="trending">Joerak</string>
<string name="top_50">Lehen 50ak</string>
<string name="new_and_hot">Berria eta arrakastatsua</string>
<string name="title_activity_background_player">Bigarren planoko erreproduzigailua</string>
<string name="title_activity_popup_player">Laster-leiho erreproduzigailua</string>
<string name="play_queue_remove">Kendu</string>
<string name="play_queue_stream_detail">Xehetasunak</string>
<string name="play_queue_audio_settings">Audio ezarpenak</string>

View file

@ -258,7 +258,6 @@
<string name="trending">محبوب</string>
<string name="top_50">۵۰ ویدئوی برتر</string>
<string name="new_and_hot">جدید و داغ</string>
<string name="title_activity_background_player">پخش‌کننده پس‌زمینه</string>
<string name="play_queue_remove">حذف</string>
<string name="play_queue_stream_detail">جزئیات</string>
<string name="play_queue_audio_settings">تنظیمات صدا</string>
@ -371,7 +370,6 @@
<string name="popup_playing_append">قرار دادن در صف پخش به صورت تصویر در تصویر</string>
<string name="player_unrecoverable_failure">خطای عدم احیای پخش‌کننده رخ داد</string>
<string name="player_recoverable_failure">در حال احیا از خطای پخش‌کننده</string>
<string name="title_activity_popup_player">پخش‌کننده تصویر در تصویر</string>
<string name="enqueue_on_background">در صف پخش پس‌زمینه قرار بده</string>
<string name="enqueue_on_popup">در صف پخش تصویر در تصویر قرار بده</string>
<string name="start_here_on_main">شروع پخش در اینجا</string>

View file

@ -230,8 +230,6 @@
<string name="player_stream_failure">Tätä suoratoistosisältöä ei voitu toistaa</string>
<string name="player_unrecoverable_failure">Palautuskelvoton soittimen virhe</string>
<string name="player_recoverable_failure">Palaudutaan soittimen virheestä</string>
<string name="title_activity_background_player">Taustasoitin</string>
<string name="title_activity_popup_player">Ponnahdusikkunasoitin</string>
<string name="play_queue_remove">Poista</string>
<string name="play_queue_stream_detail">Yksityiskohdat</string>
<string name="play_queue_audio_settings">Ääniasetukset</string>

View file

@ -224,8 +224,6 @@
<string name="player_stream_failure">Impossible de lire ce flux</string>
<string name="player_unrecoverable_failure">Une erreur irrécupérable du lecteur est survenue</string>
<string name="no_channel_subscribed_yet">Pas encore dabonnements de chaîne</string>
<string name="title_activity_background_player">Lecteur en arrière-plan</string>
<string name="title_activity_popup_player">Lecteur flottant</string>
<string name="play_queue_remove">Retirer</string>
<string name="play_queue_stream_detail">Détails</string>
<string name="play_queue_audio_settings">Paramètres audios</string>

View file

@ -341,8 +341,6 @@
<string name="trending">Tendencias</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Novo e popular</string>
<string name="title_activity_background_player">Reprodutor en segundo plano</string>
<string name="title_activity_popup_player">Reprodutor «popup»</string>
<string name="play_queue_remove">Eliminar</string>
<string name="play_queue_stream_detail">Detalles</string>
<string name="play_queue_audio_settings">Opcións de audio</string>

View file

@ -243,8 +243,6 @@
<string name="trending">החמים</string>
<string name="top_50">50 המובילים</string>
<string name="new_and_hot">חדש וחם</string>
<string name="title_activity_background_player">נגן רקע</string>
<string name="title_activity_popup_player">נגן צף</string>
<string name="play_queue_remove">הסרה</string>
<string name="play_queue_stream_detail">פרטים</string>
<string name="play_queue_audio_settings">אפשרויות שמע</string>

View file

@ -232,8 +232,6 @@
<string name="kiosk">kiosk</string>
<string name="top_50">टॉप 50</string>
<string name="new_and_hot">नया और गरम</string>
<string name="title_activity_background_player">पृष्ठभूमि प्लेयर</string>
<string name="title_activity_popup_player">पॉपअप प्लेयर</string>
<string name="play_queue_remove">निकाले</string>
<string name="play_queue_stream_detail">विवरण</string>
<string name="hold_to_append">जोड़ने के लिए पकड़ें रहे</string>

View file

@ -234,8 +234,6 @@
<string name="trending">U trendu</string>
<string name="top_50">Vrh 50</string>
<string name="new_and_hot">Novo i popularno</string>
<string name="title_activity_background_player">Pozadinski player</string>
<string name="title_activity_popup_player">Skočni reproduktor</string>
<string name="play_queue_remove">Ukloni</string>
<string name="play_queue_stream_detail">Detalji</string>
<string name="play_queue_audio_settings">Postavke zvuka</string>

View file

@ -296,7 +296,6 @@
<string name="trending">Felkapott</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Új és friss</string>
<string name="title_activity_popup_player">Felugró ablak lejátszó</string>
<string name="play_queue_remove">Eltávolítás</string>
<string name="play_queue_stream_detail">Részletek</string>
<string name="play_queue_audio_settings">Hang beállítások</string>

View file

@ -270,8 +270,6 @@
<string name="trending">Trending</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Baru &amp; panas</string>
<string name="title_activity_background_player">Pemutar latar belakang</string>
<string name="title_activity_popup_player">Pemutar popup</string>
<string name="play_queue_remove">Hapus</string>
<string name="play_queue_stream_detail">Detail</string>
<string name="play_queue_audio_settings">Pengaturan Audio</string>

View file

@ -231,8 +231,6 @@
<string name="player_stream_failure">Impossibile riprodurre questo flusso</string>
<string name="player_unrecoverable_failure">Si è verificato un errore irreversibile</string>
<string name="player_recoverable_failure">Ripristino dell\'errore del lettore multimediale</string>
<string name="title_activity_background_player">Riproduzione in Sottofondo</string>
<string name="title_activity_popup_player">Lettore Popup</string>
<string name="play_queue_remove">Rimuovi</string>
<string name="play_queue_stream_detail">Dettagli</string>
<string name="play_queue_audio_settings">Impostazioni Audio</string>

View file

@ -216,7 +216,6 @@
<string name="kiosk">Kiosk</string>
<string name="trending">人気</string>
<string name="top_50">トップ50</string>
<string name="title_activity_popup_player">ポップアップ再生</string>
<string name="play_queue_remove">削除</string>
<string name="play_queue_stream_detail">詳細</string>
<string name="play_queue_audio_settings">音声の設定</string>
@ -241,7 +240,6 @@
<string name="no_valid_zip_file">有効な ZIP ファイルではありません</string>
<string name="could_not_import_all_files">警告: すべてのファイルをインポートできませんでした。</string>
<string name="override_current_data">これにより、現在の設定が上書きされます。</string>
<string name="title_activity_background_player">バックグラウンド再生</string>
<string name="start_here_on_main">ここから再生を開始</string>
<string name="start_here_on_background">バックグラウンドで連続再生を開始</string>
<string name="drawer_open">ドロワーを開く</string>

View file

@ -230,8 +230,6 @@
<string name="trending">인기 급상승</string>
<string name="top_50">탑 50</string>
<string name="new_and_hot">신작 &amp; 뜨는 동영상</string>
<string name="title_activity_background_player">백그라운드 플레이어</string>
<string name="title_activity_popup_player">팝업 플레이어</string>
<string name="play_queue_remove">제거</string>
<string name="play_queue_stream_detail">상세 정보</string>
<string name="play_queue_audio_settings">오디오 설정</string>

View file

@ -252,7 +252,6 @@
<string name="title_last_played">دواین کارپێکراو</string>
<string name="title_most_played">زۆرترین کارپێکردن</string>
<string name="main_page_content">ناوەڕۆکی پەڕەی سەرەکی</string>
<string name="title_activity_popup_player">کارپێکەری پەنجەرەی بچووک</string>
<string name="play_queue_remove">لادان</string>
<string name="play_queue_stream_detail">وردەکارییەکان</string>
<string name="play_queue_audio_settings">ڕێکخستنەکانی دەنگ</string>
@ -434,7 +433,6 @@
<string name="trending">پڕبینەرەکان</string>
<string name="top_50">باشترین 50</string>
<string name="new_and_hot">نوێ &amp; چالاک</string>
<string name="title_activity_background_player">کارپێکەری پاشبنەما</string>
<string name="hold_to_append">پەنجەت داگرە بۆ ڕیزنەبوون</string>
<string name="enqueue_on_background">ڕیزنەبوون لە پاشبنەما</string>
<string name="enqueue_on_popup">ڕیزنەبوون لە پەنجەرەی بچووک</string>

View file

@ -267,8 +267,6 @@
<string name="trending">Tendencijos</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nauja ir karšta</string>
<string name="title_activity_background_player">Foninis grotuvas</string>
<string name="title_activity_popup_player">Langelio rėžimo grotuvas</string>
<string name="play_queue_remove">Pašalinti</string>
<string name="play_queue_stream_detail">Detalės</string>
<string name="play_queue_audio_settings">Garso nustatymai</string>

View file

@ -290,8 +290,6 @@
<string name="trending">Популарни</string>
<string name="top_50">Топ 50</string>
<string name="new_and_hot">Нови и жешки</string>
<string name="title_activity_background_player">Позадински плеер</string>
<string name="title_activity_popup_player">Подпрозорче</string>
<string name="play_queue_remove">Одстрани</string>
<string name="play_queue_stream_detail">Детали</string>
<string name="play_queue_audio_settings">Звучни поставки</string>

View file

@ -79,8 +79,6 @@
<string name="play_queue_audio_settings">ഓഡിയോ ക്രമീകരണങ്ങൾ</string>
<string name="play_queue_stream_detail">വിശദാംശങ്ങൾ</string>
<string name="play_queue_remove">നീക്കം ചെയ്യുക</string>
<string name="title_activity_popup_player">പോപ്-അപ് പ്ലെയർ</string>
<string name="title_activity_background_player">ബാക്ക്ഗ്രൗണ്ട് പ്ലേയർ</string>
<string name="conferences">സമ്മേളനങ്ങൾ</string>
<string name="most_liked">ഏറ്റവും ഇഷ്ടപ്പെട്ടത്</string>
<string name="recently_added">സമീപകാലത്ത് ചേർത്തത്</string>

View file

@ -328,8 +328,6 @@
<string name="top_50">Top 50</string>
<string name="new_and_hot">Baru &amp; panas</string>
<string name="conferences">Persidangan</string>
<string name="title_activity_background_player">Pemain latar belakang</string>
<string name="title_activity_popup_player">Pemain popup</string>
<string name="play_queue_remove">Hapuskan</string>
<string name="play_queue_stream_detail">Butiran</string>
<string name="play_queue_audio_settings">Tetapan Audio</string>

View file

@ -222,8 +222,6 @@
<string name="kiosk">Kiosk</string>
<string name="top_50">Topp 50</string>
<string name="new_and_hot">Nytt og hett</string>
<string name="title_activity_background_player">Bakgrunnsavspiller</string>
<string name="title_activity_popup_player">Oppsprettsavspiller</string>
<string name="play_queue_remove">Fjern</string>
<string name="play_queue_stream_detail">Detaljer</string>
<string name="play_queue_audio_settings">Lydinnstillinger</string>

View file

@ -334,8 +334,6 @@
<string name="top_50">शीर्ष 50</string>
<string name="new_and_hot">नयाँ र तात्तातो</string>
<string name="conferences">सम्मेलनहरु</string>
<string name="title_activity_background_player">प्ले लाममा</string>
<string name="title_activity_popup_player">पपअप प्लयेर</string>
<string name="play_queue_remove">हटाउ</string>
<string name="play_queue_stream_detail">विवरण</string>
<string name="play_queue_audio_settings">अडियो सेटिङहरू</string>

View file

@ -291,8 +291,6 @@
<string name="trending">Populair</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nieuw en populair</string>
<string name="title_activity_background_player">Achtergrondspeler</string>
<string name="title_activity_popup_player">Pop-upspeler</string>
<string name="play_queue_remove">Verwijderen</string>
<string name="play_queue_stream_detail">Details</string>
<string name="play_queue_audio_settings">Audio-instellingen</string>

View file

@ -231,8 +231,6 @@
<string name="trending">Populair</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nieuw en populair</string>
<string name="title_activity_background_player">Achtergrondspeler</string>
<string name="title_activity_popup_player">Pop-upspeler</string>
<string name="play_queue_remove">Verwijderen</string>
<string name="play_queue_stream_detail">Details</string>
<string name="play_queue_audio_settings">Audio-instellingen</string>

View file

@ -299,8 +299,6 @@
<string name="trending">ਰੁਝਾਨ ਵਿੱਚ</string>
<string name="top_50">ਟੌਪ 50</string>
<string name="new_and_hot">ਨਵਾਂ ਅਤੇ ਗਰਮਾ-ਗਰਮ</string>
<string name="title_activity_background_player">ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ</string>
<string name="title_activity_popup_player">ਪੌਪ-ਅਪ ਪਲੇਅਰ</string>
<string name="play_queue_remove">ਹਟਾਓ</string>
<string name="play_queue_stream_detail">ਵੇਰਵੇ</string>
<string name="play_queue_audio_settings">ਆਡੀਓ ਸੈਟਿੰਗਾਂ</string>

View file

@ -240,8 +240,6 @@
<string name="trending">Najpopularniejsze</string>
<string name="top_50">50 najlepszych</string>
<string name="new_and_hot">Nowe i gorące</string>
<string name="title_activity_background_player">Odtwarzanie w tle</string>
<string name="title_activity_popup_player">Odtwarzacz w trybie okienkowym</string>
<string name="play_queue_remove">Usuń</string>
<string name="play_queue_stream_detail">Szczegóły</string>
<string name="play_queue_audio_settings">Ustawienia dźwięku</string>

View file

@ -231,8 +231,6 @@
<string name="player_stream_failure">Este vídeo não pôde ser reproduzido</string>
<string name="player_unrecoverable_failure">Ocorreu um erro irrecuperável no player</string>
<string name="player_recoverable_failure">Recuperando do erro do player</string>
<string name="title_activity_background_player">Player em segundo plano</string>
<string name="title_activity_popup_player">Player Popup</string>
<string name="play_queue_remove">Remover</string>
<string name="play_queue_stream_detail">Detalhes</string>
<string name="play_queue_audio_settings">Configurações de áudio</string>

View file

@ -225,8 +225,6 @@
<string name="trending">Tendências</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Tendências</string>
<string name="title_activity_background_player">Reprodutor em segundo plano</string>
<string name="title_activity_popup_player">Reprodutor \'popup\'</string>
<string name="play_queue_remove">Remover</string>
<string name="play_queue_stream_detail">Detalhes</string>
<string name="play_queue_audio_settings">Definições de áudio</string>

View file

@ -286,8 +286,6 @@ pentru a deschide în mod pop-up</string>
<string name="no_valid_zip_file">Nici-un fişier ZIP valid</string>
<string name="could_not_import_all_files">Avertisment: Nu se pot importa fişierele.</string>
<string name="override_current_data">Acest lucru o să vă reseteze setup-ul curent.</string>
<string name="title_activity_background_player">Player în fundal</string>
<string name="title_activity_popup_player">Player popup</string>
<string name="play_queue_remove">Şterge</string>
<string name="play_queue_stream_detail">Detalii</string>
<string name="play_queue_audio_settings">Setări Audio</string>

View file

@ -242,8 +242,6 @@
<string name="show_hold_to_append_summary">Показать подсказку при нажатии \"В окне\" или \"В фоне\" на странице сведений о видео</string>
<string name="unknown_content">[Неизвестно]</string>
<string name="player_recoverable_failure">Восстановление после ошибки плеера</string>
<string name="title_activity_background_player">В фоне</string>
<string name="title_activity_popup_player">В окне</string>
<string name="hold_to_append">Зажмите, чтобы добавить в очередь</string>
<string name="enqueue_on_background">В очередь в фоне</string>
<string name="enqueue_on_popup">В очередь в окне</string>

View file

@ -276,8 +276,6 @@
<string name="trending">Trendy</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Nové &amp; horúce</string>
<string name="title_activity_background_player">Prehrávač na pozadí</string>
<string name="title_activity_popup_player">Prehrávač v mini okne</string>
<string name="play_queue_remove">Odstrániť</string>
<string name="play_queue_stream_detail">Podrobnosti</string>
<string name="play_queue_audio_settings">Nastavenie zvuku</string>

View file

@ -280,8 +280,6 @@ odpiranje v pojavnem načinu</string>
<string name="select_a_channel">Izbor kanala</string>
<string name="top_50">Najboljših 50</string>
<string name="new_and_hot">Novo in vroče</string>
<string name="title_activity_background_player">Ozadnji predvajalnik</string>
<string name="title_activity_popup_player">Pojavni predvajalnik</string>
<string name="play_queue_remove">Odstrani</string>
<string name="play_queue_stream_detail">Podrobnosti</string>
<string name="play_queue_audio_settings">Nastavitve zvoka</string>

View file

@ -226,8 +226,6 @@
<string name="play_queue_audio_settings">Aranzhimet Audio</string>
<string name="play_queue_stream_detail">Detaje</string>
<string name="play_queue_remove">Hiq</string>
<string name="title_activity_popup_player">Luajtësi popup</string>
<string name="title_activity_background_player">Luajtësi në sfond</string>
<string name="conferences">Konferencat</string>
<string name="most_liked">Më të pëlqyerat</string>
<string name="recently_added">Të shtuara së fundmi</string>

View file

@ -233,8 +233,6 @@
<string name="trending">У тренду</string>
<string name="top_50">Топ 50</string>
<string name="new_and_hot">Ново и вруће</string>
<string name="title_activity_background_player">Позадински плејер</string>
<string name="title_activity_popup_player">Искачући плејер</string>
<string name="play_queue_remove">Уклони</string>
<string name="play_queue_stream_detail">Детаљи</string>
<string name="play_queue_audio_settings">Поставке звука</string>

View file

@ -232,8 +232,6 @@
<string name="trending">Trend</string>
<string name="top_50">Topp 50</string>
<string name="new_and_hot">Aktuellt</string>
<string name="title_activity_background_player">Bakgrundsspelare</string>
<string name="title_activity_popup_player">Popup-spelare</string>
<string name="play_queue_remove">Ta bort</string>
<string name="play_queue_stream_detail">Detaljer</string>
<string name="play_queue_audio_settings">Ljudinställningar</string>

View file

@ -311,8 +311,6 @@
<string name="top_50">50 อันดับแรก</string>
<string name="new_and_hot">ใหม่และมาแรง</string>
<string name="conferences">การประชุม</string>
<string name="title_activity_background_player">เครื่องเล่นพื้นหลัง</string>
<string name="title_activity_popup_player">เครื่องเล่นป๊อปอัพ</string>
<string name="play_queue_remove">เอาออก</string>
<string name="play_queue_stream_detail">รายละเอียด</string>
<string name="play_queue_audio_settings">การตั้งค่าเสียง</string>

View file

@ -228,8 +228,6 @@
<string name="trending">Popüler</string>
<string name="top_50">En iyi 50</string>
<string name="new_and_hot">En yeniler ve popülerler</string>
<string name="title_activity_background_player">Arkaplan oynatıcı</string>
<string name="title_activity_popup_player">ılır pencere oynatıcı</string>
<string name="play_queue_remove">Kaldır</string>
<string name="play_queue_stream_detail">Ayrıntılar</string>
<string name="play_queue_audio_settings">Ses Ayarları</string>

View file

@ -289,8 +289,6 @@
<string name="override_current_data">Це перезапише ваші поточні налаштування.</string>
<string name="kiosk">Кіоски</string>
<string name="trending">Набуває популярності</string>
<string name="title_activity_background_player">Програвач у тлі</string>
<string name="title_activity_popup_player">Програвач у вікні</string>
<string name="play_queue_remove">Видалити</string>
<string name="hold_to_append">Утримуйте, щоб додати в чергу</string>
<string name="enqueue_on_background">Додати до фону</string>

View file

@ -288,8 +288,6 @@
<string name="trending">رجحان میں</string>
<string name="top_50">اوّل 50</string>
<string name="new_and_hot">نیا اور تازہ</string>
<string name="title_activity_background_player">پس منظر پلیئر</string>
<string name="title_activity_popup_player">پوپ اپ پلیئر</string>
<string name="play_queue_remove">ہٹائیں</string>
<string name="play_queue_stream_detail">تفصیلات</string>
<string name="play_queue_audio_settings">آڈیو کی ترتیبات</string>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="VideoPlayerTheme">
<item name="android:windowLayoutInDisplayCutoutMode">
shortEdges
</item>
</style>
</resources>

View file

@ -307,8 +307,6 @@
<string name="kiosk">Trang chủ</string>
<string name="trending">Xu hướng</string>
<string name="new_and_hot">Mới &amp; hot</string>
<string name="title_activity_background_player">Trình phát nền</string>
<string name="title_activity_popup_player">Trình phát popup</string>
<string name="play_queue_remove">Tẩy xoá</string>
<string name="play_queue_stream_detail">Chi tiết</string>
<string name="play_queue_audio_settings">Cài đặt âm thanh</string>

View file

@ -273,8 +273,6 @@
<string name="player_stream_failure">无法播放此串流</string>
<string name="player_unrecoverable_failure">发生无法恢复播放器错误</string>
<string name="player_recoverable_failure">恢复播放器错误</string>
<string name="title_activity_background_player">后台播放</string>
<string name="title_activity_popup_player">悬浮窗播放器</string>
<string name="play_queue_remove">移除</string>
<string name="play_queue_stream_detail">详情</string>
<string name="play_queue_audio_settings">音频设置</string>

View file

@ -252,8 +252,6 @@
<string name="trending">動向</string>
<string name="top_50">前 50</string>
<string name="new_and_hot">最新和熱門</string>
<string name="title_activity_background_player">背景播放</string>
<string name="title_activity_popup_player">懸浮視窗播放</string>
<string name="play_queue_remove">移除</string>
<string name="play_queue_stream_detail">詳細資訊</string>
<string name="play_queue_audio_settings">音訊設定</string>

View file

@ -144,8 +144,6 @@
<item>@string/audio_webm_key</item>
</string-array>
<string name="last_orientation_landscape_key" translatable="false">last_orientation_landscape_key</string>
<string name="last_resize_mode" translatable="false">last_resize_mode</string>
<!-- DEBUG ONLY -->

View file

@ -429,8 +429,6 @@
<string name="service_kiosk_string" translatable="false">%1$s/%2$s</string>
<!-- Play Queue -->
<string name="title_activity_play_queue">Play queue</string>
<string name="title_activity_background_player">Background player</string>
<string name="title_activity_popup_player">Popup player</string>
<string name="play_queue_remove">Remove</string>
<string name="play_queue_stream_detail">Details</string>
<string name="play_queue_audio_settings">Audio Settings</string>

View file

@ -330,5 +330,4 @@
<item name="android:windowAnimationStyle">@null</item>
</style>
<style name="VideoPlayerTheme" />
</resources>