Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android SurfaceView视频重叠_Java_Android_Surfaceview_Android Mediaplayer_Android Videoview - Fatal编程技术网

Java Android SurfaceView视频重叠

Java Android SurfaceView视频重叠,java,android,surfaceview,android-mediaplayer,android-videoview,Java,Android,Surfaceview,Android Mediaplayer,Android Videoview,在我的应用程序中,我使用SurfaceView显示本地视频。然而,我在切换视频时注意到一个奇怪(罕见)的错误:它们都重叠 截图: 有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。(没有音频) 我该如何解决这个问题? 我以前使用过VideoView,但仍然存在这个问题。每次打开新视频时,我的视频片段都会被重新创建。我试图在片段的onPause()中发布视频,但仍然没有成功 @Override public void onPause() { super.onPause();

在我的应用程序中,我使用SurfaceView显示本地视频。然而,我在切换视频时注意到一个奇怪(罕见)的错误:它们都重叠

截图:

有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。(没有音频)

我该如何解决这个问题? 我以前使用过VideoView,但仍然存在这个问题。每次打开新视频时,我的视频片段都会被重新创建。我试图在片段的onPause()中发布视频,但仍然没有成功

@Override
public void onPause()
{
    super.onPause();

    if (player != null && Video.getDownloaded())
    {
        if(player.isPlaying())
            player.stop();

        controller.hide();
        player.release();
    }
}
提前感谢,


~Pkmmte-Xeleon

简单地说,
SurfaceView
是一个奇怪的“小部件”。小心对待他们

尝试重新组织您的UI,使其具有单个
SurfaceView
(或者
VideoView
,如果您回滚到该视图)。例如,可以将其固定在操作栏选项卡下方,将其余内容放在其下方的片段中。在选项卡更改时,更新视频并替换主片段


或者,如果您只支持API级别14+,请尝试使用
TextureView

我使用surfaceView作为视频表面或在表面上绘制一些东西。 当我非常快地切换活动时,例如切换到活动B并非常快地切换回,会有两个曲面重叠

dumpsys SurfaceFlinger,输出中有两个surfaceview

我试图修改surfaceflinger,当destroy surface调用时,即使它与layerbase分离,也要销毁它


这个问题也就解决了。

你是如何在视频之间切换的?您是否只有一个
SurfaceView
(正确答案)或您是否试图拥有多个
SurfaceView
(错误答案)?我初始化一个新片段以替换当前片段。我只有一个SurfaceView。由于只有一个
SurfaceView
不能重叠,显然您必须有多个。您是否正在交换片段,每个片段都有一个
SurfaceView
?是的,我正在交换片段,每个片段都有一个SurfaceView。谢谢,您的第一个建议似乎奏效了!不过,我想尝试一下TextureView。直到现在我还没有听说过它,但我找不到与mMediaPlayer.setSurface()等效的(我现在有一个SurfaceTexture,而不是Surface或SurfaceHolder)@Pkmmte:@commonware您好,在我的情况下,我以实时壁纸的形式播放视频,并在应用程序中以片段的形式播放视频…所以在出现视频片段之前,先显示BG(实时壁纸),然后开始播放视频…这里有任何建议。