【问题标题】:MediaPlayer setLooping(true) doesn't workMediaPlayer setLooping(true) 不起作用
【发布时间】:2016-03-21 15:03:03
【问题描述】:

我使用 MediaPlayer 来显示视频。我需要循环它。我使用本机方法 setLooping(),但它不起作用。视频完成,仅此而已。这是我的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_full_screen);

        TextureView videoViewFullScreen = (TextureView) findViewById(R.id.video_screen);

        path = getIntent().getExtras().getString(SettingsActivity.FILE_PATH);
        cycle = getIntent().getExtras().getBoolean(SettingsActivity.CYCLE);

        position = getIntent().getIntExtra(FullScreenActivity.POSITION, -1);

        videoViewFullScreen.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
            @Override
            public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {

                final Surface surf = new Surface(surface);
                try {
                    mediaPlayerFullScreen = new MediaPlayer();
                    mediaPlayerFullScreen.setDataSource(path);
                    mediaPlayerFullScreen.setSurface(surf);
                    if (cycle) {
                        mediaPlayerFullScreen.setLooping(true);
                    }

                    mediaPlayerFullScreen.prepareAsync();

                    mediaPlayerFullScreen.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            if (position != -1) {
                                Log.d("Position", "Position Full " + position);
                                mediaPlayerFullScreen.seekTo(position);
                            }

                            mediaPlayer.start();
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
            }

            @Override
            public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
                mediaPlayerFullScreen.stop();
                mediaPlayerFullScreen.release();
                mediaPlayerFullScreen = null;
                return true;
            }

            @Override
            public void onSurfaceTextureUpdated(SurfaceTexture surface) {
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mediaPlayerFullScreen != null) {
            mediaPlayerFullScreen.stop();
            mediaPlayerFullScreen.release();
            mediaPlayerFullScreen = null;
        }
    }

我查看了所有类似的问题并尝试了所有在此处找到的答案,但没有一个对我有帮助。 我有 Android 版本 4.4.2、固件版本 4.5、内核版本 3.3.0 有人可以帮助我吗?还有其他方法可以循环播放视频吗?

【问题讨论】:

    标签: android android-mediaplayer textureview


    【解决方案1】:

    我找到了 setLooping(true) 的替代品,这对我有用:

                        mediaPlayerFullScreen.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            mediaPlayerFullScreen.reset();
                            try {
                                mediaPlayerFullScreen.setDataSource(path);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            mediaPlayerFullScreen.setSurface(surf);
                            mediaPlayerFullScreen.prepareAsync();
    
                            mediaPlayerFullScreen.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                @Override
                                public void onPrepared(MediaPlayer mediaPlayer) {
                                    mediaPlayer.start();
                                }
                            });
                        }
                    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多