merge unitTesting
|
@ -7,3 +7,4 @@
|
|||
/app/app.iml
|
||||
/.idea
|
||||
/*.iml
|
||||
gradle.properties
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
#Contributing
|
||||
#Contribution
|
||||
|
||||
This document contains guidelines on making contributions to NewPipe.
|
||||
|
||||
## Programming
|
||||
|
||||
* Follow the [Google Style Guidelines](https://google.github.io/styleguide/javaguide.html)
|
||||
* Make a new feature on a seperate branch, not on the master branch
|
||||
* Make a new feature on a separate branch, not on the master branch
|
||||
* Make a [pull request](https://github.com/theScrabi/NewPipe/pulls) if you're done with your changes
|
||||
* When submitting changes, you agree that your code will be GPLv3 licensed
|
||||
|
||||
|
@ -16,7 +16,7 @@ This document contains guidelines on making contributions to NewPipe.
|
|||
compatibility with all git tools
|
||||
* [This guide](http://chris.beams.io/posts/git-commit/) goes more in depth on what makes a good commit message
|
||||
|
||||
## Translating
|
||||
## Translation
|
||||
|
||||
* NewPipe can be translated on [weblate](https://hosted.weblate.org/projects/newpipe/strings/)
|
||||
|
||||
|
@ -30,4 +30,4 @@ This document contains guidelines on making contributions to NewPipe.
|
|||
## Communication
|
||||
|
||||
* For the time being, [Slack](http://invite.chschtsch.ml/) is being used for project communication
|
||||
* Feel free to post suggestions, changes ideas etc!
|
||||
* Feel free to post suggestions, changes, ideas etc!
|
||||
|
|
|
@ -36,6 +36,7 @@ NewPipe does not use any Google framework libraries, or the YouTube API. It only
|
|||
* Open a video in Kodi
|
||||
* Show Next/Related videos
|
||||
* Search YouTube in a specific language
|
||||
* Orbot/Tor support (no streaming yet)
|
||||
|
||||
### Coming Features
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ android {
|
|||
applicationId "org.schabi.newpipe"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 23
|
||||
versionCode 9
|
||||
versionName "0.7.0"
|
||||
versionCode 11
|
||||
versionName "0.7.2"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
|
@ -35,4 +35,5 @@ dependencies {
|
|||
compile 'com.android.support:recyclerview-v7:23.1.1'
|
||||
compile 'org.jsoup:jsoup:1.8.3'
|
||||
compile 'org.mozilla:rhino:1.7.7'
|
||||
compile 'info.guardianproject.netcipher:netcipher:1.2'
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<application
|
||||
android:name=".App"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:logo="@mipmap/ic_launcher"
|
||||
|
@ -29,43 +30,46 @@
|
|||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".VideoItemListActivity" />
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="youtube.com"
|
||||
android:scheme="http"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="youtube.com"
|
||||
android:scheme="https"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="www.youtube.com"
|
||||
android:scheme="http"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="www.youtube.com"
|
||||
android:scheme="https"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="m.youtube.com"
|
||||
android:scheme="http"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="m.youtube.com"
|
||||
android:scheme="https"
|
||||
android:pathPattern="/?*#*/*watch"/>
|
||||
<data
|
||||
android:host="youtu.be"
|
||||
android:scheme="https"
|
||||
android:pathPrefix="/"/>
|
||||
<data
|
||||
android:host="youtu.be"
|
||||
android:scheme="http"
|
||||
android:pathPrefix="/"/>
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="youtube.com" />
|
||||
<data android:host="m.youtube.com" />
|
||||
<data android:host="www.youtube.com" />
|
||||
<data android:pathPrefix="/v/" />
|
||||
<data android:pathPrefix="/watch" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="youtu.be" />
|
||||
<data android:pathPrefix="/" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="vnd.youtube" />
|
||||
<data android:scheme="vnd.youtube.launch" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".PlayVideoActivity"
|
||||
|
@ -74,15 +78,26 @@
|
|||
android:parentActivityName=".VideoItemDetailActivity"
|
||||
tools:ignore="UnusedAttribute">
|
||||
</activity>
|
||||
<!--TODO: make label a translatable string -->
|
||||
<service
|
||||
android:name=".BackgroundPlayer"
|
||||
android:label="NewPipe Background Player"
|
||||
android:exported="false" >
|
||||
</service>
|
||||
android:label="@string/background_player_name"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".SettingsActivity"
|
||||
android:label="@string/title_activity_settings" >
|
||||
android:label="@string/settings_activity_title" >
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".PanicResponderActivity"
|
||||
android:launchMode="singleInstance"
|
||||
android:noHistory="true"
|
||||
android:theme="@android:style/Theme.NoDisplay">
|
||||
<intent-filter>
|
||||
<action android:name="info.guardianproject.panic.action.TRIGGER" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ExitActivity"
|
||||
android:theme="@android:style/Theme.NoDisplay" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -99,8 +99,8 @@ class ActionBarHandler {
|
|||
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
String[] itemArray = new String[videoStreams.length];
|
||||
String defaultResolution = defaultPreferences
|
||||
.getString(activity.getString(R.string.defaultResolutionPreference),
|
||||
activity.getString(R.string.defaultResolutionListItem));
|
||||
.getString(activity.getString(R.string.default_resolution_key),
|
||||
activity.getString(R.string.default_resolution_value));
|
||||
int defaultResolutionPos = 0;
|
||||
|
||||
for(int i = 0; i < videoStreams.length; i++) {
|
||||
|
@ -124,7 +124,7 @@ class ActionBarHandler {
|
|||
// set audioStream
|
||||
audioStream = null;
|
||||
String preferedFormat = defaultPreferences
|
||||
.getString(activity.getString(R.string.defaultAudioFormatPreference), "webm");
|
||||
.getString(activity.getString(R.string.default_audio_format_key), "webm");
|
||||
if(preferedFormat.equals("webm")) {
|
||||
for(VideoInfo.AudioStream s : audioStreams) {
|
||||
if(s.format == MediaFormat.WEBMA.id) {
|
||||
|
@ -158,7 +158,7 @@ class ActionBarHandler {
|
|||
MenuItem castItem = menu.findItem(R.id.action_play_with_kodi);
|
||||
|
||||
castItem.setVisible(defaultPreferences
|
||||
.getBoolean(activity.getString(R.string.showPlayWithKodiPreference), false));
|
||||
.getBoolean(activity.getString(R.string.show_play_with_kodi_key), false));
|
||||
}
|
||||
|
||||
public boolean onItemSelected(MenuItem item) {
|
||||
|
@ -170,7 +170,7 @@ class ActionBarHandler {
|
|||
intent.setAction(Intent.ACTION_SEND);
|
||||
intent.putExtra(Intent.EXTRA_TEXT, websiteUrl);
|
||||
intent.setType("text/plain");
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.shareDialogTitle)));
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.share_dialog_title)));
|
||||
return true;
|
||||
}
|
||||
case R.id.menu_item_openInBrowser: {
|
||||
|
@ -210,7 +210,7 @@ class ActionBarHandler {
|
|||
// ----------- THE MAGIC MOMENT ---------------
|
||||
if(!videoTitle.isEmpty()) {
|
||||
if (PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
.getBoolean(activity.getString(R.string.useExternalVideoPlayer), false)) {
|
||||
.getBoolean(activity.getString(R.string.use_external_video_player_key), false)) {
|
||||
|
||||
// External Player
|
||||
Intent intent = new Intent();
|
||||
|
@ -226,13 +226,13 @@ class ActionBarHandler {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setMessage(R.string.noPlayerFound)
|
||||
.setPositiveButton(R.string.installStreamPlayer, new DialogInterface.OnClickListener() {
|
||||
builder.setMessage(R.string.no_player_found)
|
||||
.setPositiveButton(R.string.install, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroidVLCurl)));
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroid_vlc_url)));
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
})
|
||||
|
@ -284,7 +284,7 @@ class ActionBarHandler {
|
|||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(websiteUrl));
|
||||
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.chooseBrowser)));
|
||||
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.choose_browser)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,13 +298,13 @@ class ActionBarHandler {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setMessage(R.string.koreNotFound)
|
||||
.setPositiveButton(R.string.installeKore, new DialogInterface.OnClickListener() {
|
||||
builder.setMessage(R.string.kore_not_found)
|
||||
.setPositiveButton(R.string.install, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroidKoreUrl)));
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroid_kore_url)));
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
})
|
||||
|
@ -322,7 +322,7 @@ class ActionBarHandler {
|
|||
public void playAudio() {
|
||||
|
||||
boolean externalAudioPlayer = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
.getBoolean(activity.getString(R.string.useExternalAudioPlayer), false);
|
||||
.getBoolean(activity.getString(R.string.use_external_audio_player_key), false);
|
||||
Intent intent;
|
||||
|
||||
if (!externalAudioPlayer && android.os.Build.VERSION.SDK_INT >= 18) {
|
||||
|
@ -356,13 +356,13 @@ class ActionBarHandler {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setMessage(R.string.noPlayerFound)
|
||||
.setPositiveButton(R.string.installStreamPlayer, new DialogInterface.OnClickListener() {
|
||||
builder.setMessage(R.string.no_player_found)
|
||||
.setPositiveButton(R.string.install, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroidVLCurl)));
|
||||
intent.setData(Uri.parse(activity.getString(R.string.fdroid_vlc_url)));
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
})
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import info.guardianproject.netcipher.NetCipher;
|
||||
import info.guardianproject.netcipher.proxy.OrbotHelper;
|
||||
|
||||
/**
|
||||
* Copyright (C) Hans-Christoph Steiner 2016 <hans@eds.org>
|
||||
* App.java is part of NewPipe.
|
||||
*
|
||||
* NewPipe 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.
|
||||
*
|
||||
* NewPipe 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 NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class App extends Application {
|
||||
|
||||
private static boolean useTor;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
if(prefs.getBoolean(getString(R.string.use_tor_key), false)) {
|
||||
OrbotHelper.requestStartTor(this);
|
||||
configureTor(true);
|
||||
} else {
|
||||
configureTor(false);
|
||||
}
|
||||
|
||||
// DO NOT REMOVE THIS FUNCTION!!!
|
||||
// Otherwise downloadPathPreference has invalid value.
|
||||
SettingsActivity.initSettings(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the proxy settings based on whether Tor should be enabled or not.
|
||||
*/
|
||||
static void configureTor(boolean enabled) {
|
||||
useTor = enabled;
|
||||
if (useTor) {
|
||||
NetCipher.useTor();
|
||||
} else {
|
||||
NetCipher.setProxy(null);
|
||||
}
|
||||
}
|
||||
|
||||
static void checkStartTor(Context context) {
|
||||
if (useTor) {
|
||||
OrbotHelper.requestStartTor(context);
|
||||
}
|
||||
}
|
||||
|
||||
static boolean isUsingTor() {
|
||||
return useTor;
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ import android.os.IBinder;
|
|||
import android.os.PowerManager;
|
||||
import android.support.v7.app.NotificationCompat;
|
||||
import android.util.Log;
|
||||
import android.widget.RemoteViews;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -74,7 +75,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
}
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
Toast.makeText(this, R.string.backgroundPlayerStartPlayingToast,
|
||||
Toast.makeText(this, R.string.background_player_playing_toast,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
|
||||
String source = intent.getDataString();
|
||||
|
@ -113,9 +114,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
private int noteID = TAG.hashCode();
|
||||
private BackgroundPlayer owner;
|
||||
private NotificationManager noteMgr;
|
||||
private NotificationCompat.Builder noteBuilder;
|
||||
private WifiManager.WifiLock wifiLock;
|
||||
private Bitmap videoThumbnail = null;
|
||||
private NotificationCompat.Builder noteBuilder;
|
||||
|
||||
public PlayerThread(String src, String title, BackgroundPlayer owner) {
|
||||
this.source = src;
|
||||
|
@ -124,10 +125,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
mediaPlayer = new MediaPlayer();
|
||||
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Resources res = getApplicationContext().getResources();
|
||||
|
||||
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);//cpu lock
|
||||
try {
|
||||
mediaPlayer.setDataSource(source);
|
||||
|
@ -135,9 +135,6 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
//so calling the blocking prepare() method should be ok
|
||||
mediaPlayer.prepare();
|
||||
|
||||
//alternatively:
|
||||
//mediaPlayer.setOnPreparedListener(this);
|
||||
//mediaPlayer.prepareAsync(); //prepare async to not block main thread
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
Log.e(TAG, "video source:" + source);
|
||||
|
@ -177,63 +174,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
filter.addAction(ACTION_STOP);
|
||||
registerReceiver(broadcastReceiver, filter);
|
||||
|
||||
PendingIntent playPI = PendingIntent.getBroadcast(owner, noteID,
|
||||
new Intent(ACTION_PLAYPAUSE), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
NotificationCompat.Action playButton = new NotificationCompat.Action.Builder
|
||||
(R.drawable.ic_play_arrow_white_48dp, "Play", playPI).build();
|
||||
|
||||
/*
|
||||
NotificationCompat.Action pauseButton = new NotificationCompat.Action.Builder
|
||||
(R.drawable.ic_pause_white_24dp, "Pause", playPI).build();
|
||||
*/
|
||||
|
||||
PendingIntent stopPI = PendingIntent.getBroadcast(owner, noteID,
|
||||
new Intent(ACTION_STOP), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
noteBuilder = new NotificationCompat.Builder(owner);
|
||||
noteBuilder
|
||||
.setContentTitle(title)
|
||||
//really? Id like to put something more helpful here.
|
||||
//.setContentText("NewPipe is playing in the background")
|
||||
.setContentText(channelName)
|
||||
//.setAutoCancel(!mediaPlayer.isPlaying())
|
||||
.setOngoing(true)
|
||||
.setDeleteIntent(stopPI)
|
||||
//doesn't fit with Notification.MediaStyle
|
||||
//.setProgress(vidLength, 0, false)
|
||||
.setSmallIcon(R.drawable.ic_play_circle_filled_white_24dp)
|
||||
.setLargeIcon(videoThumbnail)
|
||||
.setTicker(
|
||||
String.format(res.getString(
|
||||
R.string.backgroundPlayerTickerText), title))
|
||||
.addAction(playButton);
|
||||
//.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||
//.setLargeIcon(cover)
|
||||
if(android.os.Build.VERSION.SDK_INT >= 16)
|
||||
noteBuilder.setPriority(Notification.PRIORITY_LOW);
|
||||
if(android.os.Build.VERSION.SDK_INT >= 21)
|
||||
noteBuilder.setCategory(Notification.CATEGORY_TRANSPORT);
|
||||
|
||||
noteBuilder.setStyle(new NotificationCompat.MediaStyle()
|
||||
//.setMediaSession(mMediaSession.getSessionToken())
|
||||
.setShowActionsInCompactView(new int[]{0})
|
||||
.setShowCancelButton(true)
|
||||
.setCancelButtonIntent(stopPI));
|
||||
if(videoThumbnail != null) {
|
||||
noteBuilder.setLargeIcon(videoThumbnail);
|
||||
}
|
||||
|
||||
Notification note = noteBuilder.build();
|
||||
|
||||
Intent openDetailView = new Intent(getApplicationContext(),
|
||||
VideoItemDetailActivity.class);
|
||||
openDetailView.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, serviceId);
|
||||
openDetailView.putExtra(VideoItemDetailFragment.VIDEO_URL, webUrl);
|
||||
openDetailView.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
note.contentIntent = PendingIntent.getActivity(getApplicationContext(),
|
||||
noteID, openDetailView,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
Notification note = buildNotification();
|
||||
|
||||
startForeground(noteID, note);
|
||||
|
||||
|
@ -252,9 +193,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
Log.d(TAG, "sleep failure");
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
/**Handles button presses from the notification. */
|
||||
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
@ -265,7 +206,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
mediaPlayer.pause();
|
||||
}
|
||||
else {
|
||||
//reacquire CPU lock after releasing it on pause
|
||||
//reacquire CPU lock after auto-releasing it on pause
|
||||
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
|
||||
mediaPlayer.start();
|
||||
}
|
||||
|
@ -279,8 +220,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
};
|
||||
|
||||
private void afterPlayCleanup() {
|
||||
//noteBuilder.setProgress(0, 0, false);
|
||||
//remove progress bar
|
||||
//noteBuilder.setProgress(0, 0, false);
|
||||
|
||||
//remove notification
|
||||
noteMgr.cancel(noteID);
|
||||
unregisterReceiver(broadcastReceiver);
|
||||
|
@ -289,7 +231,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
|
||||
//release wifilock
|
||||
wifiLock.release();
|
||||
//remove foreground status of service; make us killable
|
||||
//remove foreground status of service; make BackgroundPlayer killable
|
||||
stopForeground(true);
|
||||
|
||||
stopSelf();
|
||||
|
@ -306,5 +248,110 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
|||
afterPlayCleanup();
|
||||
}
|
||||
}
|
||||
|
||||
private Notification buildNotification() {
|
||||
Notification note;
|
||||
Resources res = getApplicationContext().getResources();
|
||||
noteBuilder = new NotificationCompat.Builder(owner);
|
||||
|
||||
PendingIntent playPI = PendingIntent.getBroadcast(owner, noteID,
|
||||
new Intent(ACTION_PLAYPAUSE), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
PendingIntent stopPI = PendingIntent.getBroadcast(owner, noteID,
|
||||
new Intent(ACTION_STOP), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
/*
|
||||
NotificationCompat.Action pauseButton = new NotificationCompat.Action.Builder
|
||||
(R.drawable.ic_pause_white_24dp, "Pause", playPI).build();
|
||||
*/
|
||||
|
||||
//build intent to return to video, on tapping notification
|
||||
Intent openDetailView = new Intent(getApplicationContext(),
|
||||
VideoItemDetailActivity.class);
|
||||
openDetailView.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, serviceId);
|
||||
openDetailView.putExtra(VideoItemDetailFragment.VIDEO_URL, webUrl);
|
||||
openDetailView.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
noteBuilder
|
||||
.setOngoing(true)
|
||||
.setDeleteIntent(stopPI)
|
||||
//doesn't fit with Notification.MediaStyle
|
||||
//.setProgress(vidLength, 0, false)
|
||||
.setSmallIcon(R.drawable.ic_play_circle_filled_white_24dp)
|
||||
.setTicker(
|
||||
String.format(res.getString(
|
||||
R.string.background_player_time_text), title))
|
||||
.setContentIntent(PendingIntent.getActivity(getApplicationContext(),
|
||||
noteID, openDetailView,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT));
|
||||
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT < 21) {
|
||||
|
||||
NotificationCompat.Action playButton = new NotificationCompat.Action.Builder
|
||||
(R.drawable.ic_play_arrow_white_48dp,
|
||||
res.getString(R.string.play_btn_text), playPI).build();
|
||||
|
||||
noteBuilder
|
||||
.setContentTitle(title)
|
||||
//really? Id like to put something more helpful here.
|
||||
//was more of a placeholder than anything else. -medavox
|
||||
//.setContentText("NewPipe is playing in the background")
|
||||
.setContentText(channelName)
|
||||
//.setAutoCancel(!mediaPlayer.isPlaying())
|
||||
.setDeleteIntent(stopPI)
|
||||
//doesn't fit with Notification.MediaStyle
|
||||
//.setProgress(vidLength, 0, false)
|
||||
.setLargeIcon(videoThumbnail)
|
||||
.addAction(playButton);
|
||||
//.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||
//.setLargeIcon(cover)
|
||||
|
||||
//is wrapping this in an SDK version check really necessary,
|
||||
// if we're using NotificationCompat?
|
||||
// the compat libraries should handle this, right? -medavox
|
||||
if (android.os.Build.VERSION.SDK_INT >= 16)
|
||||
noteBuilder.setPriority(Notification.PRIORITY_LOW);
|
||||
|
||||
noteBuilder.setStyle(new NotificationCompat.MediaStyle()
|
||||
//.setMediaSession(mMediaSession.getSessionToken())
|
||||
.setShowActionsInCompactView(new int[]{0})
|
||||
.setShowCancelButton(true)
|
||||
.setCancelButtonIntent(stopPI));
|
||||
if (videoThumbnail != null) {
|
||||
noteBuilder.setLargeIcon(videoThumbnail);
|
||||
}
|
||||
note = noteBuilder.build();
|
||||
} else {
|
||||
RemoteViews view =
|
||||
new RemoteViews(BuildConfig.APPLICATION_ID, R.layout.player_notification);
|
||||
view.setImageViewBitmap(R.id.backgroundCover, videoThumbnail);
|
||||
view.setTextViewText(R.id.backgroundSongName, title);
|
||||
view.setTextViewText(R.id.backgroundArtist, channelName);
|
||||
view.setOnClickPendingIntent(R.id.backgroundStop, stopPI);
|
||||
view.setOnClickPendingIntent(R.id.backgroundPlayPause, playPI);
|
||||
|
||||
//possibly found the expandedView problem,
|
||||
//but can't test it as I don't have a 5.0 device. -medavox
|
||||
RemoteViews expandedView =
|
||||
new RemoteViews(BuildConfig.APPLICATION_ID, R.layout.player_notification_expanded);
|
||||
expandedView.setImageViewBitmap(R.id.backgroundCover, videoThumbnail);
|
||||
expandedView.setTextViewText(R.id.backgroundSongName, title);
|
||||
expandedView.setTextViewText(R.id.backgroundArtist, channelName);
|
||||
expandedView.setOnClickPendingIntent(R.id.backgroundStop, stopPI);
|
||||
expandedView.setOnClickPendingIntent(R.id.backgroundPlayPause, playPI);
|
||||
|
||||
noteBuilder.setCategory(Notification.CATEGORY_TRANSPORT);
|
||||
|
||||
//Make notification appear on lockscreen
|
||||
noteBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
|
||||
|
||||
note = noteBuilder.build();
|
||||
note.contentView = view;
|
||||
|
||||
//todo: This never shows up. I was not able to figure out why:
|
||||
note.bigContentView = expandedView;
|
||||
}
|
||||
|
||||
return note;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,44 +52,52 @@ public class DownloadDialog extends DialogFragment {
|
|||
arguments = getArguments();
|
||||
super.onCreateDialog(savedInstanceState);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.downloadDialogTitle)
|
||||
.setItems(R.array.downloadOptions, new DialogInterface.OnClickListener() {
|
||||
builder.setTitle(R.string.download_dialog_title)
|
||||
.setItems(R.array.download_options, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Context context = getActivity();
|
||||
SharedPreferences defaultPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String suffix = "";
|
||||
String title = arguments.getString(TITLE);
|
||||
String url = "";
|
||||
String downloadFolder = Environment.DIRECTORY_DOWNLOADS;
|
||||
switch(which) {
|
||||
case 0: // Video
|
||||
suffix = arguments.getString(FILE_SUFFIX_VIDEO);
|
||||
url = arguments.getString(VIDEO_URL);
|
||||
downloadFolder = Environment.DIRECTORY_MOVIES;
|
||||
break;
|
||||
case 1:
|
||||
suffix = arguments.getString(FILE_SUFFIX_AUDIO);
|
||||
url = arguments.getString(AUDIO_URL);
|
||||
downloadFolder = Environment.DIRECTORY_MUSIC;
|
||||
break;
|
||||
default:
|
||||
Log.d(TAG, "lolz");
|
||||
}
|
||||
//to avoid hard-coded string like "/storage/emulated/0/NewPipe"
|
||||
final File dir = new File(defaultPreferences.getString(
|
||||
"download_path_preference",
|
||||
Environment.getExternalStorageDirectory().getAbsolutePath() + "/NewPipe"));
|
||||
//to avoid hard-coded string like "/storage/emulated/0/Movies"
|
||||
String downloadPath = prefs.getString(getString(R.string.download_path_key),
|
||||
Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + downloadFolder);
|
||||
final File dir = new File(downloadPath);
|
||||
if(!dir.exists()) {
|
||||
boolean mkdir = dir.mkdir(); //attempt to create directory
|
||||
//attempt to create directory
|
||||
boolean mkdir = dir.mkdir();
|
||||
if(!mkdir && !dir.isDirectory()) {
|
||||
Log.e(TAG, "Cant' create directory named " + dir.toString());
|
||||
//TODO notify user "download directory should be changed" ?
|
||||
}
|
||||
}
|
||||
|
||||
String saveFilePath = dir + "/" + title + suffix;
|
||||
if (App.isUsingTor()) {
|
||||
// if using Tor, do not use DownloadManager because the proxy cannot be set
|
||||
Downloader.downloadFile(getContext(), url, saveFilePath);
|
||||
} else {
|
||||
DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
DownloadManager.Request request = new DownloadManager.Request(
|
||||
Uri.parse(url));
|
||||
request.setDestinationUri(Uri.fromFile(new File(
|
||||
defaultPreferences.getString("download_path_preference", "/storage/emulated/0/NewPipe")
|
||||
+ "/" + title + suffix)));
|
||||
request.setDestinationUri(Uri.fromFile(new File(saveFilePath)));
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
try {
|
||||
dm.enqueue(request);
|
||||
|
@ -97,6 +105,7 @@ public class DownloadDialog extends DialogFragment {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return builder.create();
|
||||
}
|
||||
|
|
|
@ -1,12 +1,30 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
import info.guardianproject.netcipher.NetCipher;
|
||||
|
||||
/**
|
||||
* Created by Christian Schabesberger on 14.08.15.
|
||||
*
|
||||
|
@ -28,7 +46,7 @@ import java.net.UnknownHostException;
|
|||
*/
|
||||
|
||||
public class Downloader {
|
||||
|
||||
public static final String TAG = "Downloader";
|
||||
private static final String USER_AGENT = "Mozilla/5.0";
|
||||
|
||||
/**Download the text file at the supplied URL as in download(String),
|
||||
|
@ -40,7 +58,7 @@ public class Downloader {
|
|||
String ret = "";
|
||||
try {
|
||||
URL url = new URL(siteUrl);
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
|
||||
con.setRequestProperty("Accept-Language", language);
|
||||
ret = dl(con);
|
||||
}
|
||||
|
@ -49,8 +67,9 @@ public class Downloader {
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**Common functionality between download(String url) and download(String url, String language)*/
|
||||
private static String dl(HttpURLConnection con) throws IOException {
|
||||
private static String dl(HttpsURLConnection con) throws IOException {
|
||||
StringBuilder response = new StringBuilder();
|
||||
|
||||
try {
|
||||
|
@ -84,7 +103,7 @@ public class Downloader {
|
|||
|
||||
try {
|
||||
URL url = new URL(siteUrl);
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||
HttpsURLConnection con = NetCipher.getHttpsURLConnection(url);
|
||||
ret = dl(con);
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
@ -93,4 +112,92 @@ public class Downloader {
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads a file from a URL in the background using an {@link AsyncTask}.
|
||||
*
|
||||
* @param fileURL HTTP URL of the file to be downloaded
|
||||
* @param saveFilePath path of the directory to save the file
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void downloadFile(final Context context, final String fileURL, final String saveFilePath) {
|
||||
new AsyncTask<Void, Integer, Void>() {
|
||||
|
||||
private NotificationManager nm;
|
||||
private NotificationCompat.Builder builder;
|
||||
private int notifyId = 0x1234;
|
||||
private int fileSize = 0xffffffff;
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
super.onPreExecute();
|
||||
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Drawable icon = context.getResources().getDrawable(R.mipmap.ic_launcher);
|
||||
builder = new NotificationCompat.Builder(context)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||
.setLargeIcon(((BitmapDrawable) icon).getBitmap())
|
||||
.setContentTitle(saveFilePath.substring(saveFilePath.lastIndexOf('/') + 1))
|
||||
.setContentText(saveFilePath)
|
||||
.setProgress(fileSize, 0, false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
HttpsURLConnection con = null;
|
||||
try {
|
||||
con = NetCipher.getHttpsURLConnection(fileURL);
|
||||
int responseCode = con.getResponseCode();
|
||||
|
||||
// always check HTTP response code first
|
||||
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||
fileSize = con.getContentLength();
|
||||
InputStream inputStream = new BufferedInputStream(con.getInputStream());
|
||||
FileOutputStream outputStream = new FileOutputStream(saveFilePath);
|
||||
|
||||
int bufferSize = 8192;
|
||||
int downloaded = 0;
|
||||
|
||||
int bytesRead = -1;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
downloaded += bytesRead;
|
||||
if (downloaded % 50000 < bufferSize) {
|
||||
publishProgress(downloaded);
|
||||
}
|
||||
}
|
||||
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
publishProgress(bufferSize);
|
||||
|
||||
} else {
|
||||
Log.i(TAG, "No file to download. Server replied HTTP code: " + responseCode);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (con != null) {
|
||||
con.disconnect();
|
||||
con = null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate(Integer... progress) {
|
||||
builder.setProgress(fileSize, progress[0], false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
nm.cancel(notifyId);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* Copyright (C) Hans-Christoph Steiner 2016 <hans@eds.org>
|
||||
* ExitActivity.java is part of NewPipe.
|
||||
*
|
||||
* NewPipe 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.
|
||||
*
|
||||
* NewPipe 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 NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class ExitActivity extends Activity {
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 21) {
|
||||
finishAndRemoveTask();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
public static void exitAndRemoveFromRecentApps(Activity activity) {
|
||||
Intent intent = new Intent(activity, ExitActivity.class);
|
||||
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
|
||||
| Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
| Intent.FLAG_ACTIVITY_NO_ANIMATION);
|
||||
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Created by chschtsch on 12/29/15.
|
||||
*
|
||||
* Copyright (C) Gregory Arkhipov 2015
|
||||
* Localization.java is part of NewPipe.
|
||||
*
|
||||
* NewPipe 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.
|
||||
*
|
||||
* NewPipe 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 NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class Localization {
|
||||
|
||||
public static Locale getPreferredLocale(Context context) {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
String languageCode = sp.getString(String.valueOf(R.string.search_language_key),
|
||||
context.getString(R.string.default_language_value));
|
||||
|
||||
if(languageCode.length() == 2) {
|
||||
return new Locale(languageCode);
|
||||
}
|
||||
else if(languageCode.contains("_")) {
|
||||
String country = languageCode
|
||||
.substring(languageCode.indexOf("_"), languageCode.length());
|
||||
return new Locale(languageCode.substring(0, 2), country);
|
||||
}
|
||||
return Locale.getDefault();
|
||||
}
|
||||
|
||||
public static String localizeViewCount(long viewCount, Context context) {
|
||||
Locale locale = getPreferredLocale(context);
|
||||
|
||||
Resources res = context.getResources();
|
||||
String viewsString = res.getString(R.string.view_count_text);
|
||||
|
||||
NumberFormat nf = NumberFormat.getInstance(locale);
|
||||
String formattedViewCount = nf.format(viewCount);
|
||||
return String.format(viewsString, formattedViewCount);
|
||||
}
|
||||
|
||||
public static String localizeNumber(long number, Context context) {
|
||||
Locale locale = getPreferredLocale(context);
|
||||
NumberFormat nf = NumberFormat.getInstance(locale);
|
||||
return nf.format(number);
|
||||
}
|
||||
|
||||
private static String formatDate(String date, Context context) {
|
||||
Locale locale = getPreferredLocale(context);
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date datum = null;
|
||||
try {
|
||||
datum = formatter.parse(date);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
|
||||
|
||||
return df.format(datum);
|
||||
}
|
||||
|
||||
public static String localizeDate(String date, Context context) {
|
||||
Resources res = context.getResources();
|
||||
String dateString = res.getString(R.string.upload_date_text);
|
||||
|
||||
String formattedDate = formatDate(date, context);
|
||||
return String.format(dateString, formattedDate);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* Copyright (C) Hans-Christoph Steiner 2016 <hans@eds.org>
|
||||
* PanicResponderActivity.java is part of NewPipe.
|
||||
*
|
||||
* NewPipe 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.
|
||||
*
|
||||
* NewPipe 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 NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class PanicResponderActivity extends Activity {
|
||||
|
||||
public static final String PANIC_TRIGGER_ACTION = "info.guardianproject.panic.action.TRIGGER";
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Intent intent = getIntent();
|
||||
if (intent != null && PANIC_TRIGGER_ACTION.equals(intent.getAction())) {
|
||||
// TODO explicitly clear the search results once they are restored when the app restarts
|
||||
// or if the app reloads the current video after being killed, that should be cleared also
|
||||
ExitActivity.exitAndRemoveFromRecentApps(this);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 21) {
|
||||
finishAndRemoveTask();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -187,6 +187,18 @@ public class PlayVideoActivity extends AppCompatActivity {
|
|||
videoView.pause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
App.checkStartTor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
prefs = getPreferences(Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
int id = item.getItemId();
|
||||
|
@ -199,7 +211,7 @@ public class PlayVideoActivity extends AppCompatActivity {
|
|||
intent.setAction(Intent.ACTION_SEND);
|
||||
intent.putExtra(Intent.EXTRA_TEXT, videoUrl);
|
||||
intent.setType("text/plain");
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.shareDialogTitle)));
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.share_dialog_title)));
|
||||
break;
|
||||
case R.id.menu_item_screen_rotation:
|
||||
toggleOrientation();
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceManager;
|
||||
|
@ -17,6 +22,8 @@ import android.view.MenuItem;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import info.guardianproject.netcipher.proxy.OrbotHelper;
|
||||
|
||||
/**
|
||||
* Created by Christian Schabesberger on 31.08.15.
|
||||
*
|
||||
|
@ -39,6 +46,7 @@ import android.view.ViewGroup;
|
|||
|
||||
public class SettingsActivity extends PreferenceActivity {
|
||||
|
||||
private static final int REQUEST_INSTALL_ORBOT = 0x1234;
|
||||
private AppCompatDelegate mDelegate = null;
|
||||
|
||||
@Override
|
||||
|
@ -56,11 +64,99 @@ public class SettingsActivity extends PreferenceActivity {
|
|||
}
|
||||
|
||||
public static class SettingsFragment extends PreferenceFragment{
|
||||
SharedPreferences.OnSharedPreferenceChangeListener prefListener;
|
||||
|
||||
// get keys
|
||||
String DEFAULT_RESOLUTION_PREFERENCE;
|
||||
String DEFAULT_AUDIO_FORMAT_PREFERENCE;
|
||||
String SEARCH_LANGUAGE_PREFERENCE;
|
||||
String DOWNLOAD_PATH_PREFERENCE;
|
||||
String USE_TOR_KEY;
|
||||
|
||||
private ListPreference defaultResolutionPreference;
|
||||
private ListPreference defaultAudioFormatPreference;
|
||||
private ListPreference searchLanguagePreference;
|
||||
private EditTextPreference downloadPathPreference;
|
||||
private CheckBoxPreference useTorCheckBox;
|
||||
private SharedPreferences defaultPreferences;
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.settings_screen);
|
||||
addPreferencesFromResource(R.xml.settings);
|
||||
|
||||
final Activity activity = getActivity();
|
||||
|
||||
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
|
||||
// get keys
|
||||
DEFAULT_RESOLUTION_PREFERENCE =getString(R.string.default_resolution_key);
|
||||
DEFAULT_AUDIO_FORMAT_PREFERENCE =getString(R.string.default_audio_format_key);
|
||||
SEARCH_LANGUAGE_PREFERENCE =getString(R.string.search_language_key);
|
||||
DOWNLOAD_PATH_PREFERENCE = getString(R.string.download_path_key);
|
||||
USE_TOR_KEY = getString(R.string.use_tor_key);
|
||||
|
||||
// get pref objects
|
||||
defaultResolutionPreference =
|
||||
(ListPreference) findPreference(DEFAULT_RESOLUTION_PREFERENCE);
|
||||
defaultAudioFormatPreference =
|
||||
(ListPreference) findPreference(DEFAULT_AUDIO_FORMAT_PREFERENCE);
|
||||
searchLanguagePreference =
|
||||
(ListPreference) findPreference(SEARCH_LANGUAGE_PREFERENCE);
|
||||
downloadPathPreference =
|
||||
(EditTextPreference) findPreference(DOWNLOAD_PATH_PREFERENCE);
|
||||
useTorCheckBox = (CheckBoxPreference) findPreference(USE_TOR_KEY);
|
||||
|
||||
prefListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
|
||||
String key) {
|
||||
Activity a = getActivity();
|
||||
updateSummary();
|
||||
|
||||
if (defaultPreferences.getBoolean(USE_TOR_KEY, false)) {
|
||||
if (OrbotHelper.isOrbotInstalled(a)) {
|
||||
App.configureTor(true);
|
||||
OrbotHelper.requestStartTor(a);
|
||||
} else {
|
||||
Intent intent = OrbotHelper.getOrbotInstallIntent(a);
|
||||
a.startActivityForResult(intent, REQUEST_INSTALL_ORBOT);
|
||||
}
|
||||
} else {
|
||||
App.configureTor(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
defaultPreferences.registerOnSharedPreferenceChangeListener(prefListener);
|
||||
|
||||
updateSummary();
|
||||
}
|
||||
|
||||
// This is used to show the status of some preference in the description
|
||||
private void updateSummary() {
|
||||
defaultResolutionPreference.setSummary(
|
||||
defaultPreferences.getString(DEFAULT_RESOLUTION_PREFERENCE,
|
||||
getString(R.string.default_resolution_value)));
|
||||
defaultAudioFormatPreference.setSummary(
|
||||
defaultPreferences.getString(DEFAULT_AUDIO_FORMAT_PREFERENCE,
|
||||
getString(R.string.default_audio_format_value)));
|
||||
searchLanguagePreference.setSummary(
|
||||
defaultPreferences.getString(SEARCH_LANGUAGE_PREFERENCE,
|
||||
getString(R.string.default_language_value)));
|
||||
downloadPathPreference.setSummary(
|
||||
defaultPreferences.getString(DOWNLOAD_PATH_PREFERENCE,
|
||||
getString(R.string.download_path_summary)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
// try to start tor regardless of resultCode since clicking back after
|
||||
// installing the app does not necessarily return RESULT_OK
|
||||
App.configureTor(requestCode == REQUEST_INSTALL_ORBOT
|
||||
&& OrbotHelper.requestStartTor(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -150,13 +246,13 @@ public class SettingsActivity extends PreferenceActivity {
|
|||
}
|
||||
|
||||
public static void initSettings(Context context) {
|
||||
PreferenceManager.setDefaultValues(context, R.xml.settings_screen, false);
|
||||
PreferenceManager.setDefaultValues(context, R.xml.settings, false);
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if(sp.getString(context.getString(R.string.downloadPathPreference), "").isEmpty()){
|
||||
if(sp.getString(context.getString(R.string.download_path_key), "").isEmpty()){
|
||||
SharedPreferences.Editor spEditor = sp.edit();
|
||||
String newPipeDownloadStorage =
|
||||
Environment.getExternalStorageDirectory().getAbsolutePath() + "/NewPipe";
|
||||
spEditor.putString(context.getString(R.string.downloadPathPreference)
|
||||
spEditor.putString(context.getString(R.string.download_path_key)
|
||||
, newPipeDownloadStorage);
|
||||
spEditor.apply();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -33,7 +34,7 @@ class VideoInfoItemViewCreator {
|
|||
this.inflater = inflater;
|
||||
}
|
||||
|
||||
public View getViewFromVideoInfoItem(View convertView, ViewGroup parent, VideoPreviewInfo info) {
|
||||
public View getViewFromVideoInfoItem(View convertView, ViewGroup parent, VideoPreviewInfo info, Context context) {
|
||||
ViewHolder holder;
|
||||
if(convertView == null) {
|
||||
convertView = inflater.inflate(R.layout.video_item, parent, false);
|
||||
|
@ -59,8 +60,7 @@ class VideoInfoItemViewCreator {
|
|||
if(!info.upload_date.isEmpty()) {
|
||||
holder.itemUploadDateView.setText(info.upload_date);
|
||||
} else {
|
||||
//tweak if necessary: This is a hack to prevent having white space in the layout :P
|
||||
holder.itemUploadDateView.setText(String.format("%d", info.view_count));
|
||||
holder.itemUploadDateView.setText(Localization.localizeViewCount(info.view_count, context));
|
||||
}
|
||||
|
||||
return convertView;
|
||||
|
|
|
@ -80,7 +80,7 @@ public class VideoItemDetailActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
if(currentStreamingService == -1) {
|
||||
Toast.makeText(this, R.string.urlNotSupportedText, Toast.LENGTH_LONG)
|
||||
Toast.makeText(this, R.string.url_not_supported_toast, Toast.LENGTH_LONG)
|
||||
.show();
|
||||
}
|
||||
//arguments.putString(VideoItemDetailFragment.VIDEO_URL,
|
||||
|
@ -89,7 +89,7 @@ public class VideoItemDetailActivity extends AppCompatActivity {
|
|||
|
||||
arguments.putBoolean(VideoItemDetailFragment.AUTO_PLAY,
|
||||
PreferenceManager.getDefaultSharedPreferences(this)
|
||||
.getBoolean(getString(R.string.autoPlayThroughIntent), false));
|
||||
.getBoolean(getString(R.string.autoplay_through_intent_key), false));
|
||||
} else {
|
||||
videoUrl = getIntent().getStringExtra(VideoItemDetailFragment.VIDEO_URL);
|
||||
currentStreamingService = getIntent().getIntExtra(VideoItemDetailFragment.STREAMING_SERVICE, -1);
|
||||
|
@ -113,6 +113,12 @@ public class VideoItemDetailActivity extends AppCompatActivity {
|
|||
.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
App.checkStartTor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
outState.putString(VideoItemDetailFragment.VIDEO_URL, videoUrl);
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package org.schabi.newpipe;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
@ -35,13 +33,7 @@ import android.view.MenuItem;
|
|||
import android.widget.Toast;
|
||||
|
||||
import java.net.URL;
|
||||
import java.text.DateFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.schabi.newpipe.services.VideoExtractor;
|
||||
|
@ -235,7 +227,7 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
switch (info.errorCode) {
|
||||
case VideoInfo.NO_ERROR: {
|
||||
View nextVideoView = videoItemViewCreator
|
||||
.getViewFromVideoInfoItem(null, nextVideoFrame, info.nextVideo);
|
||||
.getViewFromVideoInfoItem(null, nextVideoFrame, info.nextVideo, getContext());
|
||||
nextVideoFrame.addView(nextVideoView);
|
||||
|
||||
|
||||
|
@ -253,31 +245,20 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
uploaderView.setText(info.uploader);
|
||||
actionBarHandler.setChannelName(info.uploader);
|
||||
|
||||
Locale locale = getPreferredLocale();
|
||||
NumberFormat nf = NumberFormat.getInstance(locale);
|
||||
String localisedViewCount = nf.format(info.view_count);
|
||||
viewCountView.setText(
|
||||
String.format(
|
||||
res.getString(R.string.viewCountText), localisedViewCount));
|
||||
String localizedViewCount = Localization.localizeViewCount(info.view_count, getContext());
|
||||
viewCountView.setText(localizedViewCount);
|
||||
|
||||
thumbsUpView.setText(nf.format(info.like_count));
|
||||
thumbsDownView.setText(nf.format(info.dislike_count));
|
||||
String localizedLikeCount = Localization.localizeNumber(info.like_count, getContext());
|
||||
thumbsUpView.setText(localizedLikeCount);
|
||||
|
||||
@SuppressLint("SimpleDateFormat")
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date datum = null;
|
||||
try {
|
||||
datum = formatter.parse(info.upload_date);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String localizedDislikeCount = Localization.localizeNumber(info.dislike_count, getContext());
|
||||
thumbsDownView.setText(localizedDislikeCount);
|
||||
|
||||
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
|
||||
String localizedDate = Localization.localizeDate(info.upload_date, getContext());
|
||||
uploadDateView.setText(localizedDate);
|
||||
|
||||
String localisedDate = df.format(datum);
|
||||
uploadDateView.setText(
|
||||
String.format(res.getString(R.string.uploadDateText), localisedDate));
|
||||
descriptionView.setText(Html.fromHtml(info.description));
|
||||
|
||||
descriptionView.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
actionBarHandler.setServiceId(streamingServiceId);
|
||||
|
@ -306,7 +287,7 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
VideoItemDetailFragment.ARG_ITEM_ID, currentVideoInfo.nextVideo.id); */
|
||||
detailIntent.putExtra(
|
||||
VideoItemDetailFragment.VIDEO_URL, currentVideoInfo.nextVideo.webpage_url);
|
||||
//todo: make id dynamic the following line is crap
|
||||
|
||||
detailIntent.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, streamingServiceId);
|
||||
startActivity(detailIntent);
|
||||
}
|
||||
|
@ -315,13 +296,13 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
break;
|
||||
case VideoInfo.ERROR_BLOCKED_BY_GEMA:
|
||||
thumbnailView.setImageBitmap(BitmapFactory.decodeResource(
|
||||
getResources(), R.drawable.gruese_die_gema_unangebracht));
|
||||
getResources(), R.drawable.gruese_die_gema));
|
||||
backgroundButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(activity.getString(R.string.c3sUrl)));
|
||||
intent.setData(Uri.parse(activity.getString(R.string.c3s_url)));
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
@ -364,7 +345,7 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
super.onCreate(savedInstanceState);
|
||||
activity = (AppCompatActivity) getActivity();
|
||||
showNextVideoItem = PreferenceManager.getDefaultSharedPreferences(getActivity())
|
||||
.getBoolean(activity.getString(R.string.showNextVideo), true);
|
||||
.getBoolean(activity.getString(R.string.show_next_video_key), true);
|
||||
|
||||
}
|
||||
|
||||
|
@ -458,30 +439,6 @@ public class VideoItemDetailFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**Returns the java.util.Locale object which corresponds to the locale set in NewPipe's preferences.
|
||||
* Currently not affected by the device's locale.*/
|
||||
private Locale getPreferredLocale() {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String languageKey = getContext().getString(R.string.searchLanguage);
|
||||
//i know the following line defaults languageCode to "en", but java is picky about uninitialised values
|
||||
// Schabi: well lint tels me the value is redundant. I'll suppress it for now.
|
||||
@SuppressWarnings("UnusedAssignment")
|
||||
String languageCode = "en";
|
||||
languageCode = sp.getString(languageKey, "en");
|
||||
|
||||
if(languageCode.length() == 2) {
|
||||
return new Locale(languageCode);
|
||||
}
|
||||
else if(languageCode.contains("_")) {
|
||||
String country = languageCode
|
||||
.substring(languageCode.indexOf("_"), languageCode.length());
|
||||
return new Locale(languageCode.substring(0, 2), country);
|
||||
}
|
||||
return Locale.getDefault();
|
||||
}
|
||||
|
||||
private boolean checkIfLandscape() {
|
||||
DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.schabi.newpipe;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
|
@ -171,7 +172,13 @@ public class VideoItemListActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
SettingsActivity.initSettings(this);
|
||||
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
App.checkStartTor(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -66,6 +66,9 @@ public class VideoItemListFragment extends ListFragment {
|
|||
|
||||
private View footer;
|
||||
|
||||
// used to suppress request for loading a new page while another page is already loading.
|
||||
private boolean loadingNextPage = true;
|
||||
|
||||
private class ResultRunnable implements Runnable {
|
||||
private final SearchEngine.Result result;
|
||||
private final int requestId;
|
||||
|
@ -76,6 +79,9 @@ public class VideoItemListFragment extends ListFragment {
|
|||
@Override
|
||||
public void run() {
|
||||
updateListOnResult(result, requestId);
|
||||
if (android.os.Build.VERSION.SDK_INT >= 19) {
|
||||
getListView().removeFooterView(footer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,7 +90,7 @@ public class VideoItemListFragment extends ListFragment {
|
|||
private final String query;
|
||||
private final int page;
|
||||
final Handler h = new Handler();
|
||||
private volatile boolean run = true;
|
||||
private volatile boolean runs = true;
|
||||
private final int requestId;
|
||||
public SearchRunnable(SearchEngine engine, String query, int page, int requestId) {
|
||||
this.engine = engine;
|
||||
|
@ -93,17 +99,18 @@ public class VideoItemListFragment extends ListFragment {
|
|||
this.requestId = requestId;
|
||||
}
|
||||
void terminate() {
|
||||
run = false;
|
||||
runs = false;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String searchLanguageKey = getContext().getString(R.string.searchLanguage);
|
||||
String searchLanguage = sp.getString(searchLanguageKey, "en");
|
||||
String searchLanguageKey = getContext().getString(R.string.search_language_key);
|
||||
String searchLanguage = sp.getString(searchLanguageKey,
|
||||
getString(R.string.default_language_value));
|
||||
SearchEngine.Result result = engine.search(query, page, searchLanguage);
|
||||
Log.i(TAG, "language code passed:\""+searchLanguage+"\"");
|
||||
if(run) {
|
||||
if(runs) {
|
||||
h.post(new ResultRunnable(result, requestId));
|
||||
}
|
||||
} catch(Exception e) {
|
||||
|
@ -111,19 +118,11 @@ public class VideoItemListFragment extends ListFragment {
|
|||
h.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Toast.makeText(getActivity(), "Network Error", Toast.LENGTH_SHORT).show();
|
||||
Toast.makeText(getActivity(), getString(R.string.network_error),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (android.os.Build.VERSION.SDK_INT >= 19) {
|
||||
getListView().removeFooterView(footer);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -203,8 +202,9 @@ public class VideoItemListFragment extends ListFragment {
|
|||
}
|
||||
|
||||
private void nextPage() {
|
||||
loadingNextPage = true;
|
||||
lastPage++;
|
||||
Log.d(TAG, getString(R.string.searchPage) + Integer.toString(lastPage));
|
||||
Log.d(TAG, getString(R.string.search_page) + Integer.toString(lastPage));
|
||||
startSearch(query, lastPage);
|
||||
}
|
||||
|
||||
|
@ -228,7 +228,7 @@ public class VideoItemListFragment extends ListFragment {
|
|||
Toast.makeText(getActivity(), result.errorMessage, Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
if (!result.suggestion.isEmpty()) {
|
||||
Toast.makeText(getActivity(), getString(R.string.didYouMean) + result.suggestion + " ?",
|
||||
Toast.makeText(getActivity(), getString(R.string.did_you_mean) + result.suggestion + " ?",
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
updateList(result.resultList);
|
||||
|
@ -248,6 +248,8 @@ public class VideoItemListFragment extends ListFragment {
|
|||
Log.w(TAG, "Trying to set value while activity doesn't exist anymore.");
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
loadingNextPage = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -297,7 +299,8 @@ public class VideoItemListFragment extends ListFragment {
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
list = getListView();
|
||||
videoListAdapter = new VideoListAdapter(getActivity(), this);
|
||||
footer = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.paginate_footer, null, false);
|
||||
footer = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE))
|
||||
.inflate(R.layout.paginate_footer, null, false);
|
||||
|
||||
|
||||
setListAdapter(videoListAdapter);
|
||||
|
@ -318,13 +321,15 @@ public class VideoItemListFragment extends ListFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
public void onScroll(AbsListView view, int firstVisibleItem,
|
||||
int visibleItemCount, int totalItemCount) {
|
||||
if (mode != PRESENT_VIDEOS_MODE
|
||||
&& list.getChildAt(0) != null
|
||||
&& list.getLastVisiblePosition() == list.getAdapter().getCount() - 1
|
||||
&& list.getChildAt(list.getChildCount() - 1).getBottom() <= list.getHeight()) {
|
||||
long time = System.currentTimeMillis();
|
||||
if ((time - lastScrollDate) > 200) {
|
||||
if ((time - lastScrollDate) > 200
|
||||
&& !loadingNextPage) {
|
||||
lastScrollDate = time;
|
||||
getListView().addFooterView(footer);
|
||||
nextPage();
|
||||
|
|
|
@ -96,10 +96,10 @@ class VideoListAdapter extends BaseAdapter {
|
|||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
convertView = viewCreator.getViewFromVideoInfoItem(convertView, parent, videoList.get(position));
|
||||
convertView = viewCreator.getViewFromVideoInfoItem(convertView, parent, videoList.get(position), context);
|
||||
|
||||
if(listView.isItemChecked(position)) {
|
||||
convertView.setBackgroundColor(ContextCompat.getColor(context,R.color.primaryColorYoutube));
|
||||
convertView.setBackgroundColor(ContextCompat.getColor(context,R.color.light_youtube_primary_color));
|
||||
} else {
|
||||
convertView.setBackgroundColor(0);
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public abstract class VideoExtractor {
|
|||
return videoInfo;
|
||||
}
|
||||
|
||||
|
||||
//todo: add licence field
|
||||
public abstract int getErrorCode();
|
||||
public abstract String getErrorMessage();
|
||||
|
||||
|
|
After Width: | Height: | Size: 221 B |
After Width: | Height: | Size: 175 B |
After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 257 B |
After Width: | Height: | Size: 347 B |
After Width: | Height: | Size: 436 B |
|
@ -11,7 +11,7 @@
|
|||
android:id="@+id/videoitem_detail">
|
||||
|
||||
<ImageView android:id="@+id/detailThumbnailView"
|
||||
android:contentDescription="@string/detailThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_thumbnail_view_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="centerCrop"
|
||||
|
@ -51,7 +51,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
app:backgroundTint="@color/primaryColorYoutube"
|
||||
app:backgroundTint="@color/light_youtube_primary_color"
|
||||
android:src="@drawable/ic_play_arrow_black"
|
||||
android:layout_margin="@dimen/video_item_detail_play_fab_margin"/>
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
||||
android:background="@color/background_gray">
|
||||
android:background="@color/light_background_color">
|
||||
|
||||
<TextView android:id="@+id/detailVideoTitleView"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -82,7 +82,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
||||
android:contentDescription="@string/detailUploaderThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_below="@id/detailVideoTitleView"
|
||||
|
@ -123,7 +123,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
||||
android:contentDescription="@string/detailThumbsDownImgViewDescription"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
|
@ -144,7 +144,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
||||
android:contentDescription="@string/detailThumbsUpImgViewDescription"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
|
@ -186,7 +186,7 @@
|
|||
android:layout_centerHorizontal="true"
|
||||
android:textSize="@dimen/video_item_detail_next_text_size"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="@string/nextVideoTitle"
|
||||
android:text="@string/next_video_title"
|
||||
android:textAllCaps="true" />
|
||||
|
||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
||||
|
@ -210,7 +210,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
||||
android:text="@string/showSimilarVideosButtonText"/>
|
||||
android:text="@string/similar_videos_btn_text"/>
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
android:id="@+id/videoitem_detail">
|
||||
|
||||
<ImageView android:id="@+id/detailThumbnailView"
|
||||
android:contentDescription="@string/detailThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_thumbnail_view_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="centerCrop"
|
||||
|
@ -44,7 +44,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:indeterminate="true"
|
||||
android:indeterminateTint="@color/primaryColorYoutube"
|
||||
android:indeterminateTint="@color/light_youtube_primary_color"
|
||||
android:indeterminateTintMode="src_in"/>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
|
@ -53,7 +53,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
app:backgroundTint="@color/primaryColorYoutube"
|
||||
app:backgroundTint="@color/light_youtube_primary_color"
|
||||
android:src="@drawable/ic_play_arrow_black"
|
||||
android:layout_margin="@dimen/video_item_detail_play_fab_margin"/>
|
||||
|
||||
|
@ -71,7 +71,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
||||
android:background="@color/background_gray">
|
||||
android:background="@color/light_background_color">
|
||||
|
||||
<TextView android:id="@+id/detailVideoTitleView"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -84,7 +84,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
||||
android:contentDescription="@string/detailUploaderThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_below="@id/detailVideoTitleView"
|
||||
|
@ -125,7 +125,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
||||
android:contentDescription="@string/detailThumbsDownImgViewDescription"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
|
@ -146,7 +146,7 @@
|
|||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
||||
android:contentDescription="@string/detailThumbsUpImgViewDescription"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
|
@ -188,7 +188,7 @@
|
|||
android:layout_centerHorizontal="true"
|
||||
android:textSize="@dimen/video_item_detail_next_text_size"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="@string/nextVideoTitle"
|
||||
android:text="@string/next_video_title"
|
||||
android:textAllCaps="true" />
|
||||
|
||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
||||
|
@ -212,7 +212,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
||||
android:text="@string/showSimilarVideosButtonText"/>
|
||||
android:text="@string/similar_videos_btn_text"/>
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
android:background="?attr/selectableItemBackground">
|
||||
|
||||
<ImageView android:id="@+id/detailThumbnailView"
|
||||
android:contentDescription="@string/detailThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_thumbnail_view_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="fitCenter"
|
||||
|
@ -51,7 +51,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
app:backgroundTint="@color/primaryColorYoutube"
|
||||
app:backgroundTint="@color/light_youtube_primary_color"
|
||||
android:src="@drawable/ic_play_arrow_black"
|
||||
android:layout_margin="@dimen/video_item_detail_play_fab_margin"/>
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
||||
android:background="@color/background_gray">
|
||||
android:background="@color/light_background_color">
|
||||
|
||||
<TextView android:id="@+id/detailVideoTitleView"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -81,7 +81,7 @@
|
|||
android:textAppearance="?android:attr/textAppearanceLarge"/>
|
||||
|
||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
||||
android:contentDescription="@string/detailUploaderThumbnailViewDescription"
|
||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
||||
android:layout_below="@id/detailVideoTitleView"
|
||||
|
@ -118,12 +118,13 @@
|
|||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
||||
android:contentDescription="@string/detailThumbsDownImgViewDescription"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
android:layout_toLeftOf="@id/detailThumbsDownCountView"
|
||||
android:layout_toStartOf="@id/detailThumbsDownCountView"
|
||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
||||
android:src="@drawable/thumbs_down" />
|
||||
|
||||
<TextView android:id="@+id/detailThumbsUpCountView"
|
||||
|
@ -136,7 +137,7 @@
|
|||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||
|
||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
||||
android:contentDescription="@string/detailThumbsUpImgViewDescription"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detailViewCountView"
|
||||
|
@ -175,7 +176,7 @@
|
|||
android:layout_centerHorizontal="true"
|
||||
android:textSize="@dimen/video_item_detail_next_text_size"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="@string/nextVideoTitle"
|
||||
android:text="@string/next_video_title"
|
||||
android:textAllCaps="true" />
|
||||
|
||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
||||
|
@ -199,7 +200,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
||||
android:text="@string/showSimilarVideosButtonText"/>
|
||||
android:text="@string/similar_videos_btn_text"/>
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Loading"
|
||||
android:text="@string/loading"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<ProgressBar
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/content"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:background="@color/background_notification_color"
|
||||
tools:targetApi="jelly_bean">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/backgroundCover"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:src="@drawable/dummy_thumbnail"
|
||||
android:scaleType="centerCrop"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backgroundSongName"
|
||||
style="@android:style/TextAppearance.StatusBar.EventContent.Title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:text="title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backgroundArtist"
|
||||
style="@android:style/TextAppearance.StatusBar.EventContent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:text="artist" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/backgroundPlayPause"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_margin="5dp"
|
||||
android:background="#00ffffff"
|
||||
android:clickable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_play_arrow_white_48dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/backgroundStop"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_margin="5dp"
|
||||
android:background="#00ffffff"
|
||||
android:clickable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_close_white_24dp" />
|
||||
|
||||
</LinearLayout>
|
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/content"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:background="@color/background_notification_color"
|
||||
tools:targetApi="jelly_bean" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/backgroundCover"
|
||||
android:layout_width="128dp"
|
||||
android:layout_height="128dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:src="@drawable/dummy_thumbnail"
|
||||
android:scaleType="centerCrop"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_above="@+id/backgroundButtons"
|
||||
android:layout_toRightOf="@+id/backgroundCover"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backgroundSongName"
|
||||
style="@android:style/TextAppearance.StatusBar.EventContent.Title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="40dp"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:text="title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/backgroundArtist"
|
||||
style="@android:style/TextAppearance.StatusBar.EventContent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:text="artist" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/backgroundStop"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_margin="5dp"
|
||||
android:background="#00ffffff"
|
||||
android:clickable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_close_white_24dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/backgroundButtons"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignBottom="@id/backgroundCover"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_toRightOf="@+id/backgroundCover"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/backgroundPlayPause"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:layout_weight="1"
|
||||
android:background="#00ffffff"
|
||||
android:clickable="true"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_play_arrow_white_48dp" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
|
@ -32,7 +32,7 @@
|
|||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<ImageView android:id="@+id/itemThumbnailView"
|
||||
android:contentDescription="@string/itemThumbnailViewDescription"
|
||||
android:contentDescription="@string/list_thumbnail_view_description"
|
||||
android:layout_width="@dimen/video_item_search_thumbnail_image_width"
|
||||
android:layout_height="@dimen/video_item_search_thumbnail_image_height"
|
||||
android:scaleType="centerCrop"
|
||||
|
@ -56,8 +56,8 @@
|
|||
android:paddingLeft="@dimen/video_item_search_duration_horizontal_padding"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textSize="@dimen/video_item_search_duration_text_size"
|
||||
android:background="@color/durationBackground"
|
||||
android:textColor="@color/durationText"/>
|
||||
android:background="@color/duration_dackground_color"
|
||||
android:textColor="@color/duration_text_color"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item android:id="@+id/menu_item_screen_rotation"
|
||||
android:title="@string/screenRotation"
|
||||
android:title="@string/screen_rotation"
|
||||
app:showAsAction="always"
|
||||
android:icon="@drawable/ic_screen_rotation_white"/>
|
||||
</menu>
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item android:id="@+id/menu_item_play_audio"
|
||||
android:title="@string/playAudio"
|
||||
android:title="@string/play_audio"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_headset_black" />
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
|||
android:icon="@drawable/ic_share_black"/>
|
||||
|
||||
<item android:id="@+id/action_play_with_kodi"
|
||||
android:title="@string/playWithKodiTitle"
|
||||
android:title="@string/play_with_kodi_title"
|
||||
app:showAsAction="ifRoom"
|
||||
android:icon="@drawable/ic_cast_black"/>
|
||||
|
||||
|
|
|
@ -1,53 +1,59 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s Aufrufe</string>
|
||||
<string name="uploadDateText">Hochgeladen am %1$s</string>
|
||||
<string name="noPlayerFound">Keinen Streamplayer gefunden. Vielleicht möchtest du einen installieren.</string>
|
||||
<string name="installStreamPlayer">Jetzt installieren</string>
|
||||
<string name="view_count_text">%1$s Aufrufe</string>
|
||||
<string name="upload_date_text">Hochgeladen am %1$s</string>
|
||||
<string name="no_player_found">Keinen Streamplayer gefunden. Vielleicht möchtest du einen installieren.</string>
|
||||
<string name="install">Jetzt installieren</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="open_in_browser">In Browser öffnen</string>
|
||||
<string name="share">Teilen</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="search">Suchen</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
<string name="didYouMean">Meintest du: </string>
|
||||
<string name="searchPage">Suchseite: </string>
|
||||
<string name="shareDialogTitle">Teilen mit:</string>
|
||||
<string name="chooseBrowser">Browser:</string>
|
||||
<string name="screenRotation">Rotation</string>
|
||||
<string name="title_activity_settings">Einstellungen</string>
|
||||
<string name="did_you_mean">Meintest du: </string>
|
||||
<string name="search_page">Suchseite: </string>
|
||||
<string name="share_dialog_title">Teilen mit:</string>
|
||||
<string name="choose_browser">Browser:</string>
|
||||
<string name="screen_rotation">Rotation</string>
|
||||
<string name="settings_activity_title">Einstellungen</string>
|
||||
<string name="useExternalPlayerTitle">Externen Player benutzen</string>
|
||||
<string name="downloadLocation">Downloadverzeichnis</string>
|
||||
<string name="downloadLocationSummary">Verzeichnis in dem heruntergeladene Videos gespeichert werden.</string>
|
||||
<string name="downloadLocationDialogTitle">Download Verzeichnis eingeben</string>
|
||||
<string name="autoPlayThroughIntentTitle">Automatisches Abspielen durch Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Startet ein Video automatisch wenn es von einer anderen App aufgerufen wurde.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Standard Auflösung</string>
|
||||
<string name="playWithKodiTitle">Mit Kodi abspielen</string>
|
||||
<string name="koreNotFound">Kore app wurde nicht gefunden. Kore wird benötigt, um Videos mit Kodi wieder zu geben.</string>
|
||||
<string name="download_path_title">Downloadverzeichnis</string>
|
||||
<string name="download_path_summary">Verzeichnis in dem heruntergeladene Videos gespeichert werden.</string>
|
||||
<string name="download_path_dialog_title">Download Verzeichnis eingeben</string>
|
||||
<string name="autoplay_through_intent_title">Automatisches Abspielen durch Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Startet ein Video automatisch wenn es von einer anderen App aufgerufen wurde.</string>
|
||||
<string name="default_resolution_title">Standard Auflösung</string>
|
||||
<string name="play_with_kodi_title">Mit Kodi abspielen</string>
|
||||
<string name="kore_not_found">Kore app wurde nicht gefunden. Kore wird benötigt, um Videos mit Kodi wieder zu geben.</string>
|
||||
<string name="installeKore">Kore installieren</string>
|
||||
<string name="showPlayWithKodiTitle">Zeige \"Mit Kodi abspielen\" Option</string>
|
||||
<string name="showPlayWithKodiSummary">Zeigt eine Option an, über die man Videos mit dem Kodi Mediacenter abspielen kann.</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Bevorzugtes Audio Format</string>
|
||||
<string name="webMAudioDescription">WebM - freies Format</string>
|
||||
<string name="m4aAudioDescription">m4a - bessere Qualität</string>
|
||||
<string name="downloadDialogTitle">Herunterladen</string>
|
||||
<string name="show_play_with_kodi_title">Zeige \"Mit Kodi abspielen\" Option</string>
|
||||
<string name="show_play_with_kodi_summary">Zeigt eine Option an, über die man Videos mit dem Kodi Mediacenter abspielen kann.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Bevorzugtes Audio Format</string>
|
||||
<string name="webm_description">WebM — freies Format</string>
|
||||
<string name="m4a_description">m4a — bessere Qualität</string>
|
||||
<string name="download_dialog_title">Herunterladen</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Video</item>
|
||||
<item>Audio</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">Nächstes Video</string>
|
||||
<string name="showNextAndSimilarTitle">Zeige nächstes und ähnliche Videos</string>
|
||||
<string name="urlNotSupportedText">URL wird nicht unterstützt.</string>
|
||||
<string name="showSimilarVideosButtonText">Ähnliche Videos</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">VIDEO & AUDIO</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFO</string>
|
||||
<string name="settingsCategoryEtcTitle">ETC</string>
|
||||
<string name="searchLanguageTitle">Bevorzugte Sprache</string>
|
||||
<string name="itemThumbnailViewDescription">Video-Vorschau-Bild</string>
|
||||
<string name="detailThumbnailViewDescription">Video-Vorschau-Bild</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Nutzerbild</string>
|
||||
<string name="detailThumbsDownImgViewDescription">gefällt nicht</string>
|
||||
<string name="detailThumbsUpImgViewDescription">gefällt</string>
|
||||
<string name="next_video_title">Nächstes Video</string>
|
||||
<string name="show_next_and_similar_title">Zeige nächstes und ähnliche Videos</string>
|
||||
<string name="url_not_supported_toast">URL wird nicht unterstützt.</string>
|
||||
<string name="similar_videos_btn_text">Ähnliche Videos</string>
|
||||
<string name="settings_category_video_audio_title">Video & Audio</string>
|
||||
<string name="search_language_title">Bevorzugte Sprache des Inhalts</string>
|
||||
<string name="list_thumbnail_view_description">Video-Vorschau-Bild</string>
|
||||
<string name="detail_thumbnail_view_description">Video-Vorschau-Bild</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Nutzerbild</string>
|
||||
<string name="detail_dislikes_img_view_description">Gefällt nicht</string>
|
||||
<string name="detail_likes_img_view_description">Gefällt</string>
|
||||
<string name="loading">Lade</string>
|
||||
<string name="use_external_video_player_title">Benutze externen Videoabspieler</string>
|
||||
<string name="use_external_audio_player_title">Benutze externen Audioabspieler</string>
|
||||
<string name="background_player_playing_toast">Spiele im Hintergrund ab</string>
|
||||
<string name="play_btn_text">Abspielen</string>
|
||||
|
||||
<string name="use_tor_title">Benutze TOR</string>
|
||||
<string name="use_tor_summary">Erzwinge das Herunterladen durch TOR für verbesserte Privatsphäre (Videostream noch nicht unterstützt)</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s visitas</string>
|
||||
<string name="uploadDateText">Subido el %1$s</string>
|
||||
<string name="noPlayerFound">No se ha encontrado ningún reproductor de vídeo. Quizás quieras instalar alguno.</string>
|
||||
<string name="installStreamPlayer">Instalarlo</string>
|
||||
<string name="view_count_text">%1$s visitas</string>
|
||||
<string name="upload_date_text">Subido el %1$s</string>
|
||||
<string name="no_player_found">No se ha encontrado ningún reproductor de vídeo. Quizás quieras instalar alguno.</string>
|
||||
<string name="install">Instalarlo</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="open_in_browser">Abrir en el navegador</string>
|
||||
<string name="share">Compartir</string>
|
||||
<string name="download">Descargar</string>
|
||||
<string name="search">Buscar</string>
|
||||
<string name="settings">Ajustes</string>
|
||||
<string name="didYouMean">"¿Querías decir?: "</string>
|
||||
<string name="searchPage">Buscar página: </string>
|
||||
<string name="shareDialogTitle">Compartir con:</string>
|
||||
<string name="chooseBrowser">Selecciona navegador:</string>
|
||||
<string name="screenRotation">rotación</string>
|
||||
<string name="title_activity_settings">Ajustes</string>
|
||||
<string name="did_you_mean">"¿Querías decir?: "</string>
|
||||
<string name="search_page">Buscar página: </string>
|
||||
<string name="share_dialog_title">Compartir con:</string>
|
||||
<string name="choose_browser">Selecciona navegador:</string>
|
||||
<string name="screen_rotation">rotación</string>
|
||||
<string name="settings_activity_title">Ajustes</string>
|
||||
<string name="useExternalPlayerTitle">Usar reproductor externo</string>
|
||||
<string name="downloadLocation">Descargar en…</string>
|
||||
<string name="downloadLocationSummary">Ruta donde guardar los vídeos descargados.</string>
|
||||
<string name="downloadLocationDialogTitle">Localización del directorio de descargas</string>
|
||||
<string name="autoPlayThroughIntentTitle">Reproducción automática</string>
|
||||
<string name="autoPlayThroughIntentSummary">Reproducir los vídeos automaticamente cuando se llama desde otra aplicación.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Resolución por defecto</string>
|
||||
<string name="playWithKodiTitle">Reproducir con Kodi</string>
|
||||
<string name="koreNotFound">Aplicación Kore no encontrada. Kore es necesario para reproducir vídeos con Kodi media center.</string>
|
||||
<string name="download_path_title">Descargar en…</string>
|
||||
<string name="download_path_summary">Ruta donde guardar los vídeos descargados.</string>
|
||||
<string name="download_path_dialog_title">Localización del directorio de descargas</string>
|
||||
<string name="autoplay_through_intent_title">Reproducción automática</string>
|
||||
<string name="autoplay_through_intent_summary">Reproducir los vídeos automaticamente cuando se llama desde otra aplicación.</string>
|
||||
<string name="default_resolution_title">Resolución por defecto</string>
|
||||
<string name="play_with_kodi_title">Reproducir con Kodi</string>
|
||||
<string name="kore_not_found">Aplicación Kore no encontrada. Kore es necesario para reproducir vídeos con Kodi media center.</string>
|
||||
<string name="installeKore">Instalar Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Mostrar la opción \"Reproducir con Kodi\"</string>
|
||||
<string name="showPlayWithKodiSummary">Muestra una opción para reproducir el vídeo con Kodi media center.</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Formato de audio por defecto</string>
|
||||
<string name="webMAudioDescription">WebM - formato libre</string>
|
||||
<string name="m4aAudioDescription">m4a - mejor calidad</string>
|
||||
<string name="downloadDialogTitle">Descargar</string>
|
||||
<string name="nextVideoTitle">Siguiente vídeo</string>
|
||||
<string name="urlNotSupportedText">URL no soportada.</string>
|
||||
<string name="showSimilarVideosButtonText">Vídeos similares</string>
|
||||
<string name="show_play_with_kodi_title">Mostrar la opción \"Reproducir con Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Muestra una opción para reproducir el vídeo con Kodi media center.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Formato de audio por defecto</string>
|
||||
<string name="webm_description">WebM — formato libre</string>
|
||||
<string name="m4a_description">m4a — mejor calidad</string>
|
||||
<string name="download_dialog_title">Descargar</string>
|
||||
<string name="next_video_title">Siguiente vídeo</string>
|
||||
<string name="url_not_supported_toast">URL no soportada.</string>
|
||||
<string name="similar_videos_btn_text">Vídeos similares</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="view_count_text">%1$s ikustaldi</string>
|
||||
<string name="upload_date_text">Argitaratze-data: %1$s</string>
|
||||
<string name="install">Instalatu</string>
|
||||
<string name="cancel">Utzi</string>
|
||||
<string name="open_in_browser">Nabigatzailean ireki</string>
|
||||
<string name="share">Partekatu</string>
|
||||
<string name="loading">Kargatzen</string>
|
||||
<string name="download">Deskargatu</string>
|
||||
<string name="search">Bilatu</string>
|
||||
<string name="settings">Ezarpenak</string>
|
||||
<string name="share_dialog_title">Partekatu honekin:</string>
|
||||
<string name="choose_browser">Nabigatzailea aukeratu:</string>
|
||||
<string name="screen_rotation">biratzea</string>
|
||||
<string name="settings_activity_title">Ezarpenak</string>
|
||||
<string name="download_path_title">Deskargatzeko kokapena</string>
|
||||
<string name="download_path_summary">Deskargatutako bideoak gordetzeko lekua.</string>
|
||||
<string name="download_path_dialog_title">Sar ezazu deskargatzeko lekua</string>
|
||||
<string name="default_resolution_title">Lehenetsitako bereizmena</string>
|
||||
<string name="play_with_kodi_title">Kodirekin erreproduzitu</string>
|
||||
<string name="kore_not_found">Kore aplikazioa ez da aurkitu. Kore beharrezkoa da Kodi multimedia zentroarekin bideoak erreproduzitzeko.</string>
|
||||
<string name="installeKore">Kore instalatu</string>
|
||||
<string name="show_play_with_kodi_title">\"Kodirekin erreproduzitu\" aukera erakutsi</string>
|
||||
<string name="show_play_with_kodi_summary">Kodi multimedia zentroarekin bideoa erreproduzitzeko aukera erakusten du.</string>
|
||||
<string name="play_audio">Audioa</string>
|
||||
<string name="default_audio_format_title">Audio formatu lehenetsia</string>
|
||||
<string name="webm_description">WebM — formatu askea</string>
|
||||
<string name="m4a_description">m4a — kalitate hobea</string>
|
||||
<string name="download_dialog_title">Deskargatu</string>
|
||||
<string name="next_video_title">Hurrengo bideoa</string>
|
||||
<string name="show_next_and_similar_title">Hurrengo bideoa eta antzekoak erakutsi</string>
|
||||
<string name="url_not_supported_toast">URLa ez da onartzen.</string>
|
||||
<string name="similar_videos_btn_text">Antzeko bideoak</string>
|
||||
<string name="search_language_title">Edukiaren hizkuntz lehenetsia</string>
|
||||
<string name="settings_category_video_audio_title">Bideoa eta Audioa</string>
|
||||
<string name="play_btn_text">Erreproduzitu</string>
|
||||
|
||||
<string name="list_thumbnail_view_description">Bideoaren aurreikuspen argazkitxoa</string>
|
||||
<string name="detail_thumbnail_view_description">Bideoaren aurreikuspen argazkitxoa</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Igotzailearen argazkitxoa</string>
|
||||
<string name="detail_dislikes_img_view_description">Ez dute gustoko</string>
|
||||
<string name="detail_likes_img_view_description">Gustoko dute</string>
|
||||
<string name="use_tor_title">Tor erabili</string>
|
||||
<string name="use_tor_summary">Trafikoa Tor bidez deskargatzea behartzen du pribatutasuna hobetzeko (jario bideoak ez daude oraindik onartuta)</string>
|
||||
<string name="background_player_name">NewPipe atzeko planoko erreproduzitzailea</string>
|
||||
<string name="no_player_found">Jario erreproduzitzailerik ez da aurkitu. Agian bat instalatu nahi dezakezu.</string>
|
||||
<string name="did_you_mean">"Hau esan nahi al zenuen: "</string>
|
||||
<string name="search_page">"Orrialdea bilatu: "</string>
|
||||
<string name="use_external_video_player_title">Kanpoko bideo erreproduzitzailea erabili</string>
|
||||
<string name="use_external_audio_player_title">Kanpoko audio erreproduzitzailea erabili</string>
|
||||
<string name="autoplay_through_intent_title">Intent bidez automatikoki erreproduzitu</string>
|
||||
<string name="autoplay_through_intent_summary">Bideoa automatikoki hasten du beste aplikazio batetik deitu denean.</string>
|
||||
<string name="background_player_playing_toast">Atzeko planoan erreproduzitzen</string>
|
||||
</resources>
|
|
@ -1,42 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s نماها</string>
|
||||
<string name="uploadDateText">بارگذاریشده در: %1$s</string>
|
||||
<string name="noPlayerFound">هیچ پخشکنندهی جریانی یافت نشد. ممکن است بخواهید یکی نصب کنید.</string>
|
||||
<string name="installStreamPlayer">نصب کنید</string>
|
||||
<string name="view_count_text">%1$s نماها</string>
|
||||
<string name="upload_date_text">بارگذاریشده در: %1$s</string>
|
||||
<string name="no_player_found">هیچ پخشکنندهی جریانی یافت نشد. ممکن است بخواهید یکی نصب کنید.</string>
|
||||
<string name="install">نصب کنید</string>
|
||||
<string name="cancel">انصراف</string>
|
||||
<string name="open_in_browser">بازکردن در مرورگر</string>
|
||||
<string name="share">همرسانی</string>
|
||||
<string name="download">بارگیری</string>
|
||||
<string name="search">جستجو</string>
|
||||
<string name="settings">تنظیمات</string>
|
||||
<string name="didYouMean">منظورتان این است: </string>
|
||||
<string name="searchPage">صفحهی جستجو: </string>
|
||||
<string name="shareDialogTitle">همرسانی با:</string>
|
||||
<string name="chooseBrowser">مرورگر را برگزینید:</string>
|
||||
<string name="screenRotation">چرخش</string>
|
||||
<string name="title_activity_settings">تنظیمات</string>
|
||||
<string name="did_you_mean">منظورتان این است: </string>
|
||||
<string name="search_page">صفحهی جستجو: </string>
|
||||
<string name="share_dialog_title">همرسانی با:</string>
|
||||
<string name="choose_browser">مرورگر را برگزینید:</string>
|
||||
<string name="screen_rotation">چرخش</string>
|
||||
<string name="settings_activity_title">تنظیمات</string>
|
||||
<string name="useExternalPlayerTitle">استفاده از پخشکنندهی خارجی</string>
|
||||
<string name="downloadLocation">محل بارگیری</string>
|
||||
<string name="downloadLocationSummary">مسیری که ویدئوهای دریافت شده در آن ذخیره میشوند.</string>
|
||||
<string name="downloadLocationDialogTitle">مسیر دریافت را وارد کنید</string>
|
||||
<string name="autoPlayThroughIntentTitle">پخش خودکار از Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">ویدئو هنگامی که از برنامهی دیگری فراخوانده شد خودکار پخش میشود.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">وضوح پیشفرض</string>
|
||||
<string name="playWithKodiTitle">پخش با Kodi</string>
|
||||
<string name="koreNotFound">برنامهی Kore نصب نیست. برای پخش کردن ویدئوها با مرکز رسانهی Kodi، به Kore نیاز دارید.</string>
|
||||
<string name="download_path_title">محل بارگیری</string>
|
||||
<string name="download_path_summary">مسیری که ویدئوهای دریافت شده در آن ذخیره میشوند.</string>
|
||||
<string name="download_path_dialog_title">مسیر دریافت را وارد کنید</string>
|
||||
<string name="autoplay_through_intent_title">پخش خودکار از Intent</string>
|
||||
<string name="autoplay_through_intent_summary">ویدئو هنگامی که از برنامهی دیگری فراخوانده شد خودکار پخش میشود.</string>
|
||||
<string name="default_resolution_title">وضوح پیشفرض</string>
|
||||
<string name="play_with_kodi_title">پخش با Kodi</string>
|
||||
<string name="kore_not_found">برنامهی Kore نصب نیست. برای پخش کردن ویدئوها با مرکز رسانهی Kodi، به Kore نیاز دارید.</string>
|
||||
<string name="installeKore">نصب Kore</string>
|
||||
<string name="showPlayWithKodiTitle">نمایش گزینهی «پخش با Kodi»</string>
|
||||
<string name="showPlayWithKodiSummary">گزینهای برای پخش کردن ویدئو با مرکز رسانهی Kodi نشان میدهد.</string>
|
||||
<string name="playAudio">صدا</string>
|
||||
<string name="defaultAudioFormatTitle">قالب پیشفرض صدا</string>
|
||||
<string name="webMAudioDescription">WebM - قالبی آزاد</string>
|
||||
<string name="m4aAudioDescription">m4a - کیفیت بهتر</string>
|
||||
<string name="downloadDialogTitle">دریافت</string>
|
||||
<string name="show_play_with_kodi_title">نمایش گزینهی «پخش با Kodi»</string>
|
||||
<string name="show_play_with_kodi_summary">گزینهای برای پخش کردن ویدئو با مرکز رسانهی Kodi نشان میدهد.</string>
|
||||
<string name="play_audio">صدا</string>
|
||||
<string name="default_audio_format_title">قالب پیشفرض صدا</string>
|
||||
<string name="webm_description">WebM — قالبی آزاد</string>
|
||||
<string name="m4a_description">m4a — کیفیت بهتر</string>
|
||||
<string name="download_dialog_title">دریافت</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>ویدئو</item>
|
||||
<item>صدا</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">ویدئوی بعدی</string>
|
||||
<string name="urlNotSupportedText">پیوند پشتیبانی نمیشود.</string>
|
||||
<string name="next_video_title">ویدئوی بعدی</string>
|
||||
<string name="url_not_supported_toast">پیوند پشتیبانی نمیشود.</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,52 +1,58 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="autoPlayThroughIntentSummary">Démarrer automatiquement la vidéo si elle a été appelée depuis une autre application.</string>
|
||||
<string name="autoplay_through_intent_summary">Démarrer automatiquement la vidéo si elle a été appelée depuis une autre application.</string>
|
||||
<string name="cancel">Annuler</string>
|
||||
<string name="chooseBrowser">Choisir un navigateur :</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Résolution par défaut</string>
|
||||
<string name="didYouMean">"S\'agirait-il de : "</string>
|
||||
<string name="choose_browser">Choisir un navigateur :</string>
|
||||
<string name="default_resolution_title">Résolution par défaut</string>
|
||||
<string name="did_you_mean">"S\'agirait-il de : "</string>
|
||||
<string name="download">Télécharger</string>
|
||||
<string name="downloadLocation">Emplacement des téléchargements</string>
|
||||
<string name="downloadLocationDialogTitle">Entrez l\'emplacement du téléchargement</string>
|
||||
<string name="downloadLocationSummary">Emplacement des vidéos téléchargées.</string>
|
||||
<string name="installStreamPlayer">Installer</string>
|
||||
<string name="download_path_title">Emplacement des téléchargements</string>
|
||||
<string name="download_path_dialog_title">Entrez l\'emplacement du téléchargement</string>
|
||||
<string name="download_path_summary">Emplacement des vidéos téléchargées.</string>
|
||||
<string name="install">Installer</string>
|
||||
<string name="installeKore">Installer Kore</string>
|
||||
<string name="koreNotFound">L\'application Kore est introuvable. Kore est nécessaire afin de lire des vidéos dans Kodi media center.</string>
|
||||
<string name="noPlayerFound">Aucun lecteur de streaming détecté. Vous devriez en installer un.</string>
|
||||
<string name="kore_not_found">L\'application Kore est introuvable. Kore est nécessaire afin de lire des vidéos dans Kodi media center.</string>
|
||||
<string name="no_player_found">Aucun lecteur de streaming détecté. Vous devriez en installer un.</string>
|
||||
<string name="open_in_browser">Ouvrir dans le navigateur</string>
|
||||
<string name="autoPlayThroughIntentTitle">Lecture automatique via Intent</string>
|
||||
<string name="playWithKodiTitle">Lire avec Kodi</string>
|
||||
<string name="screenRotation">rotation</string>
|
||||
<string name="autoplay_through_intent_title">Lecture automatique via Intent</string>
|
||||
<string name="play_with_kodi_title">Lire avec Kodi</string>
|
||||
<string name="screen_rotation">rotation</string>
|
||||
<string name="search">Rechercher</string>
|
||||
<string name="searchPage">"Rechercher dans la page : "</string>
|
||||
<string name="search_page">"Rechercher dans la page : "</string>
|
||||
<string name="settings">Paramètres</string>
|
||||
<string name="share">Partager</string>
|
||||
<string name="shareDialogTitle">Partager avec :</string>
|
||||
<string name="showPlayWithKodiSummary">Afficher une option pour lire la vidéo avec Kodi media center.</string>
|
||||
<string name="showPlayWithKodiTitle">Afficher l\'option \"Lire avec Kodi\"</string>
|
||||
<string name="title_activity_settings">Paramètres</string>
|
||||
<string name="uploadDateText">Mise en ligne le %1$s</string>
|
||||
<string name="share_dialog_title">Partager avec :</string>
|
||||
<string name="show_play_with_kodi_summary">Afficher une option pour lire la vidéo avec Kodi media center.</string>
|
||||
<string name="show_play_with_kodi_title">Afficher l\'option \"Lire avec Kodi\"</string>
|
||||
<string name="settings_activity_title">Paramètres</string>
|
||||
<string name="upload_date_text">Mise en ligne le %1$s</string>
|
||||
<string name="useExternalPlayerTitle">Utiliser un lecteur externe</string>
|
||||
<string name="viewCountText">%1$s vues</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Format audio par défaut</string>
|
||||
<string name="webMAudioDescription">WebM- format libre</string>
|
||||
<string name="m4aAudioDescription">m4a - meilleur qualité</string>
|
||||
<string name="downloadDialogTitle">Télécharger</string>
|
||||
<string name="nextVideoTitle">Vidéo suivante</string>
|
||||
<string name="showNextAndSimilarTitle">Afficher les vidéos suivantes et similaires</string>
|
||||
<string name="urlNotSupportedText">URL non supportée.</string>
|
||||
<string name="showSimilarVideosButtonText">Vidéos similaires</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">VIDÉO & AUDIO</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFORMATION</string>
|
||||
<string name="settingsCategoryEtcTitle">DIVERS</string>
|
||||
<string name="view_count_text">%1$s vues</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Format audio par défaut</string>
|
||||
<string name="webm_description">WebM — format libre</string>
|
||||
<string name="m4a_description">m4a — meilleur qualité</string>
|
||||
<string name="download_dialog_title">Télécharger</string>
|
||||
<string name="next_video_title">Vidéo suivante</string>
|
||||
<string name="show_next_and_similar_title">Afficher les vidéos suivantes et similaires</string>
|
||||
<string name="url_not_supported_toast">URL non supportée.</string>
|
||||
<string name="similar_videos_btn_text">Vidéos similaires</string>
|
||||
<string name="settings_category_video_audio_title">Vidéo & Audio</string>
|
||||
<string name="settings_category_other_title">Divers</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">Miniature d\'aperçu vidéo</string>
|
||||
<string name="detailThumbnailViewDescription">Miniature d\'aperçu vidéo</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Je n\'aime pas</string>
|
||||
<string name="detailThumbsUpImgViewDescription">J\'aime</string>
|
||||
<string name="searchLanguageTitle">Langue du contenu</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Avatar de l\'utilisateur</string>
|
||||
<string name="useExternalVideoPlayerTitle">Utiliser un lecteur vidéo externe</string>
|
||||
<string name="useExternalAudioPlayerTitle">Utiliser un lecteur audio externe</string>
|
||||
<string name="list_thumbnail_view_description">Miniature d\'aperçu vidéo</string>
|
||||
<string name="detail_thumbnail_view_description">Miniature d\'aperçu vidéo</string>
|
||||
<string name="detail_dislikes_img_view_description">Je n\'aime pas</string>
|
||||
<string name="detail_likes_img_view_description">J\'aime</string>
|
||||
<string name="search_language_title">Langue du contenu</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Avatar de l\'utilisateur</string>
|
||||
<string name="use_external_video_player_title">Utiliser un lecteur vidéo externe</string>
|
||||
<string name="use_external_audio_player_title">Utiliser un lecteur audio externe</string>
|
||||
<string name="background_player_playing_toast">Lecture en arrière-plan</string>
|
||||
<string name="background_player_name">Lecteur en arrière-plan NewPipe</string>
|
||||
<string name="loading">Chargement</string>
|
||||
<string name="play_btn_text">Lecture</string>
|
||||
|
||||
<string name="use_tor_title">Utiliser Tor</string>
|
||||
<string name="use_tor_summary">Forcer le trafic de téléchargement via Tor pour plus de confidentialité (vidéos streaming non supporté)</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="view_count_text">%1$s צפיות</string>
|
||||
<string name="upload_date_text">הועלה בתאריך %1$s</string>
|
||||
<string name="share">שתף</string>
|
||||
<string name="search">חפש</string>
|
||||
<string name="next_video_title">הבא</string>
|
||||
<string name="download">הורדה</string>
|
||||
<string name="settings">הגדרות</string>
|
||||
<string name="settings_activity_title">הגדרות</string>
|
||||
</resources>
|
|
@ -1,43 +1,43 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s megtekintés</string>
|
||||
<string name="uploadDateText">Feltöltve: %1$s</string>
|
||||
<string name="noPlayerFound">Nem található lejátszó. Telepítsen egyet!</string>
|
||||
<string name="installStreamPlayer">Telepítsen egyet</string>
|
||||
<string name="view_count_text">%1$s megtekintés</string>
|
||||
<string name="upload_date_text">Feltöltve: %1$s</string>
|
||||
<string name="no_player_found">Nem található lejátszó. Telepítsen egyet!</string>
|
||||
<string name="install">Telepítsen egyet</string>
|
||||
<string name="cancel">Mégse</string>
|
||||
<string name="open_in_browser">Megnyitás böngészőben</string>
|
||||
<string name="share">Megosztás</string>
|
||||
<string name="download">Letöltés</string>
|
||||
<string name="search">Keresés</string>
|
||||
<string name="settings">Beállítások</string>
|
||||
<string name="didYouMean">Erre gondolt: </string>
|
||||
<string name="searchPage">Keresési lap: </string>
|
||||
<string name="shareDialogTitle">Megosztás ezzel:</string>
|
||||
<string name="chooseBrowser">Válasszon böngészőt:</string>
|
||||
<string name="screenRotation">forgatás</string>
|
||||
<string name="title_activity_settings">Beállítások</string>
|
||||
<string name="did_you_mean">Erre gondolt: </string>
|
||||
<string name="search_page">Keresési lap: </string>
|
||||
<string name="share_dialog_title">Megosztás ezzel:</string>
|
||||
<string name="choose_browser">Válasszon böngészőt:</string>
|
||||
<string name="screen_rotation">forgatás</string>
|
||||
<string name="settings_activity_title">Beállítások</string>
|
||||
<string name="useExternalPlayerTitle">Külső lejátszó használata</string>
|
||||
<string name="downloadLocation">Letöltések helye</string>
|
||||
<string name="downloadLocationSummary">Útvonal a letöltött videók tárolásához</string>
|
||||
<string name="downloadLocationDialogTitle">Adja meg a letöltési útvonalat</string>
|
||||
<string name="autoPlayThroughIntentTitle">Automatikus lejátszás Intent-en keresztül</string>
|
||||
<string name="autoPlayThroughIntentSummary">Automatikusan elindítja a videót, ha az külső alkalmazásból volt hívva</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Alapértelmezett felbontás</string>
|
||||
<string name="playWithKodiTitle">Lejátszás Kodi-val</string>
|
||||
<string name="koreNotFound">A Kore alkalmazás nem található. A Kore szükséges a videók Kodi médiaközponttal való lejátszásához.</string>
|
||||
<string name="download_path_title">Letöltések helye</string>
|
||||
<string name="download_path_summary">Útvonal a letöltött videók tárolásához</string>
|
||||
<string name="download_path_dialog_title">Adja meg a letöltési útvonalat</string>
|
||||
<string name="autoplay_through_intent_title">Automatikus lejátszás Intent-en keresztül</string>
|
||||
<string name="autoplay_through_intent_summary">Automatikusan elindítja a videót, ha az külső alkalmazásból volt hívva</string>
|
||||
<string name="default_resolution_title">Alapértelmezett felbontás</string>
|
||||
<string name="play_with_kodi_title">Lejátszás Kodi-val</string>
|
||||
<string name="kore_not_found">A Kore alkalmazás nem található. A Kore szükséges a videók Kodi médiaközponttal való lejátszásához.</string>
|
||||
<string name="installeKore">Kore telepítése</string>
|
||||
<string name="showPlayWithKodiTitle">\"Lejátszás Kodi-val\" opció mutatása</string>
|
||||
<string name="showPlayWithKodiSummary">Mutat egy opciót a videók Kodi médiaközponttal való lejátszására</string>
|
||||
<string name="playAudio">Hang</string>
|
||||
<string name="defaultAudioFormatTitle">Alapértelmezett hang formátum</string>
|
||||
<string name="webMAudioDescription">WebM - szabad formátum</string>
|
||||
<string name="m4aAudioDescription">m4a - jobb minőség</string>
|
||||
<string name="downloadDialogTitle">Letöltés</string>
|
||||
<string name="show_play_with_kodi_title">\"Lejátszás Kodi-val\" opció mutatása</string>
|
||||
<string name="show_play_with_kodi_summary">Mutat egy opciót a videók Kodi médiaközponttal való lejátszására</string>
|
||||
<string name="play_audio">Hang</string>
|
||||
<string name="default_audio_format_title">Alapértelmezett hang formátum</string>
|
||||
<string name="webm_description">WebM — szabad formátum</string>
|
||||
<string name="m4a_description">m4a — jobb minőség</string>
|
||||
<string name="download_dialog_title">Letöltés</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Videó</item>
|
||||
<item>Hang</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">Következő videó</string>
|
||||
<string name="urlNotSupportedText">A webcím nem támogatott.</string>
|
||||
<string name="showSimilarVideosButtonText">Hasonló videók</string>
|
||||
<string name="next_video_title">Következő videó</string>
|
||||
<string name="url_not_supported_toast">A webcím nem támogatott.</string>
|
||||
<string name="similar_videos_btn_text">Hasonló videók</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
values-in
|
|
@ -0,0 +1,3 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
</resources>
|
|
@ -1,49 +1,49 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="viewCountText">%1$s visite</string>
|
||||
<string name="uploadDateText">Caricato in %1$s</string>
|
||||
<string name="noPlayerFound">Nessun riproduttore trovato. Dovresti installarne uno.</string>
|
||||
<string name="installStreamPlayer">Installa</string>
|
||||
<resources><string name="view_count_text">%1$s visite</string>
|
||||
<string name="upload_date_text">Caricato in %1$s</string>
|
||||
<string name="no_player_found">Nessun riproduttore trovato. Dovresti installarne uno.</string>
|
||||
<string name="install">Installa</string>
|
||||
<string name="cancel">Cancella</string>
|
||||
<string name="open_in_browser">Apri nel browser</string>
|
||||
<string name="share">Condividi</string>
|
||||
<string name="download">Scarica</string>
|
||||
<string name="search">Cerca</string>
|
||||
<string name="settings">Impostazioni</string>
|
||||
<string name="didYouMean">"Intendevi: "</string>
|
||||
<string name="searchPage">"Cerca pagina: "</string>
|
||||
<string name="shareDialogTitle">Condividi con:</string>
|
||||
<string name="chooseBrowser">Scegli browser:</string>
|
||||
<string name="screenRotation">rotazione</string>
|
||||
<string name="title_activity_settings">Impostazioni</string>
|
||||
<string name="did_you_mean">"Intendevi: "</string>
|
||||
<string name="search_page">"Cerca pagina: "</string>
|
||||
<string name="share_dialog_title">Condividi con:</string>
|
||||
<string name="choose_browser">Scegli browser:</string>
|
||||
<string name="screen_rotation">rotazione</string>
|
||||
<string name="settings_activity_title">Impostazioni</string>
|
||||
<string name="useExternalPlayerTitle">Usa un riproduttore video esterno</string>
|
||||
<string name="downloadLocation">Cartella di download</string>
|
||||
<string name="downloadLocationSummary">Percorso dove memorizzare i video scaricati.</string>
|
||||
<string name="downloadLocationDialogTitle">Inserisci il percorso di download</string>
|
||||
<string name="autoPlayThroughIntentTitle">Auto riproduzione attraverso internet</string>
|
||||
<string name="autoPlayThroughIntentSummary">Avvia automaticamente un video quando è stato chiamato da un\'altra applicazione.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Risoluzione predefinita</string>
|
||||
<string name="playWithKodiTitle">Riproduci con Kodi</string>
|
||||
<string name="koreNotFound">Kore app non trovata. Kore è richiesto per riprodurre video con Kodi media center.</string>
|
||||
<string name="download_path_title">Cartella di download</string>
|
||||
<string name="download_path_summary">Percorso dove memorizzare i video scaricati.</string>
|
||||
<string name="download_path_dialog_title">Inserisci il percorso di download</string>
|
||||
<string name="autoplay_through_intent_title">Auto riproduzione attraverso internet</string>
|
||||
<string name="autoplay_through_intent_summary">Avvia automaticamente un video quando è stato chiamato da un\'altra applicazione.</string>
|
||||
<string name="default_resolution_title">Risoluzione predefinita</string>
|
||||
<string name="play_with_kodi_title">Riproduci con Kodi</string>
|
||||
<string name="kore_not_found">Kore app non trovata. Kore è richiesto per riprodurre video con Kodi media center.</string>
|
||||
<string name="installeKore">Installa Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Mostra l\'opzione \"Riproduci con Kodi\"</string>
|
||||
<string name="showPlayWithKodiSummary">Mostra un opzione per riprodurre un video attraverso Kodi media center.</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Formato audio predefinito</string>
|
||||
<string name="webMAudioDescription">WedM - formato libero</string>
|
||||
<string name="m4aAudioDescription">m4a - qualità migliore</string>
|
||||
<string name="downloadDialogTitle">Scarica</string>
|
||||
<string name="nextVideoTitle">Prossimo video</string>
|
||||
<string name="showNextAndSimilarTitle">Mostra i video successivi e simili</string>
|
||||
<string name="urlNotSupportedText">URL non supportato.</string>
|
||||
<string name="showSimilarVideosButtonText">Video simili</string>
|
||||
<string name="searchLanguageTitle">Lingua preferita dei contenuti</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">VIDEO & AUDIO</string>
|
||||
<string name="show_play_with_kodi_title">Mostra l\'opzione \"Riproduci con Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Mostra un opzione per riprodurre un video attraverso Kodi media center.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Formato audio predefinito</string>
|
||||
<string name="webm_description">WedM — formato libero</string>
|
||||
<string name="m4a_description">m4a — qualità migliore</string>
|
||||
<string name="download_dialog_title">Scarica</string>
|
||||
<string name="next_video_title">Prossimo video</string>
|
||||
<string name="show_next_and_similar_title">Mostra i video successivi e simili</string>
|
||||
<string name="url_not_supported_toast">URL non supportato.</string>
|
||||
<string name="similar_videos_btn_text">Video simili</string>
|
||||
<string name="search_language_title">Lingua preferita dei contenuti</string>
|
||||
<string name="settings_category_video_audio_title">VIDEO & AUDIO</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFO</string>
|
||||
<string name="settingsCategoryEtcTitle">ETC</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">Anteprima video</string>
|
||||
<string name="detailThumbnailViewDescription">Anteprima video</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Miniatura caricata</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Non mi piace</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Mi piace</string>
|
||||
<string name="list_thumbnail_view_description">Anteprima video</string>
|
||||
<string name="detail_thumbnail_view_description">Anteprima video</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Miniatura caricata</string>
|
||||
<string name="detail_dislikes_img_view_description">Non mi piace</string>
|
||||
<string name="detail_likes_img_view_description">Mi piace</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
values-he
|
|
@ -1,53 +1,57 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="uploadDateText">"アップロード: "%1$s</string>
|
||||
<string name="noPlayerFound">StreamPlayer が見つかりませんでした。インストールが必要になるかもしれません。</string>
|
||||
<string name="installStreamPlayer">インストール</string>
|
||||
<string name="upload_date_text">"アップロード: "%1$s</string>
|
||||
<string name="no_player_found">StreamPlayer が見つかりませんでした。インストールが必要になるかもしれません。</string>
|
||||
<string name="install">インストール</string>
|
||||
<string name="cancel">取り消し</string>
|
||||
<string name="open_in_browser">ブラウザーで開く</string>
|
||||
<string name="share">共有</string>
|
||||
<string name="download">ダウンロード</string>
|
||||
<string name="search">検索</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="didYouMean">"この意味ですか: "</string>
|
||||
<string name="searchPage">"検索ページ: "</string>
|
||||
<string name="shareDialogTitle">…共有:</string>
|
||||
<string name="chooseBrowser">ブラウザーを選択:</string>
|
||||
<string name="screenRotation">回転</string>
|
||||
<string name="title_activity_settings">設定</string>
|
||||
<string name="did_you_mean">"この意味ですか: "</string>
|
||||
<string name="search_page">"検索ページ: "</string>
|
||||
<string name="share_dialog_title">…共有:</string>
|
||||
<string name="choose_browser">ブラウザーを選択:</string>
|
||||
<string name="screen_rotation">回転</string>
|
||||
<string name="settings_activity_title">設定</string>
|
||||
<string name="useExternalPlayerTitle">外部プレーヤーを使用する</string>
|
||||
<string name="downloadLocation">ダウンロードする場所</string>
|
||||
<string name="downloadLocationSummary">ダウンロードした動画を保存する場所のパス。</string>
|
||||
<string name="downloadLocationDialogTitle">ダウンロードのパスを入力してください。</string>
|
||||
<string name="autoPlayThroughIntentTitle">インテントで自動再生</string>
|
||||
<string name="autoPlayThroughIntentSummary">他のアプリケーションから呼び出されたとき、自動的に動画再生を開始します。</string>
|
||||
<string name="defaultResolutionPreferenceTitle">基本の解像度</string>
|
||||
<string name="playWithKodiTitle">Kodi で再生</string>
|
||||
<string name="koreNotFound">Kore アプリが見つかりません。 Kodi メディアセンターで動画を再生するには、 Kore が必要です。</string>
|
||||
<string name="download_path_title">ダウンロードする場所</string>
|
||||
<string name="download_path_summary">ダウンロードした動画を保存する場所のパス。</string>
|
||||
<string name="download_path_dialog_title">ダウンロードのパスを入力してください。</string>
|
||||
<string name="autoplay_through_intent_title">インテントで自動再生</string>
|
||||
<string name="autoplay_through_intent_summary">他のアプリケーションから呼び出されたとき、自動的に動画再生を開始します。</string>
|
||||
<string name="default_resolution_title">基本の解像度</string>
|
||||
<string name="play_with_kodi_title">Kodi で再生</string>
|
||||
<string name="kore_not_found">Kore アプリが見つかりません。 Kodi メディアセンターで動画を再生するには、 Kore が必要です。</string>
|
||||
<string name="installeKore">Kore をインストール</string>
|
||||
<string name="showPlayWithKodiTitle">\"Kodi で再生\" 設定を表示</string>
|
||||
<string name="showPlayWithKodiSummary">Kodi メディアセンター経由で動画を再生するための設定を表示します.</string>
|
||||
<string name="playAudio">オーディオ</string>
|
||||
<string name="defaultAudioFormatTitle">基本のオーディオフォーマット</string>
|
||||
<string name="webMAudioDescription">.WebM - フリーフォーマット</string>
|
||||
<string name="m4aAudioDescription">.m4a - より良い品質</string>
|
||||
<string name="downloadDialogTitle">ダウンロード</string>
|
||||
<string name="nextVideoTitle">次の動画</string>
|
||||
<string name="showNextAndSimilarTitle">次の同様の動画を表示します。</string>
|
||||
<string name="urlNotSupportedText">URL は使用できません。</string>
|
||||
<string name="showSimilarVideosButtonText">同様の動画</string>
|
||||
<string name="searchLanguageTitle">優先される言語</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">動画とオーディオ</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">情報</string>
|
||||
<string name="settingsCategoryEtcTitle">その他</string>
|
||||
<string name="viewCountText">%1$s ビュー</string>
|
||||
<string name="itemThumbnailViewDescription">ビデオ プレビュー サムネイル</string>
|
||||
<string name="detailThumbnailViewDescription">ビデオ プレビュー サムネイル</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">アップローダー サムネイル</string>
|
||||
<string name="detailThumbsDownImgViewDescription">残念だね</string>
|
||||
<string name="detailThumbsUpImgViewDescription">いいね</string>
|
||||
<string name="useExternalVideoPlayerTitle">外部ビデオ プレイヤーを使用する</string>
|
||||
<string name="useExternalAudioPlayerTitle">外部オーディオ プレイヤーを使用する</string>
|
||||
<string name="backgroundPlayerStartPlayingToast">バックグラウンドで再生しています</string>
|
||||
<string name="show_play_with_kodi_title">\"Kodi で再生\" 設定を表示</string>
|
||||
<string name="show_play_with_kodi_summary">Kodi メディアセンター経由で動画を再生するための設定を表示します.</string>
|
||||
<string name="play_audio">オーディオ</string>
|
||||
<string name="default_audio_format_title">基本のオーディオフォーマット</string>
|
||||
<string name="webm_description">WebM — フリーフォーマット</string>
|
||||
<string name="m4a_description">m4a — より良い品質</string>
|
||||
<string name="download_dialog_title">ダウンロード</string>
|
||||
<string name="next_video_title">次の動画</string>
|
||||
<string name="show_next_and_similar_title">次の同様の動画を表示します。</string>
|
||||
<string name="url_not_supported_toast">URL は使用できません。</string>
|
||||
<string name="similar_videos_btn_text">同様の動画</string>
|
||||
<string name="search_language_title">優先される言語</string>
|
||||
<string name="settings_category_video_audio_title">動画とオーディオ</string>
|
||||
<string name="view_count_text">%1$s ビュー</string>
|
||||
<string name="list_thumbnail_view_description">ビデオ プレビュー サムネイル</string>
|
||||
<string name="detail_thumbnail_view_description">ビデオ プレビュー サムネイル</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">アップローダー サムネイル</string>
|
||||
<string name="detail_dislikes_img_view_description">残念だね</string>
|
||||
<string name="detail_likes_img_view_description">いいね</string>
|
||||
<string name="use_external_video_player_title">外部ビデオ プレイヤーを使用する</string>
|
||||
<string name="use_external_audio_player_title">外部オーディオ プレイヤーを使用する</string>
|
||||
<string name="background_player_playing_toast">バックグラウンドで再生しています</string>
|
||||
|
||||
<string name="background_player_name">NewPipe バックグラウンド プレーヤー</string>
|
||||
<string name="loading">読み込み中</string>
|
||||
<string name="play_btn_text">再生</string>
|
||||
|
||||
<string name="use_tor_title">Tor を使用する</string>
|
||||
<string name="use_tor_summary">強制的に Tor を経由したプライバシーを高めたトラフィックでダウンロードします (ビデオのストリーミングはまだサポートされていません)</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,49 +1,49 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="viewCountText">시청 횟수 %1$s</string>
|
||||
<string name="uploadDateText">%1$s에 업로드됨</string>
|
||||
<string name="noPlayerFound">스트리밍 플레이어가 발견되지 않았습니다. 플레이어를 설치하시기 바랍니다.</string>
|
||||
<string name="installStreamPlayer">설치</string>
|
||||
<resources><string name="view_count_text">시청 횟수 %1$s</string>
|
||||
<string name="upload_date_text">%1$s에 업로드됨</string>
|
||||
<string name="no_player_found">스트리밍 플레이어가 발견되지 않았습니다. 플레이어를 설치하시기 바랍니다.</string>
|
||||
<string name="install">설치</string>
|
||||
<string name="cancel">취소</string>
|
||||
<string name="open_in_browser">브라우저에서 열기</string>
|
||||
<string name="share">공유</string>
|
||||
<string name="download">다운로드</string>
|
||||
<string name="search">검색</string>
|
||||
<string name="settings">설정</string>
|
||||
<string name="didYouMean">"혹시 이것을 검색하셨습니까? "</string>
|
||||
<string name="searchPage">"검색 페이지: "</string>
|
||||
<string name="shareDialogTitle">다음으로 공유:</string>
|
||||
<string name="chooseBrowser">브라우저 선택:</string>
|
||||
<string name="screenRotation">회전</string>
|
||||
<string name="title_activity_settings">설정</string>
|
||||
<string name="did_you_mean">"혹시 이것을 검색하셨습니까? "</string>
|
||||
<string name="search_page">"검색 페이지: "</string>
|
||||
<string name="share_dialog_title">다음으로 공유:</string>
|
||||
<string name="choose_browser">브라우저 선택:</string>
|
||||
<string name="screen_rotation">회전</string>
|
||||
<string name="settings_activity_title">설정</string>
|
||||
<string name="useExternalPlayerTitle">외부 플레이어 사용</string>
|
||||
<string name="downloadLocation">다운로드 위치</string>
|
||||
<string name="downloadLocationSummary">다운로드된 비디오가 저장될 경로를 선택하세요.</string>
|
||||
<string name="downloadLocationDialogTitle">다운로드 경로 입력</string>
|
||||
<string name="autoPlayThroughIntentTitle">인텐트로 경유할 경우 자동 재생</string>
|
||||
<string name="autoPlayThroughIntentSummary">다른 앱으로부터 호출되었을 경우에 비디오를 자동으로 재생합니다.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">기본 해상도</string>
|
||||
<string name="playWithKodiTitle">Kodi로 재생</string>
|
||||
<string name="koreNotFound">Kore 앱이 발견되지 않았습니다. Kodi media center로 비디오를 재생하려면 Kore가 필요합니다.</string>
|
||||
<string name="download_path_title">다운로드 위치</string>
|
||||
<string name="download_path_summary">다운로드된 비디오가 저장될 경로를 선택하세요.</string>
|
||||
<string name="download_path_dialog_title">다운로드 경로 입력</string>
|
||||
<string name="autoplay_through_intent_title">인텐트로 경유할 경우 자동 재생</string>
|
||||
<string name="autoplay_through_intent_summary">다른 앱으로부터 호출되었을 경우에 비디오를 자동으로 재생합니다.</string>
|
||||
<string name="default_resolution_title">기본 해상도</string>
|
||||
<string name="play_with_kodi_title">Kodi로 재생</string>
|
||||
<string name="kore_not_found">Kore 앱이 발견되지 않았습니다. Kodi media center로 비디오를 재생하려면 Kore가 필요합니다.</string>
|
||||
<string name="installeKore">Kore 설치</string>
|
||||
<string name="showPlayWithKodiTitle">\"Kodi로 재생\" 옵션 표시</string>
|
||||
<string name="showPlayWithKodiSummary">비디오를 Kodi media center를 사용해 재생하는 옵션을 표시합니다.</string>
|
||||
<string name="playAudio">오디오</string>
|
||||
<string name="defaultAudioFormatTitle">기본 오디오 포맷</string>
|
||||
<string name="webMAudioDescription">WebM - 무료 자유 포맷입니다</string>
|
||||
<string name="m4aAudioDescription">m4a - 보다 나은 품질</string>
|
||||
<string name="downloadDialogTitle">다운로드</string>
|
||||
<string name="nextVideoTitle">다음 비디오</string>
|
||||
<string name="showNextAndSimilarTitle">다음 및 유사한 비디오 표시</string>
|
||||
<string name="urlNotSupportedText">지원하지 않는 URL 입니다.</string>
|
||||
<string name="showSimilarVideosButtonText">유사한 비디오</string>
|
||||
<string name="searchLanguageTitle">선호하는 컨텐츠 언어</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">비디오 & 오디오</string>
|
||||
<string name="show_play_with_kodi_title">\"Kodi로 재생\" 옵션 표시</string>
|
||||
<string name="show_play_with_kodi_summary">비디오를 Kodi media center를 사용해 재생하는 옵션을 표시합니다.</string>
|
||||
<string name="play_audio">오디오</string>
|
||||
<string name="default_audio_format_title">기본 오디오 포맷</string>
|
||||
<string name="webm_description">WebM — 무료 자유 포맷입니다</string>
|
||||
<string name="m4a_description">m4a — 보다 나은 품질</string>
|
||||
<string name="download_dialog_title">다운로드</string>
|
||||
<string name="next_video_title">다음 비디오</string>
|
||||
<string name="show_next_and_similar_title">다음 및 유사한 비디오 표시</string>
|
||||
<string name="url_not_supported_toast">지원하지 않는 URL 입니다.</string>
|
||||
<string name="similar_videos_btn_text">유사한 비디오</string>
|
||||
<string name="search_language_title">선호하는 컨텐츠 언어</string>
|
||||
<string name="settings_category_video_audio_title">비디오 & 오디오</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">정보</string>
|
||||
<string name="settingsCategoryEtcTitle">기타</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">비디오 미리보기 썸네일</string>
|
||||
<string name="detailThumbnailViewDescription">비디오 미리보기 썸네일</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">업로더 썸네일</string>
|
||||
<string name="detailThumbsDownImgViewDescription">싫어요</string>
|
||||
<string name="detailThumbsUpImgViewDescription">좋아요</string>
|
||||
<string name="list_thumbnail_view_description">비디오 미리보기 썸네일</string>
|
||||
<string name="detail_thumbnail_view_description">비디오 미리보기 썸네일</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">업로더 썸네일</string>
|
||||
<string name="detail_dislikes_img_view_description">싫어요</string>
|
||||
<string name="detail_likes_img_view_description">좋아요</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,51 +1,49 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s keer bekeken</string>
|
||||
<string name="uploadDateText">Geüpload op %1$s</string>
|
||||
<string name="noPlayerFound">Geen speler met streaming ondersteuning gevonden. Misschien wil je er een installeren.</string>
|
||||
<string name="installStreamPlayer">Installeer speler</string>
|
||||
<string name="view_count_text">%1$s keer bekeken</string>
|
||||
<string name="upload_date_text">Geüpload op %1$s</string>
|
||||
<string name="no_player_found">Geen speler met streaming ondersteuning gevonden. Misschien wil je er een installeren.</string>
|
||||
<string name="install">Installeer speler</string>
|
||||
<string name="cancel">Annuleer</string>
|
||||
<string name="open_in_browser">Open in browser</string>
|
||||
<string name="share">Deel</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="search">Zoek</string>
|
||||
<string name="settings">Instellingen</string>
|
||||
<string name="didYouMean">Bedoelde je: </string>
|
||||
<string name="searchPage">Zoekpagina: </string>
|
||||
<string name="shareDialogTitle">Deel met:</string>
|
||||
<string name="chooseBrowser">Kies browser:</string>
|
||||
<string name="screenRotation">rotatie</string>
|
||||
<string name="title_activity_settings">Instellingen</string>
|
||||
<string name="did_you_mean">Bedoelde je: </string>
|
||||
<string name="search_page">Zoekpagina: </string>
|
||||
<string name="share_dialog_title">Deel met:</string>
|
||||
<string name="choose_browser">Kies browser:</string>
|
||||
<string name="screen_rotation">rotatie</string>
|
||||
<string name="settings_activity_title">Instellingen</string>
|
||||
<string name="useExternalPlayerTitle">Gebruik externe speler</string>
|
||||
<string name="downloadLocation">Downloadlocatie</string>
|
||||
<string name="downloadLocationSummary">Locatie om gedownloadde videos in op te slaan.</string>
|
||||
<string name="downloadLocationDialogTitle">Voer downloadlocatie is</string>
|
||||
<string name="autoPlayThroughIntentTitle">Speel automatisch via Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Speel een video automatisch af indien geopend vanuit een andere app.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Standaardresolutie</string>
|
||||
<string name="playWithKodiTitle">Speel af met Kodi</string>
|
||||
<string name="koreNotFound">Kore app niet gevonden. Kore is nodig om videos op Kodi af te spelen.</string>
|
||||
<string name="download_path_title">Downloadlocatie</string>
|
||||
<string name="download_path_summary">Locatie om gedownloadde videos in op te slaan.</string>
|
||||
<string name="download_path_dialog_title">Voer downloadlocatie is</string>
|
||||
<string name="autoplay_through_intent_title">Speel automatisch via Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Speel een video automatisch af indien geopend vanuit een andere app.</string>
|
||||
<string name="default_resolution_title">Standaardresolutie</string>
|
||||
<string name="play_with_kodi_title">Speel af met Kodi</string>
|
||||
<string name="kore_not_found">Kore app niet gevonden. Kore is nodig om videos op Kodi af te spelen.</string>
|
||||
<string name="installeKore">Installeer Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Toon \"Speel af met Kodi\" optie</string>
|
||||
<string name="showPlayWithKodiSummary">Toont een optie om een video op een Kodi media center af te spelen.</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Standaard audio formaat</string>
|
||||
<string name="webMAudioDescription">Webam - open formaat</string>
|
||||
<string name="m4aAudioDescription">m4a - betere kwaliteit</string>
|
||||
<string name="downloadDialogTitle">Download</string>
|
||||
<string name="nextVideoTitle">Volgende video</string>
|
||||
<string name="urlNotSupportedText">URL wordt niet ondersteund.</string>
|
||||
<string name="showSimilarVideosButtonText">Vergelijkbare videos</string>
|
||||
<string name="showNextAndSimilarTitle">Laat volgende en vergelijkbare videos zien</string>
|
||||
<string name="searchLanguageTitle">Voorkeurs content taal</string>
|
||||
<string name="useExternalVideoPlayerTitle">Gebruik externe videospeler</string>
|
||||
<string name="useExternalAudioPlayerTitle">Gebruik externe audiospeler</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">VIDEO & GELUID</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFO</string>
|
||||
<string name="settingsCategoryEtcTitle">ETC.</string>
|
||||
<string name="show_play_with_kodi_title">Toon \"Speel af met Kodi\" optie</string>
|
||||
<string name="show_play_with_kodi_summary">Toont een optie om een video op een Kodi media center af te spelen.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Standaard audio formaat</string>
|
||||
<string name="webm_description">WebM — open formaat</string>
|
||||
<string name="m4a_description">m4a — betere kwaliteit</string>
|
||||
<string name="download_dialog_title">Download</string>
|
||||
<string name="next_video_title">Volgende video</string>
|
||||
<string name="url_not_supported_toast">URL wordt niet ondersteund.</string>
|
||||
<string name="similar_videos_btn_text">Vergelijkbare videos</string>
|
||||
<string name="show_next_and_similar_title">Laat volgende en vergelijkbare videos zien</string>
|
||||
<string name="search_language_title">Voorkeurs content taal</string>
|
||||
<string name="use_external_video_player_title">Gebruik externe videospeler</string>
|
||||
<string name="use_external_audio_player_title">Gebruik externe audiospeler</string>
|
||||
<string name="settings_category_video_audio_title">Video & Geluid</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">Videovoorbeeld thumbnail</string>
|
||||
<string name="detailThumbnailViewDescription">Videovoorbeeld thumbnail</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Uploader miniatuur</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Dislikes</string>
|
||||
<string name="list_thumbnail_view_description">Videovoorbeeld thumbnail</string>
|
||||
<string name="detail_thumbnail_view_description">Videovoorbeeld thumbnail</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Uploader miniatuur</string>
|
||||
<string name="detail_dislikes_img_view_description">Dislikes</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,51 +1,50 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="noPlayerFound">Nie znaleziono odtwarzacza strumieniowego.</string>
|
||||
<string name="installStreamPlayer">Zainstaluj</string>
|
||||
<string name="no_player_found">Nie znaleziono odtwarzacza strumieniowego.</string>
|
||||
<string name="install">Zainstaluj</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="open_in_browser">Otwórz w przeglądarce</string>
|
||||
<string name="share">Udostępnij</string>
|
||||
<string name="download">Pobierz</string>
|
||||
<string name="search">Szukaj</string>
|
||||
<string name="settings">Ustawienia</string>
|
||||
<string name="didYouMean">"Czy chodziło Ci o: "</string>
|
||||
<string name="shareDialogTitle">Udostępnij za pośrednictwem:</string>
|
||||
<string name="chooseBrowser">Wybierz przeglądarkę:</string>
|
||||
<string name="screenRotation">obrót</string>
|
||||
<string name="title_activity_settings">Ustawienia</string>
|
||||
<string name="did_you_mean">"Czy chodziło Ci o: "</string>
|
||||
<string name="share_dialog_title">Udostępnij za pośrednictwem:</string>
|
||||
<string name="choose_browser">Wybierz przeglądarkę:</string>
|
||||
<string name="screen_rotation">obrót</string>
|
||||
<string name="settings_activity_title">Ustawienia</string>
|
||||
<string name="useExternalPlayerTitle">Użyj zewnętrznego odtwarzacza</string>
|
||||
<string name="downloadLocation">Miejsce zapisu pobieranych plików</string>
|
||||
<string name="downloadLocationSummary">Ścieżka folderu do zapisywania pobieranego wideo.</string>
|
||||
<string name="downloadLocationDialogTitle">Wprowadź ścieżkę folderu dla pobieranych plików</string>
|
||||
<string name="autoPlayThroughIntentTitle">Automatycznie odtwarzaj przez Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Automatycznie odtwarza wideo po wywołaniu z innej aplikacji.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Domyślna rozdzielczość</string>
|
||||
<string name="playWithKodiTitle">Odtwarzaj za pośrednictwem Kodi</string>
|
||||
<string name="koreNotFound">Aplikacja Kore nie została znaleziona. Wymagana jest do odtwarzania w Kodi.</string>
|
||||
<string name="download_path_title">Miejsce zapisu pobieranych plików</string>
|
||||
<string name="download_path_summary">Ścieżka folderu do zapisywania pobieranego wideo.</string>
|
||||
<string name="download_path_dialog_title">Wprowadź ścieżkę folderu dla pobieranych plików</string>
|
||||
<string name="autoplay_through_intent_title">Automatycznie odtwarzaj przez Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Automatycznie odtwarza wideo po wywołaniu z innej aplikacji.</string>
|
||||
<string name="default_resolution_title">Domyślna rozdzielczość</string>
|
||||
<string name="play_with_kodi_title">Odtwarzaj za pośrednictwem Kodi</string>
|
||||
<string name="kore_not_found">Aplikacja Kore nie została znaleziona. Wymagana jest do odtwarzania w Kodi.</string>
|
||||
<string name="installeKore">Zainstaluj Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Wyświetlaj opcję \"Odtwarzaj za pośrednictwem Kodi\"</string>
|
||||
<string name="showPlayWithKodiSummary">Wyświetla opcję do odtwarzania wideo przez aplikację Kodi.</string>
|
||||
<string name="playAudio">Dźwięk</string>
|
||||
<string name="defaultAudioFormatTitle">Domyślny format dźwięku</string>
|
||||
<string name="webMAudioDescription">WebM - otwarty format</string>
|
||||
<string name="m4aAudioDescription">m4a - lepsza jakość</string>
|
||||
<string name="downloadDialogTitle">Pobierz</string>
|
||||
<string name="nextVideoTitle">Następne wideo</string>
|
||||
<string name="showNextAndSimilarTitle">Wyświetl następne i podobne wideo</string>
|
||||
<string name="urlNotSupportedText">Niewspierany URL.</string>
|
||||
<string name="showSimilarVideosButtonText">Podobne wideo</string>
|
||||
<string name="searchLanguageTitle">Preferowany język zawartości</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">WIDEO & DŹWIĘK</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFO</string>
|
||||
<string name="settingsCategoryEtcTitle">INNE</string>
|
||||
<string name="searchPage">"Szukaj strony: "</string>
|
||||
<string name="viewCountText">%1$s wyświetleń</string>
|
||||
<string name="uploadDateText">Opublikowany %1$s</string>
|
||||
<string name="itemThumbnailViewDescription">Miniaturka podglądowa wideo</string>
|
||||
<string name="detailThumbnailViewDescription">Miniaturka podglądowa wideo</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Miniaturka wysyłającego</string>
|
||||
<string name="detailThumbsDownImgViewDescription">łapek w dół</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Polubień</string>
|
||||
<string name="useExternalVideoPlayerTitle">Użyj zewnętrznego odtwarzacza wideo</string>
|
||||
<string name="useExternalAudioPlayerTitle">Użyj zewnętrznego odtwarzacza audio</string>
|
||||
<string name="show_play_with_kodi_title">Wyświetlaj opcję \"Odtwarzaj za pośrednictwem Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Wyświetla opcję do odtwarzania wideo przez aplikację Kodi.</string>
|
||||
<string name="play_audio">Dźwięk</string>
|
||||
<string name="default_audio_format_title">Domyślny format dźwięku</string>
|
||||
<string name="webm_description">WebM — otwarty format</string>
|
||||
<string name="m4a_description">m4a — lepsza jakość</string>
|
||||
<string name="download_dialog_title">Pobierz</string>
|
||||
<string name="next_video_title">Następne wideo</string>
|
||||
<string name="show_next_and_similar_title">Wyświetl następne i podobne wideo</string>
|
||||
<string name="url_not_supported_toast">Niewspierany URL.</string>
|
||||
<string name="similar_videos_btn_text">Podobne wideo</string>
|
||||
<string name="search_language_title">Preferowany język zawartości</string>
|
||||
<string name="settings_category_video_audio_title">Wideo & Dźwięk</string>
|
||||
|
||||
<string name="search_page">"Szukaj strony: "</string>
|
||||
<string name="view_count_text">%1$s wyświetleń</string>
|
||||
<string name="upload_date_text">Opublikowany %1$s</string>
|
||||
<string name="list_thumbnail_view_description">Miniaturka podglądowa wideo</string>
|
||||
<string name="detail_thumbnail_view_description">Miniaturka podglądowa wideo</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Miniaturka wysyłającego</string>
|
||||
<string name="detail_dislikes_img_view_description">łapek w dół</string>
|
||||
<string name="detail_likes_img_view_description">Polubień</string>
|
||||
<string name="use_external_video_player_title">Użyj zewnętrznego odtwarzacza wideo</string>
|
||||
<string name="use_external_audio_player_title">Użyj zewnętrznego odtwarzacza audio</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,50 +1,50 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="viewCountText">%1$s visualizações</string>
|
||||
<string name="uploadDateText">Carregado em %1$s</string>
|
||||
<string name="noPlayerFound">Reprodutor não disponível. Deve instalar um reprodutor.</string>
|
||||
<string name="installStreamPlayer">Instalar</string>
|
||||
<resources><string name="view_count_text">%1$s visualizações</string>
|
||||
<string name="upload_date_text">Carregado em %1$s</string>
|
||||
<string name="no_player_found">Reprodutor não disponível. Deve instalar um reprodutor.</string>
|
||||
<string name="install">Instalar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="open_in_browser">Abrir no navegador</string>
|
||||
<string name="share">Partilhar</string>
|
||||
<string name="download">Descarregar</string>
|
||||
<string name="search">Pesquisar</string>
|
||||
<string name="settings">Definições</string>
|
||||
<string name="didYouMean">"Será que queria dizer: "</string>
|
||||
<string name="searchPage">"Página de pesquisa: "</string>
|
||||
<string name="shareDialogTitle">Partilhar com:</string>
|
||||
<string name="chooseBrowser">Escolher navegador:</string>
|
||||
<string name="screenRotation">rotação</string>
|
||||
<string name="title_activity_settings">Definições</string>
|
||||
<string name="useExternalVideoPlayerTitle">Utilizar reprodutor de vídeo externo</string>
|
||||
<string name="useExternalAudioPlayerTitle">Utilizar reprodutor de áudio externo</string>
|
||||
<string name="downloadLocation">Local para a descarga</string>
|
||||
<string name="downloadLocationSummary">Local para guardar os vídeos descarregados.</string>
|
||||
<string name="downloadLocationDialogTitle">Digite o caminho</string>
|
||||
<string name="autoPlayThroughIntentTitle">Reproduzir via Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Iniciar automaticamente o vídeo se for invocado por outra aplicação.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Resolução padrão</string>
|
||||
<string name="playWithKodiTitle">Reproduzir com Kodi</string>
|
||||
<string name="koreNotFound">Aplicação não encontrada. Necessita do Kore para reproduzir vídeos no Kodi.</string>
|
||||
<string name="did_you_mean">"Será que queria dizer: "</string>
|
||||
<string name="search_page">"Página de pesquisa: "</string>
|
||||
<string name="share_dialog_title">Partilhar com:</string>
|
||||
<string name="choose_browser">Escolher navegador:</string>
|
||||
<string name="screen_rotation">rotação</string>
|
||||
<string name="settings_activity_title">Definições</string>
|
||||
<string name="use_external_video_player_title">Utilizar reprodutor de vídeo externo</string>
|
||||
<string name="use_external_audio_player_title">Utilizar reprodutor de áudio externo</string>
|
||||
<string name="download_path_title">Local para a descarga</string>
|
||||
<string name="download_path_summary">Local para guardar os vídeos descarregados.</string>
|
||||
<string name="download_path_dialog_title">Digite o caminho</string>
|
||||
<string name="autoplay_through_intent_title">Reproduzir via Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Iniciar automaticamente o vídeo se for invocado por outra aplicação.</string>
|
||||
<string name="default_resolution_title">Resolução padrão</string>
|
||||
<string name="play_with_kodi_title">Reproduzir com Kodi</string>
|
||||
<string name="kore_not_found">Aplicação não encontrada. Necessita do Kore para reproduzir vídeos no Kodi.</string>
|
||||
<string name="installeKore">Instalar o Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Mostrar opção \"Reproduzir com Kodi\"</string>
|
||||
<string name="showPlayWithKodiSummary">Mostra uma opção para reproduzir o vídeo com o Kodi.</string>
|
||||
<string name="playAudio">Áudio</string>
|
||||
<string name="defaultAudioFormatTitle">Formato áudio padrão</string>
|
||||
<string name="webMAudioDescription">WebM - formato livre</string>
|
||||
<string name="m4aAudioDescription">m4a - melhor qualidade</string>
|
||||
<string name="downloadDialogTitle">Descarregar</string>
|
||||
<string name="nextVideoTitle">Vídeo seguinte</string>
|
||||
<string name="showNextAndSimilarTitle">Mostrar vídeos seguintes e similares</string>
|
||||
<string name="urlNotSupportedText">URL não suportado.</string>
|
||||
<string name="showSimilarVideosButtonText">Vídeos similares</string>
|
||||
<string name="searchLanguageTitle">Idioma preferencial do conteúdo</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">Vídeo e áudio</string>
|
||||
<string name="show_play_with_kodi_title">Mostrar opção \"Reproduzir com Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Mostra uma opção para reproduzir o vídeo com o Kodi.</string>
|
||||
<string name="play_audio">Áudio</string>
|
||||
<string name="default_audio_format_title">Formato áudio padrão</string>
|
||||
<string name="webm_description">WebM — formato livre</string>
|
||||
<string name="m4a_description">m4a — melhor qualidade</string>
|
||||
<string name="download_dialog_title">Descarregar</string>
|
||||
<string name="next_video_title">Vídeo seguinte</string>
|
||||
<string name="show_next_and_similar_title">Mostrar vídeos seguintes e similares</string>
|
||||
<string name="url_not_supported_toast">URL não suportado.</string>
|
||||
<string name="similar_videos_btn_text">Vídeos similares</string>
|
||||
<string name="search_language_title">Idioma preferencial do conteúdo</string>
|
||||
<string name="settings_category_video_audio_title">Vídeo e áudio</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">Informações</string>
|
||||
<string name="settingsCategoryEtcTitle">Outras</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">Miniatura de vídeos</string>
|
||||
<string name="detailThumbnailViewDescription">Miniatura de vídeos</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Carregador de miniaturas</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Não gosto</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Gosto</string>
|
||||
<string name="list_thumbnail_view_description">Miniatura de vídeos</string>
|
||||
<string name="detail_thumbnail_view_description">Miniatura de vídeos</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Carregador de miniaturas</string>
|
||||
<string name="detail_dislikes_img_view_description">Não gosto</string>
|
||||
<string name="detail_likes_img_view_description">Gosto</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,54 +1,57 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s просмотров</string>
|
||||
<string name="uploadDateText">Опубликовано %1$s</string>
|
||||
<string name="noPlayerFound">Ни одного потокового проигрывателя не было найдено. Установить?</string>
|
||||
<string name="installStreamPlayer">Установить</string>
|
||||
<string name="view_count_text">%1$s просмотров</string>
|
||||
<string name="upload_date_text">Опубликовано %1$s</string>
|
||||
<string name="no_player_found">Ни одного потокового проигрывателя не было найдено. Установить?</string>
|
||||
<string name="install">Установить</string>
|
||||
<string name="cancel">Отмена</string>
|
||||
<string name="open_in_browser">Открыть в браузере</string>
|
||||
<string name="share">Поделиться</string>
|
||||
<string name="download">Скачать</string>
|
||||
<string name="search">Найти</string>
|
||||
<string name="settings">Настройки</string>
|
||||
<string name="didYouMean">Возможно, вы имели в виду: </string>
|
||||
<string name="searchPage">Страница поиска: </string>
|
||||
<string name="shareDialogTitle">Поделиться с помощью:</string>
|
||||
<string name="chooseBrowser">Выбрать браузер:</string>
|
||||
<string name="screenRotation">поворот</string>
|
||||
<string name="title_activity_settings">Настройки</string>
|
||||
<string name="did_you_mean">Возможно, вы имели в виду: </string>
|
||||
<string name="search_page">Страница поиска: </string>
|
||||
<string name="share_dialog_title">Поделиться с помощью:</string>
|
||||
<string name="choose_browser">Выбрать браузер:</string>
|
||||
<string name="screen_rotation">поворот</string>
|
||||
<string name="settings_activity_title">Настройки</string>
|
||||
<string name="useExternalPlayerTitle">Использовать внешний проигрыватель</string>
|
||||
<string name="downloadLocation">Место для загрузок</string>
|
||||
<string name="downloadLocationSummary">Папка для хранения загруженных файлов.</string>
|
||||
<string name="downloadLocationDialogTitle">Введите путь к папке для загрузок</string>
|
||||
<string name="autoPlayThroughIntentTitle">Автопроигрывание через интернет</string>
|
||||
<string name="autoPlayThroughIntentSummary">Автоматически воспроизводить видео когда оно открыто через другое приложение.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Разрешение по-умолчанию</string>
|
||||
<string name="playWithKodiTitle">Воспроизвести с помощью Kodi</string>
|
||||
<string name="koreNotFound">Приложение Kore не наидено. Чтобы проигрывать видео через Kodi media center, нужен Kore.</string>
|
||||
<string name="download_path_title">Место для загрузок</string>
|
||||
<string name="download_path_summary">Папка для хранения загруженных файлов.</string>
|
||||
<string name="download_path_dialog_title">Введите путь к папке для загрузок</string>
|
||||
<string name="autoplay_through_intent_title">Автопроигрывание через интернет</string>
|
||||
<string name="autoplay_through_intent_summary">Автоматически воспроизводить видео когда оно открыто через другое приложение.</string>
|
||||
<string name="default_resolution_title">Разрешение по-умолчанию</string>
|
||||
<string name="play_with_kodi_title">Воспроизвести с помощью Kodi</string>
|
||||
<string name="kore_not_found">Приложение Kore не наидено. Чтобы проигрывать видео через Kodi media center, нужен Kore.</string>
|
||||
<string name="installeKore">Установить Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Показывать опцию \"Воспроизвести с помощью Kodi\"</string>
|
||||
<string name="showPlayWithKodiSummary">Показать опцию воспроизведения видео через Kodi media center.</string>
|
||||
<string name="playAudio">Аудио</string>
|
||||
<string name="defaultAudioFormatTitle">Формат аудио по-умолчанию</string>
|
||||
<string name="webMAudioDescription">WebM - свободный формат</string>
|
||||
<string name="m4aAudioDescription">m4a - лучшее качество</string>
|
||||
<string name="downloadDialogTitle">Скачать</string>
|
||||
<string name="show_play_with_kodi_title">Показывать опцию \"Воспроизвести с помощью Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Показать опцию воспроизведения видео через Kodi media center.</string>
|
||||
<string name="play_audio">Аудио</string>
|
||||
<string name="default_audio_format_title">Формат аудио по-умолчанию</string>
|
||||
<string name="webm_description">WebM — свободный формат</string>
|
||||
<string name="m4a_description">m4a — лучшее качество</string>
|
||||
<string name="download_dialog_title">Скачать</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Видео</item>
|
||||
<item>Аудио</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">Следующее видео</string>
|
||||
<string name="urlNotSupportedText">URL не поддерживается.</string>
|
||||
<string name="showSimilarVideosButtonText">Похожие видео</string>
|
||||
<string name="showNextAndSimilarTitle">Показывать следующее и предложенные видео</string>
|
||||
<string name="searchLanguageTitle">Предпочитаемый язык контента</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">ВИДЕО И АУДИО</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">ИНФОРМАЦИЯ</string>
|
||||
<string name="settingsCategoryEtcTitle">ПРОЧЕЕ</string>
|
||||
<string name="next_video_title">Следующее видео</string>
|
||||
<string name="url_not_supported_toast">URL не поддерживается.</string>
|
||||
<string name="similar_videos_btn_text">Похожие видео</string>
|
||||
<string name="show_next_and_similar_title">Показывать следующее и предложенные видео</string>
|
||||
<string name="search_language_title">Предпочитаемый язык контента</string>
|
||||
<string name="settings_category_video_audio_title">Видео и Аудио</string>
|
||||
<string name="settings_category_appearance_title">Внешний вид</string>
|
||||
<string name="settings_category_other_title">Другое</string>
|
||||
|
||||
<string name="itemThumbnailViewDescription">Миниатюра видео-превью</string>
|
||||
<string name="detailThumbnailViewDescription">Миниатюра видео-превью</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Миниатюра аватара пользователся</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Дислайки</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Лайки</string>
|
||||
<string name="list_thumbnail_view_description">Миниатюра видео-превью</string>
|
||||
<string name="detail_thumbnail_view_description">Миниатюра видео-превью</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Миниатюра аватара пользователся</string>
|
||||
<string name="detail_dislikes_img_view_description">Дислайки</string>
|
||||
<string name="detail_likes_img_view_description">Лайки</string>
|
||||
<string name="use_external_video_player_title">Использовать внешний проигрыватель для видео</string>
|
||||
<string name="use_external_audio_player_title">Использовать внешний проигрыватель для аудио</string>
|
||||
<string name="background_player_playing_toast">Проигрывание в фоновом режиме</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,50 +1,64 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="viewCountText">%1$s pogledov</string>
|
||||
<string name="uploadDateText">Poslano %1$s</string>
|
||||
<string name="noPlayerFound">Predvajalnika pretoka ni mogoče najti. Tak program lahko namestite ločeno.</string>
|
||||
<string name="installStreamPlayer">Namesti</string>
|
||||
<resources><string name="view_count_text">%1$s pogledov</string>
|
||||
<string name="upload_date_text">Poslano %1$s</string>
|
||||
<string name="no_player_found">Predvajalnika pretoka ni mogoče najti. Tak program lahko namestite ločeno.</string>
|
||||
<string name="install">Namesti</string>
|
||||
<string name="cancel">Prekliči</string>
|
||||
<string name="open_in_browser">Odpri v brskalniku</string>
|
||||
<string name="share">Omogoči souporabo</string>
|
||||
<string name="download">Prejmi</string>
|
||||
<string name="search">Poišči</string>
|
||||
<string name="settings">Nastavitve</string>
|
||||
<string name="didYouMean">"Ste mislili vpisati: "</string>
|
||||
<string name="searchPage">"Stran iskanja: "</string>
|
||||
<string name="shareDialogTitle">Omogoči souporabo z:</string>
|
||||
<string name="chooseBrowser">Izbor brskalnika:</string>
|
||||
<string name="screenRotation">usmerjenost</string>
|
||||
<string name="title_activity_settings">Nastavitve</string>
|
||||
<string name="useExternalVideoPlayerTitle">Uporabi zunanji predvajalnik videa</string>
|
||||
<string name="useExternalAudioPlayerTitle">Uporabi zunanji predvajalnik zvoka</string>
|
||||
<string name="downloadLocation">Mapa za prejem</string>
|
||||
<string name="downloadLocationSummary">Pot do mape za prejem datotek.</string>
|
||||
<string name="downloadLocationDialogTitle">Vpis poti za prejem</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Privzeta ločljivost</string>
|
||||
<string name="playWithKodiTitle">Predvajaj s Kodi</string>
|
||||
<string name="koreNotFound">Programa Kore ni mogoče najti. Program omogoča predvajanje video posnetkov prek predstavnega središča Kodi.</string>
|
||||
<string name="did_you_mean">"Ste mislili vpisati: "</string>
|
||||
<string name="search_page">"Stran iskanja: "</string>
|
||||
<string name="share_dialog_title">Omogoči souporabo z:</string>
|
||||
<string name="choose_browser">Izbor brskalnika:</string>
|
||||
<string name="screen_rotation">usmerjenost</string>
|
||||
<string name="settings_activity_title">Nastavitve</string>
|
||||
<string name="use_external_video_player_title">Uporabi zunanji predvajalnik videa</string>
|
||||
<string name="use_external_audio_player_title">Uporabi zunanji predvajalnik zvoka</string>
|
||||
<string name="download_path_title">Mapa za prejem</string>
|
||||
<string name="download_path_summary">Pot do mape za prejem datotek.</string>
|
||||
<string name="download_path_dialog_title">Vpis poti za prejem</string>
|
||||
<string name="default_resolution_title">Privzeta ločljivost</string>
|
||||
<string name="play_with_kodi_title">Predvajaj s Kodi</string>
|
||||
<string name="kore_not_found">Programa Kore ni mogoče najti. Program omogoča predvajanje video posnetkov prek predstavnega središča Kodi.</string>
|
||||
<string name="installeKore">Namesti program Kore</string>
|
||||
<string name="showPlayWithKodiTitle">Pokaži možnost \"Predvajaj s Kodi\"</string>
|
||||
<string name="defaultAudioFormatTitle">Privzet zapis zvoka</string>
|
||||
<string name="playAudio">Zvok</string>
|
||||
<string name="webMAudioDescription">WebM - prost zapis</string>
|
||||
<string name="m4aAudioDescription">m4a - višja kakovost posnetkov</string>
|
||||
<string name="downloadDialogTitle">Prejem</string>
|
||||
<string name="nextVideoTitle">Naslednji video</string>
|
||||
<string name="showNextAndSimilarTitle">Pokaži naslednji video in podobne posnetke</string>
|
||||
<string name="urlNotSupportedText">Zapis naslova URL ni podprt.</string>
|
||||
<string name="showSimilarVideosButtonText">Podobni posnetki</string>
|
||||
<string name="searchLanguageTitle">Prednostni jezik vsebine</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">Video in Zvok</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">Podrobnosti</string>
|
||||
<string name="itemThumbnailViewDescription">Sličica predogleda videa</string>
|
||||
<string name="detailThumbnailViewDescription">Sličica predogleda videa</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Sličica pošiljalnika</string>
|
||||
<string name="autoPlayThroughIntentTitle">Samodejno predvajaj prek vmesnika Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Začne samodejno predvajanje videa, ko je zagnan prek drugega programa.</string>
|
||||
<string name="showPlayWithKodiSummary">Pokaže možnost predvajanja videa preko predstavnega središča Kodi.</string>
|
||||
<string name="show_play_with_kodi_title">Pokaži možnost \"Predvajaj s Kodi\"</string>
|
||||
<string name="default_audio_format_title">Privzet zapis zvoka</string>
|
||||
<string name="play_audio">Zvok</string>
|
||||
<string name="webm_description">WebM — prost zapis</string>
|
||||
<string name="m4a_description">m4a — višja kakovost posnetkov</string>
|
||||
<string name="download_dialog_title">Prejem</string>
|
||||
<string name="next_video_title">Naslednji video</string>
|
||||
<string name="show_next_and_similar_title">Pokaži naslednji video in podobne posnetke</string>
|
||||
<string name="url_not_supported_toast">Zapis naslova URL ni podprt.</string>
|
||||
<string name="similar_videos_btn_text">Podobni posnetki</string>
|
||||
<string name="search_language_title">Prednostni jezik vsebine</string>
|
||||
<string name="settings_category_video_audio_title">Video in Zvok</string>
|
||||
<string name="list_thumbnail_view_description">Sličica predogleda videa</string>
|
||||
<string name="detail_thumbnail_view_description">Sličica predogleda videa</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Sličica pošiljalnika</string>
|
||||
<string name="autoplay_through_intent_title">Samodejno predvajaj prek vmesnika Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Začne samodejno predvajanje videa, ko je zagnan prek drugega programa.</string>
|
||||
<string name="show_play_with_kodi_summary">Pokaže možnost predvajanja videa preko predstavnega središča Kodi.</string>
|
||||
<string name="settingsCategoryEtcTitle">Drugo</string>
|
||||
|
||||
<string name="detailThumbsUpImgViewDescription">Všeč mi je</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Ni mi všeč</string>
|
||||
<string name="detail_likes_img_view_description">Všeč mi je</string>
|
||||
<string name="detail_dislikes_img_view_description">Ni mi všeč</string>
|
||||
<string name="background_player_name">Ozadnji predvajalnik NewPipe</string>
|
||||
<string name="loading">Nalaganje ...</string>
|
||||
<string name="background_player_playing_toast">Predvajanje v ozadju</string>
|
||||
<string name="play_btn_text">Predvajaj</string>
|
||||
|
||||
<string name="theme_title">Tema</string>
|
||||
<string name="dark_theme_title">Temna</string>
|
||||
<string name="light_theme_title">Svetla</string>
|
||||
|
||||
<string name="settings_category_appearance_title">Videz</string>
|
||||
<string name="settings_category_other_title">Drugo</string>
|
||||
<string name="network_error">Omrežna napaka</string>
|
||||
|
||||
<string name="use_tor_title">Uporabi Tor</string>
|
||||
<string name="use_tor_summary">Vsili prenos prejema preko sistema Tor za povečanje zasebnosti (pretakanje videa ni še podprto)</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,57 +1,69 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="viewCountText">%1$s приказа</string>
|
||||
<string name="uploadDateText">"Отпремљен "%1$s</string>
|
||||
<string name="noPlayerFound">Нема плејера токова. Можда желите да га инсталирате.</string>
|
||||
<string name="installStreamPlayer">Инсталирај</string>
|
||||
<string name="view_count_text">%1$s приказа</string>
|
||||
<string name="upload_date_text">"Отпремљен "%1$s</string>
|
||||
<string name="no_player_found">Нема плејера токова. Можда желите да га инсталирате.</string>
|
||||
<string name="install">Инсталирај</string>
|
||||
<string name="cancel">Одустани</string>
|
||||
<string name="open_in_browser">Отвори у прегледачу</string>
|
||||
<string name="share">Дели</string>
|
||||
<string name="download">Преузми</string>
|
||||
<string name="search">Тражи</string>
|
||||
<string name="settings">Поставке</string>
|
||||
<string name="didYouMean">Да ли сте мислили: </string>
|
||||
<string name="searchPage">Страница претраге: </string>
|
||||
<string name="shareDialogTitle">Подели помоћу:</string>
|
||||
<string name="chooseBrowser">Отвори помоћу:</string>
|
||||
<string name="screenRotation">ротација</string>
|
||||
<string name="title_activity_settings">Поставке</string>
|
||||
<string name="did_you_mean">Да ли сте мислили: </string>
|
||||
<string name="search_page">Страница претраге: </string>
|
||||
<string name="share_dialog_title">Подели помоћу:</string>
|
||||
<string name="choose_browser">Отвори помоћу:</string>
|
||||
<string name="screen_rotation">ротација</string>
|
||||
<string name="settings_activity_title">Поставке</string>
|
||||
<string name="useExternalPlayerTitle">Користи спољашњи плејер</string>
|
||||
<string name="downloadLocation">Одредиште преузимања</string>
|
||||
<string name="downloadLocationSummary">Путања за упис преузетих видеа.</string>
|
||||
<string name="downloadLocationDialogTitle">Унесите путању за преузимања</string>
|
||||
<string name="autoPlayThroughIntentTitle">Аутопуштање преко Интента</string>
|
||||
<string name="autoPlayThroughIntentSummary">Аутоматски почиње пушта видео по позиву из друге апликације.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Подразумевана резолуција</string>
|
||||
<string name="playWithKodiTitle">Пусти помоћу Кодија</string>
|
||||
<string name="koreNotFound">Апликација Кор није нађена. Кор (Kore) је потребан да бисте пуштали видее у Коди медија центру.</string>
|
||||
<string name="download_path_title">Одредиште преузимања</string>
|
||||
<string name="download_path_summary">Путања за упис преузетих видеа.</string>
|
||||
<string name="download_path_dialog_title">Унесите путању за преузимања</string>
|
||||
<string name="autoplay_through_intent_title">Аутопуштање преко Интента</string>
|
||||
<string name="autoplay_through_intent_summary">Аутоматски почиње пушта видео по позиву из друге апликације.</string>
|
||||
<string name="default_resolution_title">Подразумевана резолуција</string>
|
||||
<string name="play_with_kodi_title">Пусти помоћу Кодија</string>
|
||||
<string name="kore_not_found">Апликација Кор није нађена. Кор (Kore) је потребан да бисте пуштали видее у Коди медија центру.</string>
|
||||
<string name="installeKore">Инсталирај Кор</string>
|
||||
<string name="showPlayWithKodiTitle">Прикажи „Пусти помоћу Кодија“</string>
|
||||
<string name="showPlayWithKodiSummary">Приказ опције за пуштање видеа у Коди медија центру.</string>
|
||||
<string name="playAudio">Аудио</string>
|
||||
<string name="defaultAudioFormatTitle">Подразумевани формат звука</string>
|
||||
<string name="webMAudioDescription">WebM - слободни формат</string>
|
||||
<string name="m4aAudioDescription">m4a - бољи квалитет</string>
|
||||
<string name="downloadDialogTitle">Преузми</string>
|
||||
<string name="show_play_with_kodi_title">Прикажи „Пусти помоћу Кодија“</string>
|
||||
<string name="show_play_with_kodi_summary">Приказ опције за пуштање видеа у Коди медија центру.</string>
|
||||
<string name="play_audio">Аудио</string>
|
||||
<string name="default_audio_format_title">Подразумевани формат звука</string>
|
||||
<string name="webm_description">WebM — слободни формат</string>
|
||||
<string name="m4a_description">m4a — бољи квалитет</string>
|
||||
<string name="download_dialog_title">Преузми</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Видео</item>
|
||||
<item>Аудио</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">Следећи видео</string>
|
||||
<string name="urlNotSupportedText">УРЛ није подржан.</string>
|
||||
<string name="showNextAndSimilarTitle">Прикажи следећи и слични видео</string>
|
||||
<string name="showSimilarVideosButtonText">Слични видео</string>
|
||||
<string name="searchLanguageTitle">Пожељни језик садржаја</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">ВИДЕО И АУДИО</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">ПОДАЦИ</string>
|
||||
<string name="settingsCategoryEtcTitle">ОСТАЛО</string>
|
||||
<string name="itemThumbnailViewDescription">Сличица видео прегледа</string>
|
||||
<string name="detailThumbnailViewDescription">Сличица видео прегледа</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Сличица отпремаоца</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Несвиђања</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Свиђања</string>
|
||||
<string name="useExternalVideoPlayerTitle">Користи спољашњи видео плејер</string>
|
||||
<string name="useExternalAudioPlayerTitle">Користи спољашњи аудио плејер</string>
|
||||
<string name="backgroundPlayerStartPlayingToast">Пуштам у позадини</string>
|
||||
<string name="next_video_title">Следећи видео</string>
|
||||
<string name="url_not_supported_toast">УРЛ није подржан.</string>
|
||||
<string name="show_next_and_similar_title">Прикажи следећи и слични видео</string>
|
||||
<string name="similar_videos_btn_text">Слични видео</string>
|
||||
<string name="search_language_title">Пожељни језик садржаја</string>
|
||||
<string name="settings_category_video_audio_title">Видео и Аудио</string>
|
||||
<string name="settings_category_other_title">Остало</string>
|
||||
<string name="list_thumbnail_view_description">Сличица видео прегледа</string>
|
||||
<string name="detail_thumbnail_view_description">Сличица видео прегледа</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Сличица отпремаоца</string>
|
||||
<string name="detail_dislikes_img_view_description">Несвиђања</string>
|
||||
<string name="detail_likes_img_view_description">Свиђања</string>
|
||||
<string name="use_external_video_player_title">Користи спољашњи видео плејер</string>
|
||||
<string name="use_external_audio_player_title">Користи спољашњи аудио плејер</string>
|
||||
<string name="background_player_playing_toast">Пуштам у позадини</string>
|
||||
|
||||
<string name="background_player_name">Позадински плејер за Јутјуб цев</string>
|
||||
<string name="loading">Учитавам</string>
|
||||
<string name="play_btn_text">Пусти</string>
|
||||
|
||||
<string name="use_tor_title">Користи Тор</string>
|
||||
<string name="use_tor_summary">Принудно преусмерење саобраћаја кроз Тор за доданту приватност (токови још нису подржани)</string>
|
||||
<string name="theme_title">Тема</string>
|
||||
<string name="dark_theme_title">Тамна</string>
|
||||
<string name="light_theme_title">Светла</string>
|
||||
|
||||
<string name="settings_category_appearance_title">Изглед</string>
|
||||
<string name="network_error">Грешка мреже</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -3,18 +3,18 @@
|
|||
<style name="AppTheme" parent="Theme.AppCompat.Light">
|
||||
<item name="android:actionBarStyle">@style/NewPipeActionbarTheme</item>
|
||||
<item name="actionBarStyle">@style/NewPipeActionbarTheme</item>
|
||||
<item name="android:colorPrimary">@color/primaryColorYoutube</item>
|
||||
<item name="android:colorPrimaryDark">@color/primaryColorDarkYoutube</item>
|
||||
<item name="colorAccent">@color/accentColorYoutube</item>
|
||||
<item name="android:colorAccent">@color/accentColorYoutube</item>
|
||||
<item name="android:windowBackground">@color/background_gray</item>
|
||||
<item name="android:colorPrimary">@color/light_youtube_primary_color</item>
|
||||
<item name="android:colorPrimaryDark">@color/light_youtube_dark_color</item>
|
||||
<item name="colorAccent">@color/light_youtube_accent_color</item>
|
||||
<item name="android:colorAccent">@color/light_youtube_accent_color</item>
|
||||
<item name="android:windowBackground">@color/light_background_color</item>
|
||||
</style>
|
||||
|
||||
<style name="NewPipeActionbarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid" >
|
||||
<item name="android:displayOptions">showHome</item>
|
||||
<item name="displayOptions">showHome</item>
|
||||
<item name="android:background">@color/primaryColorYoutube</item>
|
||||
<item name="background">@color/primaryColorYoutube</item>
|
||||
<item name="android:background">@color/light_youtube_primary_color</item>
|
||||
<item name="background">@color/light_youtube_primary_color</item>
|
||||
</style>
|
||||
|
||||
<style name="VideoPlayerTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
|
@ -23,15 +23,15 @@
|
|||
<item name="windowActionBarOverlay">true</item>
|
||||
<item name="android:actionBarStyle">@style/VideoPlayerActionBarTheme</item>
|
||||
<item name="actionBarStyle">@style/VideoPlayerActionBarTheme</item>
|
||||
<item name="colorAccent">@color/primaryColorYoutube</item>
|
||||
<item name="android:colorAccent">@color/primaryColorYoutube</item>
|
||||
<item name="colorAccent">@color/light_youtube_primary_color</item>
|
||||
<item name="android:colorAccent">@color/light_youtube_primary_color</item>
|
||||
<item name="android:windowBackground">@android:color/black</item>
|
||||
</style>
|
||||
|
||||
<style name="VideoPlayerActionBarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse" >
|
||||
<item name="android:displayOptions">showHome</item>
|
||||
<item name="displayOptions">showHome</item>
|
||||
<item name="android:background">@color/dark_overlay</item>
|
||||
<item name="background">@color/dark_overlay</item>
|
||||
<item name="android:background">@color/video_overlay_color</item>
|
||||
<item name="background">@color/video_overlay_color</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,10 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="primaryColorYoutube">#cd322e</color>
|
||||
<color name="primaryColorDarkYoutube">#bc211d</color>
|
||||
<color name="accentColorYoutube">#000</color>
|
||||
<color name="durationBackground">#a000</color>
|
||||
<color name="durationText">#efff</color>
|
||||
<color name="dark_overlay">#6000</color>
|
||||
<color name="background_gray">#EEEEEE</color>
|
||||
<!-- Light Theme -->
|
||||
<color name="light_background_color">#EEEEEE</color>
|
||||
<color name="light_youtube_primary_color">#CD322E</color>
|
||||
<color name="light_youtube_dark_color">#BC211D</color>
|
||||
<color name="light_youtube_accent_color">#000000</color>
|
||||
|
||||
<!-- Dark Theme -->
|
||||
<color name="dark_background_color">#222222</color>
|
||||
<color name="dark_youtube_primary_color">#CD322E</color>
|
||||
<color name="dark_youtube_dark_color">#BC211D</color>
|
||||
<color name="dark_youtube_accent_color">#FFFFFF</color>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<color name="duration_dackground_color">#AA000000</color>
|
||||
<color name="duration_text_color">#EEFFFFFF</color>
|
||||
<color name="video_overlay_color">#66000000</color>
|
||||
<color name="background_notification_color">#323232</color>
|
||||
</resources>
|
|
@ -1,38 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Categories -->
|
||||
<string name="settingsCategoryVideoAudio">settings_categoery_video_audio</string>
|
||||
<string name="settingsCategoryVideoInfo">settings_category_video_info</string>
|
||||
<string name="settingsCategoryEtc">settings_category_etc</string>
|
||||
<string name="settings_category_video_audio">settings_category_video_audio</string>
|
||||
<string name="settings_category_appearance">settings_category_appearance</string>
|
||||
<string name="settings_category_other">settings_category_other</string>
|
||||
<!-- Key values -->
|
||||
<string name="downloadPathPreference">download_path_preference</string>
|
||||
<string name="useExternalVideoPlayer">use_external_video_player</string>
|
||||
<string name="useExternalAudioPlayer">use_external_audio_player</string>
|
||||
<string name="autoPlayThroughIntent">autoplay_through_intent</string>
|
||||
<string name="defaultResolutionPreference">default_resolution_preference</string>
|
||||
<string-array name="resolutionList">
|
||||
<string name="download_path_key">download_path</string>
|
||||
<string name="use_external_video_player_key">use_external_video_player</string>
|
||||
<string name="use_external_audio_player_key">use_external_audio_player</string>
|
||||
<string name="autoplay_through_intent_key">autoplay_through_intent</string>
|
||||
|
||||
<string name="default_resolution_key">default_resolution_preference</string>
|
||||
<string name="default_resolution_value">360p</string>
|
||||
<string-array name="resolution_list">
|
||||
<item>720p</item>
|
||||
<item>360p</item>
|
||||
<item>240p</item>
|
||||
<item>144p</item>
|
||||
</string-array>
|
||||
<string name="defaultResolutionListItem">360p</string>
|
||||
<string name="showPlayWithKodiPreference">show_play_with_kodi_preference</string>
|
||||
<string name="defaultAudioFormatPreference">default_audio_format</string>
|
||||
<string-array name="audioFormatDescriptionList">
|
||||
<item>@string/webMAudioDescription</item>
|
||||
<item>@string/m4aAudioDescription</item>
|
||||
|
||||
<string name="show_play_with_kodi_key">show_play_with_kodi</string>
|
||||
|
||||
<string name="theme_key">theme</string>
|
||||
<string name="default_theme_value">0</string>
|
||||
<string-array name="theme_description_list">
|
||||
<item>@string/dark_theme_title</item>
|
||||
<item>@string/light_theme_title</item>
|
||||
</string-array>
|
||||
<string-array name="audioFormatList">
|
||||
<string-array name="theme_list">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string name="default_audio_format_key">default_audio_format</string>
|
||||
<string name="default_audio_format_value">m4a</string>
|
||||
<string-array name="audio_format_description_list">
|
||||
<item>@string/webm_description</item>
|
||||
<item>@string/m4a_description</item>
|
||||
</string-array>
|
||||
<string-array name="audio_format_list">
|
||||
<item>webm</item>
|
||||
<item>m4a</item>
|
||||
</string-array>
|
||||
<string name="defaultAudioFormat">m4a</string>
|
||||
<string name="showNextVideo">show_next_video</string>
|
||||
<string name="searchLanguage">search_language</string>
|
||||
|
||||
<string name="show_next_video_key">show_next_video</string>
|
||||
<string name="default_language_value">en</string>
|
||||
<string name="search_language_key">search_language</string>
|
||||
<!-- TODO: scrape these programmatically, then store in a local cache -->
|
||||
<!-- alternatively, load these from some local android data store -->
|
||||
<string-array name='languageCodes'>
|
||||
<string-array name="language_codes">
|
||||
<item>af</item>
|
||||
<item>az</item>
|
||||
<item>id</item>
|
||||
|
@ -71,6 +87,7 @@
|
|||
<item>sl</item>
|
||||
<item>fi</item>
|
||||
<item>sv</item>
|
||||
<item>bo</item>
|
||||
<item>vi</item>
|
||||
<item>tr</item>
|
||||
<item>bg</item>
|
||||
|
@ -110,7 +127,7 @@
|
|||
<item>ja</item>
|
||||
<item>ko</item>
|
||||
</string-array>
|
||||
<string-array name='languageNames'>
|
||||
<string-array name="language_names">
|
||||
<item>Afrikaans</item>
|
||||
<item>Azərbaycan</item>
|
||||
<item>Bahasa Indonesia</item>
|
||||
|
@ -149,6 +166,7 @@
|
|||
<item>Slovenščina</item>
|
||||
<item>Suomi</item>
|
||||
<item>Svenska</item>
|
||||
<item>Tibetan བོད་སྐད།</item>
|
||||
<item>Tiếng Việt</item>
|
||||
<item>Türkçe</item>
|
||||
<item>Български</item>
|
||||
|
@ -188,4 +206,5 @@
|
|||
<item>日本語</item>
|
||||
<item>한국어</item>
|
||||
</string-array>
|
||||
<string name="use_tor_key">use_tor</string>
|
||||
</resources>
|
|
@ -1,63 +1,72 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">NewPipe</string>
|
||||
<string name="background_player_name">NewPipe Background Player</string>
|
||||
<string name="title_videoitem_detail" translatable="false">NewPipe</string>
|
||||
<string name="viewCountText">%1$s views</string>
|
||||
<string name="uploadDateText">Uploaded on %1$s</string>
|
||||
<string name="noPlayerFound">No stream player found. You may want to install one.</string>
|
||||
<string name="installStreamPlayer">Install</string>
|
||||
<string name="view_count_text">%1$s views</string>
|
||||
<string name="upload_date_text">Uploaded on %1$s</string>
|
||||
<string name="no_player_found">No stream player found. Install VLC?</string>
|
||||
<string name="install">Install</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="fdroidVLCurl" translatable="false">https://f-droid.org/repository/browse/?fdfilter=vlc&fdid=org.videolan.vlc</string>
|
||||
<string name="fdroid_vlc_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=vlc&fdid=org.videolan.vlc</string>
|
||||
<string name="open_in_browser">Open in browser</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="loading">Loading</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="search">Search</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="didYouMean">Did you mean: </string>
|
||||
<string name="searchPage">Search page: </string>
|
||||
<string name="shareDialogTitle">Share with:</string>
|
||||
<string name="chooseBrowser">Choose browser:</string>
|
||||
<string name="screenRotation">rotation</string>
|
||||
<string name="title_activity_settings">Settings</string>
|
||||
<string name="useExternalVideoPlayerTitle">Use external video player</string>
|
||||
<string name="useExternalAudioPlayerTitle">Use external audio player</string>
|
||||
<string name="downloadLocation">Download location</string>
|
||||
<string name="downloadLocationSummary">Path to store downloaded videos in.</string>
|
||||
<string name="downloadLocationDialogTitle">Enter download path</string>
|
||||
<string name="autoPlayThroughIntentTitle">Autoplay through Intent</string>
|
||||
<string name="autoPlayThroughIntentSummary">Automatically starts a video when it was called from another app.</string>
|
||||
<string name="defaultResolutionPreferenceTitle">Default Resolution</string>
|
||||
<string name="playWithKodiTitle">Play with Kodi</string>
|
||||
<string name="koreNotFound">Kore app not found. Kore is needed to play videos with Kodi media center.</string>
|
||||
<string name="installeKore">Install Kore</string>
|
||||
<string name="fdroidKoreUrl" translatable="false">https://f-droid.org/repository/browse/?fdfilter=Kore&fdid=org.xbmc.kore</string>
|
||||
<string name="showPlayWithKodiTitle">Show \"Play with Kodi\" option</string>
|
||||
<string name="showPlayWithKodiSummary">Displays an option to play a video via Kodi media center.</string>
|
||||
<string name="playAudio">Audio</string>
|
||||
<string name="defaultAudioFormatTitle">Default audio format</string>
|
||||
<string name="webMAudioDescription">WebM - free format</string>
|
||||
<string name="m4aAudioDescription">m4a - better quality</string>
|
||||
<string name="downloadDialogTitle">Download</string>
|
||||
<string-array name="downloadOptions">
|
||||
<string name="did_you_mean">Did you mean: </string>
|
||||
<string name="search_page">Search page: </string>
|
||||
<string name="share_dialog_title">Share with:</string>
|
||||
<string name="choose_browser">Choose browser:</string>
|
||||
<string name="screen_rotation">rotation</string>
|
||||
<string name="settings_activity_title">Settings</string>
|
||||
<string name="use_external_video_player_title">Use external video player</string>
|
||||
<string name="use_external_audio_player_title">Use external audio player</string>
|
||||
<string name="download_path_title">Download path</string>
|
||||
<string name="download_path_summary">Path to store downloaded videos in</string>
|
||||
<string name="download_path_dialog_title">Enter download path</string>
|
||||
<string name="autoplay_through_intent_title">Autoplay through Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Automatically play a video when it\'s called from another app</string>
|
||||
<string name="default_resolution_title">Default Resolution</string>
|
||||
<string name="play_with_kodi_title">Play with Kodi</string>
|
||||
<string name="kore_not_found">Kore app not found. Install Kore?</string>
|
||||
<string name="fdroid_kore_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=Kore&fdid=org.xbmc.kore</string>
|
||||
<string name="show_play_with_kodi_title">Show \"Play with Kodi\" option</string>
|
||||
<string name="show_play_with_kodi_summary">Display an option to play a video via Kodi media center</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Default audio format</string>
|
||||
<string name="webm_description">WebM — free format</string>
|
||||
<string name="m4a_description">m4a — better quality</string>
|
||||
<string name="theme_title">Theme</string>
|
||||
<string name="dark_theme_title">Dark</string>
|
||||
<string name="light_theme_title">Light</string>
|
||||
|
||||
<string name="download_dialog_title">Download</string>
|
||||
<string-array name="download_options">
|
||||
<item>Video</item>
|
||||
<item>Audio</item>
|
||||
</string-array>
|
||||
<string name="nextVideoTitle">Next video</string>
|
||||
<string name="showNextAndSimilarTitle">Show next and similar videos</string>
|
||||
<string name="urlNotSupportedText">URL not supported.</string>
|
||||
<string name="showSimilarVideosButtonText">Similar videos</string>
|
||||
<string name="searchLanguageTitle">Preferable content language</string>
|
||||
<string name="settingsCategoryVideoAudioTitle">VIDEO & AUDIO</string>
|
||||
<string name="settingsCategoryVideoInfoTittle">INFO</string>
|
||||
<string name="settingsCategoryEtcTitle">ETC</string>
|
||||
<string name="backgroundPlayerTickerText" translatable="false">%1$s - NewPipe</string>
|
||||
<string name="backgroundPlayerStartPlayingToast">Playing in background</string>
|
||||
<string name="c3sUrl" translatable="false">https://www.c3s.cc/</string>
|
||||
<string name="next_video_title">Next video</string>
|
||||
<string name="show_next_and_similar_title">Show next and similar videos</string>
|
||||
<string name="url_not_supported_toast">URL not supported</string>
|
||||
<string name="similar_videos_btn_text">Similar videos</string>
|
||||
<string name="search_language_title">Preferable content language</string>
|
||||
<string name="settings_category_video_audio_title">Video & Audio</string>
|
||||
<string name="settings_category_appearance_title">Appearance</string>
|
||||
<string name="settings_category_other_title">Other</string>
|
||||
<string name="background_player_time_text" translatable="false">%1$s - NewPipe</string>
|
||||
<string name="background_player_playing_toast">Playing in background</string>
|
||||
<string name="c3s_url" translatable="false">https://www.c3s.cc/</string>
|
||||
<string name="play_btn_text">Play</string>
|
||||
<string name="network_error">Network Error</string>
|
||||
|
||||
<!-- Content descriptions (for better accessibility) -->
|
||||
<string name="itemThumbnailViewDescription">Video preview thumbnail</string>
|
||||
<string name="detailThumbnailViewDescription">Video preview thumbnail</string>
|
||||
<string name="detailUploaderThumbnailViewDescription">Uploader thumbnail</string>
|
||||
<string name="detailThumbsDownImgViewDescription">Dislikes</string>
|
||||
<string name="detailThumbsUpImgViewDescription">Likes</string>
|
||||
<string name="list_thumbnail_view_description">Video preview thumbnail</string>
|
||||
<string name="detail_thumbnail_view_description">Video preview thumbnail</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Uploader\'s userpic thumbnail</string>
|
||||
<string name="detail_likes_img_view_description">Likes</string>
|
||||
<string name="detail_dislikes_img_view_description">Dislikes</string>
|
||||
<string name="use_tor_title">Use Tor</string>
|
||||
<string name="use_tor_summary">Force download traffic through Tor for increased privacy (streaming videos not yet supported)</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
<style name="AppTheme" parent="Theme.AppCompat.Light">
|
||||
<item name="android:actionBarStyle">@style/NewPipeActionbarTheme</item>
|
||||
<item name="actionBarStyle">@style/NewPipeActionbarTheme</item>
|
||||
<item name="colorPrimary">@color/primaryColorYoutube</item>
|
||||
<item name="colorPrimaryDark">@color/primaryColorDarkYoutube</item>
|
||||
<item name="colorAccent">@color/accentColorYoutube</item>
|
||||
<item name="android:windowBackground">@color/background_gray</item>
|
||||
<item name="colorPrimary">@color/light_youtube_primary_color</item>
|
||||
<item name="colorPrimaryDark">@color/light_youtube_dark_color</item>
|
||||
<item name="colorAccent">@color/light_youtube_accent_color</item>
|
||||
<item name="android:windowBackground">@color/light_background_color</item>
|
||||
</style>
|
||||
|
||||
<style name="NewPipeActionbarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid" >
|
||||
<item name="android:displayOptions">showHome</item>
|
||||
<item name="displayOptions">showHome</item>
|
||||
<item name="android:background">@color/primaryColorYoutube</item>
|
||||
<item name="background">@color/primaryColorYoutube</item>
|
||||
<item name="android:background">@color/light_youtube_primary_color</item>
|
||||
<item name="background">@color/light_youtube_primary_color</item>
|
||||
</style>
|
||||
|
||||
<style name="VideoPlayerTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
|
@ -22,14 +22,14 @@
|
|||
<item name="windowActionBarOverlay">true</item>
|
||||
<item name="android:actionBarStyle">@style/VideoPlayerActionBarTheme</item>
|
||||
<item name="actionBarStyle">@style/VideoPlayerActionBarTheme</item>
|
||||
<item name="colorAccent">@color/primaryColorYoutube</item>
|
||||
<item name="colorAccent">@color/light_youtube_primary_color</item>
|
||||
<item name="android:windowBackground">@android:color/black</item>
|
||||
</style>
|
||||
|
||||
<style name="VideoPlayerActionBarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse" >
|
||||
<item name="android:displayOptions">showHome</item>
|
||||
<item name="displayOptions">showHome</item>
|
||||
<item name="android:background">@color/dark_overlay</item>
|
||||
<item name="background">@color/dark_overlay</item>
|
||||
<item name="android:background">@color/video_overlay_color</item>
|
||||
<item name="background">@color/video_overlay_color</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -0,0 +1,97 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:title="@string/settings_activity_title"
|
||||
android:key="general_preferences">
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="@string/settings_category_video_audio"
|
||||
android:title="@string/settings_category_video_audio_title"
|
||||
android:textAllCaps="true">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/use_external_video_player_key"
|
||||
android:title="@string/use_external_video_player_title"
|
||||
android:defaultValue="false"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/use_external_audio_player_key"
|
||||
android:title="@string/use_external_audio_player_title"
|
||||
android:defaultValue="false"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/default_resolution_key"
|
||||
android:title="@string/default_resolution_title"
|
||||
android:entries="@array/resolution_list"
|
||||
android:entryValues="@array/resolution_list"
|
||||
android:defaultValue="@string/default_resolution_value"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/default_audio_format_key"
|
||||
android:title="@string/default_audio_format_title"
|
||||
android:summary="%s"
|
||||
android:entries="@array/audio_format_description_list"
|
||||
android:entryValues="@array/audio_format_list"
|
||||
android:defaultValue="@string/default_audio_format_value"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:key="@string/settings_category_appearance"
|
||||
android:title="@string/settings_category_appearance_title"
|
||||
android:textAllCaps="true">
|
||||
|
||||
<!-- Not yet working.
|
||||
<ListPreference
|
||||
android:key="@string/theme_key"
|
||||
android:title="@string/theme_title"
|
||||
android:summary="%s"
|
||||
android:entries="@array/theme_description_list"
|
||||
android:entryValues="@array/theme_list"
|
||||
android:defaultValue="@string/default_theme_value"/>
|
||||
-->
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/show_play_with_kodi_key"
|
||||
android:title="@string/show_play_with_kodi_title"
|
||||
android:summary="@string/show_play_with_kodi_summary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/show_next_video_key"
|
||||
android:title="@string/show_next_and_similar_title"
|
||||
android:defaultValue="true" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="@string/settings_category_other"
|
||||
android:title="@string/settings_category_other_title"
|
||||
android:textAllCaps="true">
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/search_language_key"
|
||||
android:title="@string/search_language_title"
|
||||
android:summary="%s"
|
||||
android:entries="@array/language_names"
|
||||
android:entryValues="@array/language_codes"
|
||||
android:defaultValue="@string/default_language_value" />
|
||||
|
||||
<EditTextPreference
|
||||
android:key="@string/download_path_key"
|
||||
android:title="@string/download_path_title"
|
||||
android:summary="@string/download_path_summary"
|
||||
android:dialogTitle="@string/download_path_dialog_title" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/autoplay_through_intent_key"
|
||||
android:title="@string/autoplay_through_intent_title"
|
||||
android:summary="@string/autoplay_through_intent_summary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/use_tor_key"
|
||||
android:title="@string/use_tor_title"
|
||||
android:summary="@string/use_tor_summary"
|
||||
android:defaultValue="false"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
|
@ -1,77 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:title="@string/title_activity_settings"
|
||||
android:key="general_preferences">
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="@string/settingsCategoryVideoAudio"
|
||||
android:title="@string/settingsCategoryVideoAudioTitle">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/useExternalVideoPlayer"
|
||||
android:title="@string/useExternalVideoPlayerTitle"
|
||||
android:defaultValue="false"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/useExternalAudioPlayer"
|
||||
android:title="@string/useExternalAudioPlayerTitle"
|
||||
android:defaultValue="false"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/defaultResolutionPreference"
|
||||
android:title="@string/defaultResolutionPreferenceTitle"
|
||||
android:entries="@array/resolutionList"
|
||||
android:entryValues="@array/resolutionList"
|
||||
android:defaultValue="@string/defaultResolutionListItem"/>
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/defaultAudioFormatPreference"
|
||||
android:title="@string/defaultAudioFormatTitle"
|
||||
android:entries="@array/audioFormatDescriptionList"
|
||||
android:entryValues="@array/audioFormatList"
|
||||
android:defaultValue="@string/defaultAudioFormat"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:key="@string/settingsCategoryVideoInfo"
|
||||
android:title="@string/settingsCategoryVideoInfoTittle">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/showPlayWithKodiPreference"
|
||||
android:title="@string/showPlayWithKodiTitle"
|
||||
android:summary="@string/showPlayWithKodiSummary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/searchLanguage"
|
||||
android:title="@string/searchLanguageTitle"
|
||||
android:entries="@array/languageNames"
|
||||
android:entryValues="@array/languageCodes"
|
||||
android:defaultValue="en" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/showNextVideo"
|
||||
android:title="@string/showNextAndSimilarTitle"
|
||||
android:defaultValue="true" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="@string/settingsCategoryEtc"
|
||||
android:title="@string/settingsCategoryEtcTitle">
|
||||
|
||||
<EditTextPreference
|
||||
android:key="@string/downloadPathPreference"
|
||||
android:title="@string/downloadLocation"
|
||||
android:summary="@string/downloadLocationSummary"
|
||||
android:dialogTitle="@string/downloadLocationDialogTitle"
|
||||
android:defaultValue=""/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/autoPlayThroughIntent"
|
||||
android:title="@string/autoPlayThroughIntentTitle"
|
||||
android:summary="@string/autoPlayThroughIntentSummary"
|
||||
android:defaultValue="false" />
|
||||
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 62 KiB |
|
@ -1,18 +0,0 @@
|
|||
# Project-wide Gradle settings.
|
||||
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx10248m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|