diff --git a/app/build.gradle b/app/build.gradle
index c38bf8d4a..a761f5ccc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 15
targetSdkVersion 27
- versionCode 41
- versionName "0.11.0"
+ versionCode 42
+ versionName "0.11.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@@ -52,7 +52,7 @@ dependencies {
exclude module: 'support-annotations'
}
- implementation 'com.github.TeamNewPipe:NewPipeExtractor:b9d0941411'
+ implementation 'com.github.TeamNewPipe:NewPipeExtractor:a5ba4828'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
diff --git a/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java b/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java
index a2fe35894..a64ed7ff4 100644
--- a/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java
+++ b/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java
@@ -135,8 +135,12 @@ public class AboutActivity extends AppCompatActivity {
View githubLink = rootView.findViewById(R.id.github_link);
githubLink.setOnClickListener(new OnGithubLinkClickListener());
- View licenseLink = rootView.findViewById(R.id.app_read_license);
- licenseLink.setOnClickListener(new OnReadFullLicenseClickListener());
+ View donationLink = rootView.findViewById(R.id.donation_link);
+ donationLink.setOnClickListener(new OnDonationLinkClickListener());
+
+ View websiteLink = rootView.findViewById(R.id.website_link);
+ websiteLink.setOnClickListener(new OnWebsiteLinkClickListener());
+
return rootView;
}
@@ -149,10 +153,21 @@ public class AboutActivity extends AppCompatActivity {
}
}
- private static class OnReadFullLicenseClickListener implements View.OnClickListener {
+ private static class OnDonationLinkClickListener implements View.OnClickListener {
@Override
- public void onClick(View v) {
- LicenseFragment.showLicense(v.getContext(), StandardLicenses.GPL3);
+ public void onClick(final View view) {
+ final Context context = view.getContext();
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.donation_url)));
+ context.startActivity(intent);
+ }
+ }
+
+ private static class OnWebsiteLinkClickListener implements View.OnClickListener {
+ @Override
+ public void onClick(final View view) {
+ final Context context = view.getContext();
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.website_url)));
+ context.startActivity(intent);
}
}
}
diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
index 4400cac53..272e27240 100644
--- a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
@@ -62,6 +62,9 @@ public class LicenseFragment extends Fragment {
View rootView = inflater.inflate(R.layout.fragment_licenses, container, false);
ViewGroup softwareComponentsView = rootView.findViewById(R.id.software_components);
+ View licenseLink = rootView.findViewById(R.id.app_read_license);
+ licenseLink.setOnClickListener(new OnReadFullLicenseClickListener());
+
for (final SoftwareComponent component : softwareComponents) {
View componentView = inflater.inflate(R.layout.item_software_component, container, false);
TextView softwareName = componentView.findViewById(R.id.name);
@@ -119,4 +122,11 @@ public class LicenseFragment extends Fragment {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(componentLink));
startActivity(browserIntent);
}
+
+ private static class OnReadFullLicenseClickListener implements View.OnClickListener {
+ @Override
+ public void onClick(View v) {
+ LicenseFragment.showLicense(v.getContext(), StandardLicenses.GPL3);
+ }
+ }
}
diff --git a/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java b/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java
index 12d1764cc..e71088ac9 100644
--- a/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java
+++ b/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java
@@ -116,10 +116,7 @@ public class SubscriptionEntity {
@Ignore
public ChannelInfoItem toChannelInfoItem() {
- ChannelInfoItem item = new ChannelInfoItem();
- item.url = getUrl();
- item.service_id = getServiceId();
- item.name = getName();
+ ChannelInfoItem item = new ChannelInfoItem(getServiceId(), getUrl(), getName());
item.thumbnail_url = getAvatarUrl();
item.subscriber_count = getSubscriberCount();
item.description = getDescription();
diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
index 73e4d87ac..e68f56edb 100644
--- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
@@ -22,12 +22,15 @@ package org.schabi.newpipe.player;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Color;
import android.media.AudioManager;
import android.os.Build;
import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
@@ -81,6 +84,8 @@ public final class MainVideoPlayer extends Activity {
private boolean activityPaused;
private VideoPlayerImpl playerImpl;
+ private SharedPreferences defaultPreferences;
+
/*//////////////////////////////////////////////////////////////////////////
// Activity LifeCycle
//////////////////////////////////////////////////////////////////////////*/
@@ -89,6 +94,7 @@ public final class MainVideoPlayer extends Activity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (DEBUG) Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]");
+ defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this);
ThemeHelper.setTheme(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) getWindow().setStatusBarColor(Color.BLACK);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
@@ -99,6 +105,8 @@ public final class MainVideoPlayer extends Activity {
return;
}
+
+
showSystemUi();
setContentView(R.layout.activity_main_player);
playerImpl = new VideoPlayerImpl(this);
@@ -146,6 +154,11 @@ public final class MainVideoPlayer extends Activity {
activityPaused = false;
}
+ if(globalScreenOrientationLocked()) {
+ boolean lastOrientationWasLandscape
+ = defaultPreferences.getBoolean(getString(R.string.last_orientation_landscape_key), false);
+ setLandScape(lastOrientationWasLandscape);
+ }
}
@Override
@@ -198,11 +211,28 @@ public final class MainVideoPlayer extends Activity {
}
private void toggleOrientation() {
- setRequestedOrientation(getResources().getDisplayMetrics().heightPixels > getResources().getDisplayMetrics().widthPixels
+ setLandScape(!isLandScape());
+ defaultPreferences.edit()
+ .putBoolean(getString(R.string.last_orientation_landscape_key), !isLandScape())
+ .apply();
+ }
+
+ private boolean isLandScape() {
+ return getResources().getDisplayMetrics().heightPixels < getResources().getDisplayMetrics().widthPixels;
+ }
+
+ private void setLandScape(boolean v) {
+ setRequestedOrientation(v
? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
: ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
+ private boolean globalScreenOrientationLocked() {
+ // 1: Screen orientation changes using acelerometer
+ // 0: Screen orientatino is locked
+ return !(android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
+ }
+
protected void setRepeatModeButton(final ImageButton imageButton, final int repeatMode) {
switch (repeatMode) {
case Player.REPEAT_MODE_OFF:
diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml
index aa154072a..6e1db563a 100644
--- a/app/src/main/res/layout/fragment_about.xml
+++ b/app/src/main/res/layout/fragment_about.xml
@@ -45,6 +45,7 @@
android:id="@+id/app_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:paddingBottom="5dp"
android:text="@string/app_description" />
-
+ android:text="@string/donation_encouragement" />
+ android:text="@string/give_back" />
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_licenses.xml b/app/src/main/res/layout/fragment_licenses.xml
index c60dddab5..f18d8e330 100644
--- a/app/src/main/res/layout/fragment_licenses.xml
+++ b/app/src/main/res/layout/fragment_licenses.xml
@@ -11,12 +11,40 @@
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin">
+
+
+
+
+
+
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index 5eee12c6c..0b8a6e0f6 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -75,6 +75,8 @@
- @string/audio_webm_key
+ last_orientation_landscape_key
+
theme
light_theme
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9b9e999db..4b0d64239 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -258,14 +258,22 @@
About
Contributors
Licenses
- https://github.com/TeamNewPipe/NewPipe
A free lightweight YouTube frontend for Android.
- NewPipe is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute 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.
- View on GitHub
- NewPipe\'s License
+ Contribute
Whether you have ideas of; translation, design changes, code cleaning, or real heavy code changes—help is always welcome. The more is done the better it gets!
+ https://github.com/TeamNewPipe/NewPipe
+ View on GitHub
+ Donate
+ NewPipe gets developed by volunteers which spend their free time to bring the best experience to you. Now it is time to give back to make sure our developers can make NewPipe even more better while enjoying a cup of java!
+ https://newpipe.schabi.org/donate
+ Give back
+ Website
+ To get more information and the latest news about NewPipe visit our website.
+ https://newpipe.schabi.org/
+ NewPipe\'s License
+ NewPipe is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute 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.
Read license
- Contribution
+
History