首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Studio (Kotlin) -切换应用程序后VideoView变黑

Android Studio (Kotlin) -切换应用程序后VideoView变黑
EN

Stack Overflow用户
提问于 2021-11-11 17:00:50
回答 1查看 65关注 0票数 0

我有一个非常简单的视频播放在我的主要活动的底部三分之一,循环。当应用程序最小化,然后我回到它,视频将停止播放,而是显示一个黑屏,似乎没有办法让它再次播放。(我不想要视频控件。)

这是我的MainActivity.kt:

代码语言:javascript
运行
复制
import android.app.ActionBar
import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity

import android.widget.TextView
import android.graphics.drawable.ColorDrawable

class MainActivity :  AppCompatActivity() {

    // declaring a null variable for VideoView
    var simpleVideoView: VideoView? = null

    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        supportActionBar?.setDisplayShowTitleEnabled(false)
        supportActionBar?.hide()

        // assigning id of VideoView from
        // activity_main.xml layout file
        simpleVideoView = findViewById<View>(R.id.videoView) as VideoView

        // set the absolute path of the video file which is going to be played
        simpleVideoView!!.setVideoURI(Uri.parse("android.resource://"
                + packageName + "/" + R.raw.gp))

        simpleVideoView!!.requestFocus()

        // starting the video
        simpleVideoView!!.start()

        simpleVideoView!!.setOnCompletionListener { simpleVideoView!!.start() }

    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-12 17:18:01

最简单的解决方案是:

类MainActivity : AppCompatActivity() {

代码语言:javascript
运行
复制
    var simpleVideoView: VideoView? = null
    var currentPosition = 0

    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        supportActionBar?.setDisplayShowTitleEnabled(false)
        supportActionBar?.hide()

    
        simpleVideoView = findViewById<View>(R.id.videoView) as VideoView

        
        simpleVideoView!!.setVideoURI(Uri.parse("android.resource://"
            + packageName + "/" + R.raw.gp))

        simpleVideoView!!.setOnCompletionListener {     simpleVideoView!!.start() }

    if (savedInstanceState != null) {
        var position = savedInstanceState.getInt("position")
        simpleVideoView!!.seekTo(position)
    }

}

    override fun onStart() {
        super.onStart()
        if (currentPosition != 0)
             simpleVideoView!!.seekTo(currentPosition)

        simpleVideoView!!.start()

    }

    override fun onResume() {
        super.onResume()
        if (!simpleVideoView!!.isPlaying) {
            if (currentPosition != 0)
                simpleVideoView!!.seekTo(currentPosition)

            simpleVideoView!!.start()
        }
    }

    override fun onPause() {
        super.onPause()
        simpleVideoView!!.pause()
        currentPosition = simpleVideoView!!.currentPosition
    }

    override fun onStop() {
         simpleVideoView!!.pause()
         super.onStop()
     }

    override fun onSaveInstanceState(outState: Bundle) {
        outState.putInt("position", currentPosition)
        super.onSaveInstanceState(outState)
    }

}

这将在旋转设备时视频离开的同一点重新启动视频。你可能想看看android上的exoplayer,而不是VideoView。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69932141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档