Removed unused files, translations, styles, settings key
This commit is contained in:
parent
f2e4b69466
commit
5293d17e32
69 changed files with 5 additions and 4112 deletions
|
@ -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" />
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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() + ", "
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 بەدانانی بەستەر یاخوود ئایدی:
|
||||
|
|
|
@ -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é & 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 d’abonnements 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -270,8 +270,6 @@
|
|||
<string name="trending">Trending</string>
|
||||
<string name="top_50">Top 50</string>
|
||||
<string name="new_and_hot">Baru & 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -230,8 +230,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>
|
||||
|
|
|
@ -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">نوێ & چالاک</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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -328,8 +328,6 @@
|
|||
<string name="top_50">Top 50</string>
|
||||
<string name="new_and_hot">Baru & 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -276,8 +276,6 @@
|
|||
<string name="trending">Trendy</string>
|
||||
<string name="top_50">Top 50</string>
|
||||
<string name="new_and_hot">Nové & 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">Açı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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="VideoPlayerTheme">
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">
|
||||
shortEdges
|
||||
</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -307,8 +307,6 @@
|
|||
<string name="kiosk">Trang chủ</string>
|
||||
<string name="trending">Xu hướng</string>
|
||||
<string name="new_and_hot">Mới & 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -330,5 +330,4 @@
|
|||
<item name="android:windowAnimationStyle">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="VideoPlayerTheme" />
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue