Stop voice note on video playback.

fork-5.53.8
Alex Hart 2022-04-08 10:42:38 -03:00 zatwierdzone przez Cody Henthorne
rodzic a87aa0fbe2
commit fc55be0916
4 zmienionych plików z 32 dodań i 2 usunięć

Wyświetl plik

@ -55,6 +55,8 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.animation.DepthPageTransformer; import org.thoughtcrime.securesms.animation.DepthPageTransformer;
import org.thoughtcrime.securesms.attachments.DatabaseAttachment; import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
import org.thoughtcrime.securesms.components.viewpager.ExtendedOnPageChangedListener; import org.thoughtcrime.securesms.components.viewpager.ExtendedOnPageChangedListener;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaController;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaControllerOwner;
import org.thoughtcrime.securesms.conversation.mutiselect.MultiselectPart; import org.thoughtcrime.securesms.conversation.mutiselect.MultiselectPart;
import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardBottomSheet; import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardBottomSheet;
import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment; import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment;
@ -91,7 +93,8 @@ import java.util.Objects;
public final class MediaPreviewActivity extends PassphraseRequiredActivity public final class MediaPreviewActivity extends PassphraseRequiredActivity
implements LoaderManager.LoaderCallbacks<Pair<Cursor, Integer>>, implements LoaderManager.LoaderCallbacks<Pair<Cursor, Integer>>,
MediaRailAdapter.RailItemListener, MediaRailAdapter.RailItemListener,
MediaPreviewFragment.Events MediaPreviewFragment.Events,
VoiceNoteMediaControllerOwner
{ {
private final static String TAG = Log.tag(MediaPreviewActivity.class); private final static String TAG = Log.tag(MediaPreviewActivity.class);
@ -131,6 +134,8 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity
private MediaDatabase.Sorting sorting; private MediaDatabase.Sorting sorting;
private FullscreenHelper fullscreenHelper; private FullscreenHelper fullscreenHelper;
private VoiceNoteMediaController voiceNoteMediaController;
private @Nullable Cursor cursor = null; private @Nullable Cursor cursor = null;
public static @NonNull Intent intentFromMediaRecord(@NonNull Context context, public static @NonNull Intent intentFromMediaRecord(@NonNull Context context,
@ -163,6 +168,7 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity
setSupportActionBar(findViewById(R.id.toolbar)); setSupportActionBar(findViewById(R.id.toolbar));
voiceNoteMediaController = new VoiceNoteMediaController(this);
viewModel = ViewModelProviders.of(this).get(MediaPreviewViewModel.class); viewModel = ViewModelProviders.of(this).get(MediaPreviewViewModel.class);
fullscreenHelper = new FullscreenHelper(this); fullscreenHelper = new FullscreenHelper(this);
@ -609,6 +615,11 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity
public void onMediaReady() { public void onMediaReady() {
} }
@Override
public @NonNull VoiceNoteMediaController getVoiceNoteMediaController() {
return voiceNoteMediaController;
}
private class ViewPagerListener extends ExtendedOnPageChangedListener { private class ViewPagerListener extends ExtendedOnPageChangedListener {
@Override @Override

Wyświetl plik

@ -220,6 +220,13 @@ public class VoiceNoteMediaController implements DefaultLifecycleObserver {
} }
} }
/**
* Pauses playback regardless of which audio slide is playing.
*/
public void pausePlayback() {
getMediaController().getTransportControls().pause();
}
/** /**
* Seeks to a given position if th given audio slide is playing. This call * Seeks to a given position if th given audio slide is playing. This call
* is ignored if the given audio slide is not currently playing. * is ignored if the given audio slide is not currently playing.

Wyświetl plik

@ -11,6 +11,8 @@ import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaController;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaControllerOwner;
import org.thoughtcrime.securesms.mms.VideoSlide; import org.thoughtcrime.securesms.mms.VideoSlide;
import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.video.VideoPlayer; import org.thoughtcrime.securesms.video.VideoPlayer;
@ -61,6 +63,9 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
@Override @Override
public void onPlaying() { public void onPlaying() {
if (!isVideoGif && requireActivity() instanceof VoiceNoteMediaControllerOwner) {
((VoiceNoteMediaControllerOwner) requireActivity()).getVoiceNoteMediaController().pausePlayback();
}
} }
@Override @Override
@ -93,6 +98,7 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (videoView != null && isVideoGif) { if (videoView != null && isVideoGif) {
videoView.play(); videoView.play();
} }

Wyświetl plik

@ -7,10 +7,14 @@ import android.os.Bundle
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.PassphraseRequiredActivity
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaController
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaControllerOwner
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.stories.StoryTextPostModel import org.thoughtcrime.securesms.stories.StoryTextPostModel
class StoryViewerActivity : PassphraseRequiredActivity() { class StoryViewerActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner {
override lateinit var voiceNoteMediaController: VoiceNoteMediaController
override fun attachBaseContext(newBase: Context) { override fun attachBaseContext(newBase: Context) {
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
@ -23,6 +27,8 @@ class StoryViewerActivity : PassphraseRequiredActivity() {
super.onCreate(savedInstanceState, ready) super.onCreate(savedInstanceState, ready)
setContentView(R.layout.fragment_container) setContentView(R.layout.fragment_container)
voiceNoteMediaController = VoiceNoteMediaController(this)
if (savedInstanceState == null) { if (savedInstanceState == null) {
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
.replace( .replace(