kopia lustrzana https://github.com/ryukoposting/Signal-Android
Stop voice note on video playback.
rodzic
a87aa0fbe2
commit
fc55be0916
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Ładowanie…
Reference in New Issue