gpt4 book ai didi

android - 重新创建 surfaceview 时可以重新启动媒体播放器吗? (安卓)

转载 作者:行者123 更新时间:2023-11-29 02:15:38 24 4
gpt4 key购买 nike

我有一个 Activity (比如 Activity A),它使用媒体播放器显示视频,在表面 View 中呈现。
用例是暂停视频,开始另一个 Activity (例如 Activity B),然后返回 Activity A。
Activity A 在转到 B 时停止但没有销毁,这很好。
表面 View (因为不可见)被破坏(从通知回调中观察到)。
当返回 Activity A 并使用 start() 重新启动媒体播放器时,媒体播放器会播放音频,但看不到视频。像这样的错误在 Logcat 上输出:

11-16 18:14:44.532: ERROR/Overlay(8630): Error = Invalid argument from qbuf

不幸的是,使用 surfaceCreated() 提供的 SurfaceHolder 的新实例没有帮助(即提供相同的错误)。

我在各种帖子中读到一个解决方案是重置 mediaplayer 并完全重新启动它,但是它效率不高,因为最终用户必须等待整个播放器准备好 cycle + seekTo 流中的最后位置n。

正如音频播放的事实所示,这应该是视频解码器和新的 surfaceholder/view 之间的管道问题。

恢复 Activity 时恢复视频播放的最佳解决方案(最佳 = 最快)应该是什么?

最佳答案

Android 4下是可以的(抱歉,我只有2.3和4.0,3.0我没测试)。当您使用 Surface 和 mediaplayer 时,您不能为 mediaplayer 更改 surface。 videoview 也是如此。

如果您打印日志,您会发现当您从其他应用程序返回时,surfaceview 被销毁并重新创建。

在 Android 4.0 中,您可以更改媒体播放器的表面或表面支架。

关于android - 重新创建 surfaceview 时可以重新启动媒体播放器吗? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com