diff --git a/app/src/main/java/app/fedilab/nitterizeme/helpers/PlayerChromeClient.java b/app/src/main/java/app/fedilab/nitterizeme/helpers/PlayerChromeClient.java deleted file mode 100644 index 3a816f9..0000000 --- a/app/src/main/java/app/fedilab/nitterizeme/helpers/PlayerChromeClient.java +++ /dev/null @@ -1,181 +0,0 @@ -package app.fedilab.nitterizeme.helpers; -/* Copyright 2020 Thomas Schneider - * - * This file is a part of UntrackMe - * - * This program is free software; you can redistribute it and/or modify it under the terms of the - * GNU General Public License as published by the Free Software Foundation; either version 3 of the - * License, or (at your option) any later version. - * - * UntrackMe 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 UntrackMe; if not, - * see . */ - -import android.app.Activity; -import android.media.MediaPlayer; -import android.view.SurfaceView; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.WebChromeClient; -import android.webkit.WebView; -import android.widget.FrameLayout; - -import androidx.appcompat.app.AppCompatActivity; - -/** - * Custom WebChromeClient - */ - -public class PlayerChromeClient extends WebChromeClient implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener { - - private final WebView webView; - private final View activityNonVideoView; - private final ViewGroup activityVideoView; - private final Activity activity; - private FrameLayout videoViewContainer; - private CustomViewCallback videoViewCallback; - private ToggledFullscreenCallback toggledFullscreenCallback; - private boolean isVideoFullscreen; - - - public PlayerChromeClient(Activity activity, WebView webView, FrameLayout activityNonVideoView, ViewGroup activityVideoView) { - this.activity = activity; - this.isVideoFullscreen = false; - this.webView = webView; - this.activityNonVideoView = activityNonVideoView; - this.activityVideoView = activityVideoView; - } - - /** - * Set a callback that will be fired when the video starts or finishes displaying using a custom view (typically full-screen) - * - * @param callback A VideoEnabledWebChromeClient.ToggledFullscreenCallback callback - */ - public void setOnToggledFullscreen(ToggledFullscreenCallback callback) { - this.toggledFullscreenCallback = callback; - } - - //FULLSCREEN VIDEO - //Code from https://stackoverflow.com/a/16179544/3197259 - - @Override - public void onShowCustomView(View view, CustomViewCallback callback) { - if (view instanceof FrameLayout) { - if (((AppCompatActivity) activity).getSupportActionBar() != null) - //noinspection ConstantConditions - ((AppCompatActivity) activity).getSupportActionBar().hide(); - // A video wants to be shown - FrameLayout frameLayout = (FrameLayout) view; - View focusedChild = frameLayout.getFocusedChild(); - - // Save video related variables - isVideoFullscreen = true; - this.videoViewContainer = frameLayout; - this.videoViewCallback = callback; - - // Hide the non-video view, add the video view, and show it - activityNonVideoView.setVisibility(View.INVISIBLE); - activityVideoView.addView(videoViewContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - activityVideoView.setVisibility(View.VISIBLE); - if (focusedChild instanceof android.widget.VideoView) { - // android.widget.VideoView (typically API level <11) - android.widget.VideoView videoView = (android.widget.VideoView) focusedChild; - // Handle all the required events - videoView.setOnCompletionListener(this); - videoView.setOnErrorListener(this); - } else { - // Other classes, including: - // - android.webkit.HTML5VideoFullScreen$VideoSurfaceView, which inherits from android.view.SurfaceView (typically API level 11-18) - // - android.webkit.HTML5VideoFullScreen$VideoTextureView, which inherits from android.view.TextureView (typically API level 11-18) - // - com.android.org.chromium.content.browser.ContentVideoView$VideoSurfaceView, which inherits from android.view.SurfaceView (typically API level 19+) - - // Handle HTML5 video ended event only if the class is a SurfaceView - // Test case: TextureView of Sony Xperia T API level 16 doesn't work fullscreen when loading the javascript below - if (webView != null && webView.getSettings().getJavaScriptEnabled() && focusedChild instanceof SurfaceView) { - // Run javascript code that detects the video end and notifies the Javascript interface - String js = "javascript:"; - js += "var _ytrp_html5_video_last;"; - js += "var _ytrp_html5_video = document.getElementsByTagName('video')[0];"; - js += "if (_ytrp_html5_video != undefined && _ytrp_html5_video != _ytrp_html5_video_last) {"; - { - js += "_ytrp_html5_video_last = _ytrp_html5_video;"; - js += "function _ytrp_html5_video_ended() {"; - { - js += "_VideoEnabledWebView.notifyVideoEnd();"; // Must match Javascript interface name and method of VideoEnableWebView - } - js += "}"; - js += "_ytrp_html5_video.addEventListener('ended', _ytrp_html5_video_ended);"; - } - js += "}"; - webView.loadUrl(js); - } - } - // Notify full-screen change - if (toggledFullscreenCallback != null) { - toggledFullscreenCallback.toggledFullscreen(true); - } - } - } - - // Available in API level 14+, deprecated in API level 18+ - @Override - public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) { - onShowCustomView(view, callback); - } - - @Override - public void onHideCustomView() { - if (((AppCompatActivity) activity).getSupportActionBar() != null) - //noinspection ConstantConditions - ((AppCompatActivity) activity).getSupportActionBar().show(); - // This method should be manually called on video end in all cases because it's not always called automatically. - // This method must be manually called on back key press (from this class' onBackPressed() method). - if (isVideoFullscreen) { - // Hide the video view, remove it, and show the non-video view - activityVideoView.setVisibility(View.INVISIBLE); - activityVideoView.removeView(videoViewContainer); - activityNonVideoView.setVisibility(View.VISIBLE); - // Call back (only in API level <19, because in API level 19+ with chromium webview it crashes) - if (videoViewCallback != null && !videoViewCallback.getClass().getName().contains(".chromium.")) { - videoViewCallback.onCustomViewHidden(); - } - - // Reset video related variables - isVideoFullscreen = false; - videoViewContainer = null; - videoViewCallback = null; - - // Notify full-screen change - if (toggledFullscreenCallback != null) { - toggledFullscreenCallback.toggledFullscreen(false); - } - } - } - - // Video will start loading - @Override - public View getVideoLoadingProgressView() { - return super.getVideoLoadingProgressView(); - } - - // Video finished playing, only called in the case of android.widget.VideoView (typically API level <11) - @Override - public void onCompletion(MediaPlayer mp) { - onHideCustomView(); - } - - // Error while playing video, only called in the case of android.widget.VideoView (typically API level <11) - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - return false; // By returning false, onCompletion() will be called - } - - public interface ToggledFullscreenCallback { - void toggledFullscreen(boolean fullscreen); - } - -} - diff --git a/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java b/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java index e8a1f1e..90dbca8 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java +++ b/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java @@ -15,7 +15,6 @@ package app.fedilab.nitterizeme.helpers; * see . */ -import static android.content.Context.DOWNLOAD_SERVICE; import static app.fedilab.nitterizeme.activities.CheckAppActivity.bibliogram_instances; import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_domains; import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances; @@ -29,7 +28,6 @@ import static app.fedilab.nitterizeme.activities.CheckAppActivity.twitter_domain import static app.fedilab.nitterizeme.activities.CheckAppActivity.wikipedia_domains; import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains; import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_EMBEDDED_PLAYER; import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_ENABLED; import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_ENABLED; import static app.fedilab.nitterizeme.activities.MainActivity.SET_PROXITOK_ENABLED; @@ -38,24 +36,6 @@ import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST; import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_ENABLED; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.bibliogram_instances; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.medium_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.nitter_instances; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.outlook_safe_domain; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.reddit_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.shortener_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.twitter_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.wikipedia_domains; -import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST; -import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_ENABLED; import android.app.Activity; import android.content.ComponentName; diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index dab1b3e..c3ff0b6 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -109,7 +109,7 @@ android:id="@+id/developer_mastodon" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="\@apps@toot.fedilab.org" + android:text="\@apps@toot.fedilab.app" android:textSize="16sp" android:textStyle="bold" tools:ignore="HardcodedText" />