diff --git a/app/build.gradle b/app/build.gradle index 6fc471d..18a0f06 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { minSdkVersion 21 targetSdkVersion 30 - versionCode 37 - versionName "1.12.1" + versionCode 38 + versionName "1.13.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/google_cast_lib/AndroidManifest.xml b/app/src/google_cast_lib/AndroidManifest.xml index 4e12e9a..ab8f612 100644 --- a/app/src/google_cast_lib/AndroidManifest.xml +++ b/app/src/google_cast_lib/AndroidManifest.xml @@ -11,6 +11,12 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".PeertubeActivity" /> + + diff --git a/app/src/google_cast_lib/java/app/fedilab/fedilabtube/BasePeertubeActivity.java b/app/src/google_cast_lib/java/app/fedilab/fedilabtube/BasePeertubeActivity.java index 0c6e1eb..8475b78 100644 --- a/app/src/google_cast_lib/java/app/fedilab/fedilabtube/BasePeertubeActivity.java +++ b/app/src/google_cast_lib/java/app/fedilab/fedilabtube/BasePeertubeActivity.java @@ -99,7 +99,7 @@ public class BasePeertubeActivity extends AppCompatActivity { @Override public void onSessionStarted(CastSession castSession, String s) { - onApplicationConnected(castSession); + onApplicationConnected(castSession, true); } @Override @@ -123,7 +123,7 @@ public class BasePeertubeActivity extends AppCompatActivity { @Override public void onSessionResumed(CastSession castSession, boolean b) { - onApplicationConnected(castSession); + onApplicationConnected(castSession, false); } @Override @@ -136,16 +136,20 @@ public class BasePeertubeActivity extends AppCompatActivity { onApplicationDisconnected(); } - private void onApplicationConnected(CastSession castSession) { + private void onApplicationConnected(CastSession castSession, boolean hide) { mCastSession = castSession; supportInvalidateOptionsMenu(); player.setPlayWhenReady(false); - binding.doubleTapPlayerView.setVisibility(View.INVISIBLE); + if (hide) { + binding.doubleTapPlayerView.setVisibility(View.INVISIBLE); + } + binding.minController.castMiniController.setVisibility(View.VISIBLE); loadCast(); } private void onApplicationDisconnected() { binding.doubleTapPlayerView.setVisibility(View.VISIBLE); + binding.minController.castMiniController.setVisibility(View.GONE); supportInvalidateOptionsMenu(); } }; diff --git a/app/src/google_cast_lib/res/layout/min_controller.xml b/app/src/google_cast_lib/res/layout/min_controller.xml new file mode 100644 index 0000000..cdfbb88 --- /dev/null +++ b/app/src/google_cast_lib/res/layout/min_controller.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java index b1cfba5..ff375be 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/PeertubeActivity.java @@ -1425,7 +1425,7 @@ public class PeertubeActivity extends BasePeertubeActivity implements CommentLis @Override public void onConfigurationChanged(@NotNull Configuration newConfig) { super.onConfigurationChanged(newConfig); - if (binding.castController.getVisibility() == View.VISIBLE) { + if (binding.minController.castMiniController.getVisibility() == View.VISIBLE) { return; } if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { @@ -1478,7 +1478,7 @@ public class PeertubeActivity extends BasePeertubeActivity implements CommentLis public void onResume() { super.onResume(); onStopCalled = false; - if (player != null && !player.isPlaying()) { + if (player != null && !player.isPlaying() && binding.minController.castMiniController.getVisibility() != View.VISIBLE) { player.setPlayWhenReady(autoPlay); if (autoPlay) { binding.doubleTapPlayerView.hideController(); @@ -1494,7 +1494,7 @@ public class PeertubeActivity extends BasePeertubeActivity implements CommentLis } if (player != null && (!isPlayInMinimized || !playInMinimized)) { player.setPlayWhenReady(false); - } else if (playInMinimized && binding.castController.getVisibility() != View.VISIBLE) { + } else if (playInMinimized && binding.minController.castMiniController.getVisibility() != View.VISIBLE) { enterVideoMode(); } } diff --git a/app/src/main/java/app/fedilab/fedilabtube/fragment/DisplayVideosFragment.java b/app/src/main/java/app/fedilab/fedilabtube/fragment/DisplayVideosFragment.java index 9ddde10..9c6047f 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/fragment/DisplayVideosFragment.java +++ b/app/src/main/java/app/fedilab/fedilabtube/fragment/DisplayVideosFragment.java @@ -259,11 +259,9 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta @Override public void onPause() { super.onPause(); - if (binding.swipeContainer != null) { - binding.swipeContainer.setEnabled(false); - binding.swipeContainer.setRefreshing(false); - binding.swipeContainer.clearAnimation(); - } + binding.swipeContainer.setEnabled(false); + binding.swipeContainer.setRefreshing(false); + binding.swipeContainer.clearAnimation(); if (getActivity() != null) { InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null && getView() != null) { @@ -431,7 +429,7 @@ public class DisplayVideosFragment extends Fragment implements AccountsHorizonta } public void manageVIewRelationship(APIResponse apiResponse) { - if (apiResponse.getError() != null) { + if (apiResponse.getError() != null || apiResponse.getRelationships() == null) { return; } if (relationship == null) { diff --git a/app/src/main/res/layout/activity_peertube.xml b/app/src/main/res/layout/activity_peertube.xml index 287458a..4264b46 100644 --- a/app/src/main/res/layout/activity_peertube.xml +++ b/app/src/main/res/layout/activity_peertube.xml @@ -75,58 +75,9 @@ android:scaleType="fitCenter" android:visibility="gone" /> - - - - - - - - - - - - + { - binding.castLoader.setVisibility(View.VISIBLE); + binding.minController.castPlay.setOnClickListener(v -> { + binding.minController.castLoader.setVisibility(View.VISIBLE); if (BaseMainActivity.chromeCast != null) { new Thread(() -> { try { @@ -76,11 +75,11 @@ public class BasePeertubeActivity extends AppCompatActivity { if (icon != -1) { Handler mainHandler = new Handler(Looper.getMainLooper()); int finalIcon = icon; - Runnable myRunnable = () -> binding.castPlay.setImageResource(finalIcon); + Runnable myRunnable = () -> binding.minController.castPlay.setImageResource(finalIcon); mainHandler.post(myRunnable); } Handler mainHandler = new Handler(Looper.getMainLooper()); - Runnable myRunnable = () -> binding.castLoader.setVisibility(View.GONE); + Runnable myRunnable = () -> binding.minController.castLoader.setVisibility(View.GONE); mainHandler.post(myRunnable); } catch (IOException e) { e.printStackTrace(); @@ -123,7 +122,7 @@ public class BasePeertubeActivity extends AppCompatActivity { Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { binding.doubleTapPlayerView.setVisibility(View.VISIBLE); - binding.castController.setVisibility(View.GONE); + binding.minController.castMiniController.setVisibility(View.GONE); }; mainHandler.post(myRunnable); @@ -136,14 +135,14 @@ public class BasePeertubeActivity extends AppCompatActivity { Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { invalidateOptionsMenu(); - binding.castLoader.setVisibility(View.VISIBLE); + binding.minController.castLoader.setVisibility(View.VISIBLE); player.setPlayWhenReady(false); binding.doubleTapPlayerView.setVisibility(View.GONE); - binding.castController.setVisibility(View.VISIBLE); + binding.minController.castMiniController.setVisibility(View.VISIBLE); dialog.dismiss(); - if (chromeCastVideoURL != null) { + if (videoURL != null) { if (player != null && player.getCurrentPosition() > 0) { - chromeCastVideoURL += "?start=" + (player.getCurrentPosition() / 1000); + videoURL += "?start=" + (player.getCurrentPosition() / 1000); } } }; @@ -157,14 +156,14 @@ public class BasePeertubeActivity extends AppCompatActivity { if (BaseMainActivity.chromeCast.isAppAvailable(CAST_ID) && !status.isAppRunning(CAST_ID)) { BaseMainActivity.chromeCast.launchApp(CAST_ID); } - if (chromeCastVideoURL != null) { - String mime = MimeTypeMap.getFileExtensionFromUrl(chromeCastVideoURL); + if (videoURL != null) { + String mime = MimeTypeMap.getFileExtensionFromUrl(videoURL); BaseMainActivity.chromeCast.setRequestTimeout(60000); - BaseMainActivity.chromeCast.load(peertube.getTitle(), null, chromeCastVideoURL, mime); + BaseMainActivity.chromeCast.load(peertube.getTitle(), null, videoURL, mime); BaseMainActivity.chromeCast.play(); - binding.castPlay.setImageResource(R.drawable.ic_baseline_pause_32); + binding.minController.castPlay.setImageResource(R.drawable.ic_baseline_pause_32); } - myRunnable = () -> binding.castLoader.setVisibility(View.GONE); + myRunnable = () -> binding.minController.castLoader.setVisibility(View.GONE); mainHandler.post(myRunnable); } catch (IOException | GeneralSecurityException e) { e.printStackTrace(); diff --git a/app/src/no_google_cast_lib/res/layout/min_controller.xml b/app/src/no_google_cast_lib/res/layout/min_controller.xml new file mode 100644 index 0000000..4ae6eaa --- /dev/null +++ b/app/src/no_google_cast_lib/res/layout/min_controller.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + \ No newline at end of file