Migrate to androidx-media3 video player (#3857)
Behaviour is consistent with previous player except that: - Swapping apps while a video is playing, and then returning to Tusky, will keep the seek position in the video instead of returning to the start - The controls/media description can be shown by tapping anywhere, not just on the video itself - The media description is on-screen for the same duration as the player controls (5 seconds here, 3 seconds in the previous code) - The user has options to control the playback speed - Rotating the device does not squash/stretch the video - Show the media preview when playing audio-only files Fixes https://github.com/tuskyapp/Tusky/issues/3329, https://github.com/tuskyapp/Tusky/issues/3141, https://github.com/tuskyapp/Tusky/issues/3126, https://github.com/tuskyapp/Tusky/issues/2753, https://github.com/tuskyapp/Tusky/issues/3508, https://github.com/tuskyapp/Tusky/issues/3291 --------- Co-authored-by: mcc <andi.m.mcclure@gmail.com>
This commit is contained in:
parent
09d4f62004
commit
8529f309ff
9 changed files with 314 additions and 212 deletions
|
|
@ -59,6 +59,8 @@ import com.keylesspalace.tusky.pager.SingleImagePagerAdapter
|
|||
import com.keylesspalace.tusky.util.getTemporaryMediaFilename
|
||||
import com.keylesspalace.tusky.util.viewBinding
|
||||
import com.keylesspalace.tusky.viewdata.AttachmentViewData
|
||||
import dagger.android.DispatchingAndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Single
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
|
@ -67,10 +69,13 @@ import java.io.FileNotFoundException
|
|||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
typealias ToolbarVisibilityListener = (isVisible: Boolean) -> Unit
|
||||
|
||||
class ViewMediaActivity : BaseActivity(), ViewImageFragment.PhotoActionsListener, ViewVideoFragment.VideoActionsListener {
|
||||
class ViewMediaActivity : BaseActivity(), HasAndroidInjector, ViewImageFragment.PhotoActionsListener, ViewVideoFragment.VideoActionsListener {
|
||||
@Inject
|
||||
lateinit var androidInjector: DispatchingAndroidInjector<Any>
|
||||
|
||||
private val binding by viewBinding(ActivityViewMediaBinding::inflate)
|
||||
|
||||
|
|
@ -337,6 +342,8 @@ class ViewMediaActivity : BaseActivity(), ViewImageFragment.PhotoActionsListener
|
|||
shareFile(file, mimeType)
|
||||
}
|
||||
|
||||
override fun androidInjector() = androidInjector
|
||||
|
||||
companion object {
|
||||
private const val EXTRA_ATTACHMENTS = "attachments"
|
||||
private const val EXTRA_ATTACHMENT_INDEX = "index"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue