Fix video playback starting when off screen in media viewer.

main
Cody Henthorne 2022-12-21 12:40:13 -05:00 zatwierdzone przez Greyson Parrelli
rodzic ebdfa88882
commit 055b4691d7
4 zmienionych plików z 18 dodań i 46 usunięć

Wyświetl plik

@ -29,36 +29,6 @@ public abstract class MediaPreviewFragment extends Fragment {
private AttachmentId attachmentId; private AttachmentId attachmentId;
protected Events events; protected Events events;
public static MediaPreviewFragment newInstance(@NonNull Attachment attachment, boolean autoPlay) {
return newInstance(attachment.getUri(), attachment.getContentType(), attachment.getSize(), autoPlay, attachment.isVideoGif());
}
public static MediaPreviewFragment newInstance(@NonNull Uri dataUri, @NonNull String contentType, long size, boolean autoPlay, boolean isVideoGif) {
Bundle args = new Bundle();
args.putParcelable(MediaPreviewFragment.DATA_URI, dataUri);
args.putString(MediaPreviewFragment.DATA_CONTENT_TYPE, contentType);
args.putLong(MediaPreviewFragment.DATA_SIZE, size);
args.putBoolean(MediaPreviewFragment.AUTO_PLAY, autoPlay);
args.putBoolean(MediaPreviewFragment.VIDEO_GIF, isVideoGif);
MediaPreviewFragment fragment = createCorrectFragmentType(contentType);
fragment.setArguments(args);
return fragment;
}
private static MediaPreviewFragment createCorrectFragmentType(@NonNull String contentType) {
if (MediaUtil.isVideo(contentType)) {
return new VideoMediaPreviewFragment();
} else if (MediaUtil.isImageType(contentType)) {
return new ImageMediaPreviewFragment();
} else {
throw new AssertionError("Unexpected media type: " + contentType);
}
}
@Override @Override
public void onAttach(@NonNull Context context) { public void onAttach(@NonNull Context context) {
super.onAttach(context); super.onAttach(context);
@ -78,6 +48,7 @@ public abstract class MediaPreviewFragment extends Fragment {
checkMediaStillAvailable(); checkMediaStillAvailable();
} }
public void autoPlayIfNeeded() {}
public abstract void cleanUp(); public abstract void cleanUp();
public abstract void pause(); public abstract void pause();
public abstract void setBottomButtonControls(MediaPreviewPlayerControlView playerControlView); public abstract void setBottomButtonControls(MediaPreviewPlayerControlView playerControlView);

Wyświetl plik

@ -28,7 +28,7 @@ class MediaPreviewV2Adapter(fragment: Fragment) : FragmentStateAdapter(fragment)
MediaPreviewFragment.DATA_URI to attachment.uri, MediaPreviewFragment.DATA_URI to attachment.uri,
MediaPreviewFragment.DATA_CONTENT_TYPE to contentType, MediaPreviewFragment.DATA_CONTENT_TYPE to contentType,
MediaPreviewFragment.DATA_SIZE to attachment.size, MediaPreviewFragment.DATA_SIZE to attachment.size,
MediaPreviewFragment.AUTO_PLAY to true, MediaPreviewFragment.AUTO_PLAY to attachment.isVideoGif,
MediaPreviewFragment.VIDEO_GIF to attachment.isVideoGif, MediaPreviewFragment.VIDEO_GIF to attachment.isVideoGif,
) )
val fragment = if (MediaUtil.isVideo(contentType)) { val fragment = if (MediaUtil.isVideo(contentType)) {

Wyświetl plik

@ -297,6 +297,7 @@ class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v
forward(currentItem) forward(currentItem)
} }
currentFragment?.setBottomButtonControls(binding.mediaPreviewPlaybackControls) currentFragment?.setBottomButtonControls(binding.mediaPreviewPlaybackControls)
currentFragment?.autoPlayIfNeeded()
} }
private fun bindAlbumRail(albumThumbnailMedia: List<Media>, currentItem: MediaTable.MediaRecord) { private fun bindAlbumRail(albumThumbnailMedia: List<Media>, currentItem: MediaTable.MediaRecord) {

Wyświetl plik

@ -31,14 +31,7 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
private boolean isVideoGif; private boolean isVideoGif;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View itemView = inflater.inflate(R.layout.media_preview_video_fragment, container, false); View itemView = inflater.inflate(R.layout.media_preview_video_fragment, container, false);
Bundle arguments = requireArguments(); Bundle arguments = requireArguments();
Uri uri = arguments.getParcelable(DATA_URI); Uri uri = arguments.getParcelable(DATA_URI);
@ -111,13 +104,6 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
cleanUp(); cleanUp();
} }
@Override
public void cleanUp() {
if (videoView != null) {
videoView.cleanup();
}
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
@ -131,6 +117,20 @@ public final class VideoMediaPreviewFragment extends MediaPreviewFragment {
} }
} }
@Override
public void autoPlayIfNeeded() {
if (videoView != null && videoView.getPlaybackPosition() < videoView.getDuration()) {
videoView.play();
}
}
@Override
public void cleanUp() {
if (videoView != null) {
videoView.cleanup();
}
}
@Override @Override
public void pause() { public void pause() {
if (videoView != null) { if (videoView != null) {