Я пытаюсь создать приложение, которое отображает потоковое видео в режиме реального времени (в настоящее время от 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)
}
}