将第二个MediaPlayer实例附加到SurfaceView(Android姜饼上出错)

将第二个MediaPlayer实例附加到SurfaceView(Android姜饼上出错),android,surfaceview,android-mediaplayer,android-2.3-gingerbread,surfaceholder,Android,Surfaceview,Android Mediaplayer,Android 2.3 Gingerbread,Surfaceholder,关于MediaPlayer与surfaceview的结合,我发现了一个错误: 我在surfaceview中播放一段视频,通过互联网流媒体播放,如下所示: mPreview = (SurfaceView) findViewById(R.id.surface); videoFL = (FrameLayout) findViewById(R.id.videoFL); SurfaceHolder holder = mPreview.getHolder(); holder.

关于MediaPlayer与surfaceview的结合,我发现了一个错误:

我在surfaceview中播放一段视频,通过互联网流媒体播放,如下所示:

    mPreview = (SurfaceView) findViewById(R.id.surface);
    videoFL = (FrameLayout) findViewById(R.id.videoFL);
    SurfaceHolder holder = mPreview.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Lateron我尝试将我的第一个MediaPlayer连接到它:

    MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setDataSource(videos.get(position));
    mediaPlayer.prepareAsync();
    mediaPlayer.setOnBufferingUpdateListener(this);
    mediaPlayer.setOnCompletionListener(this);
    mediaPlayer.setOnPreparedListener(this);
    mediaPlayer.setOnVideoSizeChangedListener(this);
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.setDisplay(holder);
在流式传输第一个视频时,我已经在缓冲第二个视频,以节省用户时间。要将第二个已准备好的MediaPlayer实例附加到我的SurfaceView,我将在旧的版本上执行以下操作:

        mediaPlayer.release();
        mediaPlayer = null;
        ....
        mediaPlayer2.setDisplay(holder);
在ICS和果冻豆上,这个解决方案效果很好,但在姜饼上,它并没有按计划工作。正在播放视频,但未在黑屏上显示,并且仅在视频中某个位置显示一张图片时,我通过以下方式识别:

mediaPlayer2.getCurrentPosition();
我总是能在我的搜索杆上找到正确的位置。我在HTC Wildfire S上试用过

有人能猜出姜饼上为什么会发生这种错误吗

关于,


tsemann

我现在确实将我的版本缩减为一个MediaPlayer,因为正如我在问题中所说的,一些2.x设备确实不具备在同一活动中使用第二个MediaPlayer实例的能力。 所以我总是为即将到来的视频调用-method来重新实例化我的MediaPlayer