Сохранить видео в реальном времени при изменении ориентации - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь создать приложение, которое отображает потоковое видео в режиме реального времени (в настоящее время от twitch), ничего больше.

Я столкнулся с проблемой изменения ориентации. Всякий раз, когда происходит изменение ориентации, он перезагружает поток. С обычным видео я бы сэкономил время и просто продолжал его воспроизводить с этого момента, но с потоковым видео это не сработало. Я также пытался использовать android:configChanges="orientation|screenSize" в манифесте, но я заметил, что это не очень хорошая практика.

Я также делаю этот проект в MVVM, поэтому любые сохраненные данные, скорее всего, в ViewModel.

Вот мой код:

VideoActivity

class VideoActivity : AppCompatActivity() {

    lateinit var videoViewModel: VideoViewModel
    lateinit var videoView : VideoView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_video)
        videoView = findViewById(R.id.videoView)

        videoViewModel = ViewModelProviders.of(this).get(VideoViewModel::class.java)
        videoViewModel.videoData.observe(this, Observer {
            val video = Uri.parse(it)
            videoView.setVideoURI(video)
            videoView.requestFocus()
            videoView.setOnPreparedListener {
                videoView.start()
            }
        })

    }
}

VideoViewModel

class VideoViewModel (application: Application) : AndroidViewModel(application) {
    val videoData : MutableLiveData<String> = MutableLiveData()

    init {
        val videoURL =
            "https://video-weaver.fra02.hls.ttvnw.net/v1/playlist/CtIDniDZISZg6pdwWWtn7F96H-gSYWvF3ry6fGuRtSEKjCX6-K5R7ggMJhI7cDgngS6SeqgYVWIJKC-qEyy94XusXug8TT1s6mfDq1bQ2id7XeHKZgYS0fucGPPV-pDBCXFkDxLUclYsSon7jxM-t5ydBqOn5N1SOh2Jf1DBr4NmxAxUCtcNVg4UOvfLQrjtQM_AiATNibsFMyiQZRaRGQU96jNvAUJkLBUqPEAwOBbmJJZQbXp3AJIGIm8RiyJ0uufWiTYdQBu44Ri_jihP6QAtXLHjvwqcyMnWJDtL46fwb-QPkWiLm2XEJJfG6x1EUZ8V8Qk1s9A19PTHEp_c18_mc7TIoY-0P7qI7uurA4mQ1kqflkBXKujsMh_kdDfBCoU7UImYrORGe1BSTC8QHStiSSDdLoYwWoKcQGBSLNZXp4L6YtJHBMjXiykgiVZFS2NgoYCgl6rqEzCqb0QXTjNts3B0DmKh4J3V2l2keZh8xW-uymoUCXi7X9E-xOolHpTg_K79dhWitewwKJy0z8NxVMkbBrGeAo75Fl9-fmoIVDQqAGANywH4NQEbmtFH8sh4FnRdBfhWRM9FLYrre3CjGB-LaBAihRFe82vGJ7F8cvN62RIQZGIKfcl18Z53bjDPmV_vzhoMf2b95YbSnSvpzZHW.m3u8"
        videoData.postValue(videoURL)

    }
}
...