0

我想使用 android 中的 Texture 视图从我的 sdcard 中一一播放视频。我正在使用 tetureview bcoz ,我想将视频旋转 90 度。所以我可以通过实现SurfaceTextureListener 接口在设备上播放旋转的视频。

这是代码:

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    root = Environment.getExternalStorageDirectory();
    ArrayList extList = new ArrayList<String>();
    extList.add("mp4");
    extList.add("3gp");
    extList.add("ts");
    extList.add("webm");
    extList.add("mkv");
    Intent intent = getIntent();
    Bundle b = intent.getExtras();
    vFiles = b.getStringArrayList("vFiles");
    System.out.println("VFiles: " + vFiles);
    iterator = vFiles.iterator();
    videoPath = root + "/Video/";

    if (iterator.hasNext()) {
        System.out.println("Inside iterator: .......................................");
        String video = videoPath + iterator.next();

        mMediaPlayer = new MediaPlayer();
        //mMediaPlayer.setDataSource(afd.getFileDescriptor(),
        //  afd.getStartOffset(), afd.getLength());
        mMediaPlayer.setDataSource(video);
        System.out.println("After Datasource: " + video);
        mMediaPlayer.setSurface(sur);
        //  mMediaPlayer.setLooping(true);
        mMediaPlayer.prepareAsync();
        // mMediaPlayer.setOnBufferingUpdateListener((OnBufferingUpdateListener) this);
        mMediaPlayer.setOnPreparedListener(this);
        mMediaPlayer.setOnCompletionListener(this);

        // Play video when the media source is ready for playback.
        mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                //  mediaPlayer.setLooping(true);

                mediaPlayer.start();
            }
        });
    }
}

但是通过这段代码,只有一个视频正在播放,另一个视频没有播放..我想当一个视频完成时,列表中的第二个视频应该播放等等..

我在网上搜索了很多关于这个的......但没有运气......

有人可以帮我解决这个问题吗?

4

1 回答 1

3

onSurfaceTextureAvailable当对象完成播放时不会触发该方法MediaPlayer,它会在 Surface 纹理准备好使用时触发。

您需要实现,一旦播放完成MediaPlayer.OnCompletionListener,该方法就会被触发。onCompletion

播放完第一个视频后,开始播放列表中的下一个视频。

于 2015-09-08T11:04:00.883 回答