В android мне удалось воспроизвести видео, но медиа-контроллер не отображается. дальнейшее приведено ниже

Ссылка: https://google-developer-training.gitbooks.io/android-developer-advanced-course-practicals/unit-5-advanced-graphics-and-views/lesson-13-media/13-1-p-playing- video-with-videoview / 13-1-p-play-video-with-videoview.html

Я пытался выполнить действия, описанные в справочнике, но медиаплеер не отображается в действии. Итак, как я могу избавиться от этой проблемы?

onCreate Метод:

Здесь я попытался добавить MediaController после получения идентификатора VideoView

mVideoView = findViewById(R.id.video_view);
if (savedInstanceState != null) {
   mCurrentPosition = savedInstanceState.getInt(PLAYBACK_TIME);
}
MediaController mediaController = new MediaController(this);
mediaController.setMediaPlayer(mVideoView);

playing video:

(Здесь метод инициализации видео с использованием соответствующего URI)

private void initializePlayer() {
    Uri videoUri = getMedia(VIDEO_SAMPLE);
    mVideoView.setVideoURI(videoUri);

    if (mCurrentPosition > 0) {
        mVideoView.seekTo(mCurrentPosition);
    } else {
        // Skipping to 1 shows the first frame of the video.
        mVideoView.seekTo(1);
        }
     mVideoView.start();
}


private Uri getMedia(String mediaName) {
   return Uri.parse("android.resource://" + getPackageName() +
                "/raw/" + mediaName);
}
1
0
119
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы неправильно его используете:

Используйте вот так,

mVideoView = findViewById(R.id.video_view);
if (savedInstanceState != null) {
   mCurrentPosition = savedInstanceState.getInt(PLAYBACK_TIME);
}
MediaController mediaController = new MediaController(this);
mVideoView.setMediaController(mediaController); // Change in this line.

Ссылка на кассу: VideoView

как я могу сохранить позицию воспроизведения?

Sagar Chandra Chanda 13.09.2018 21:23

Вы можете получить позицию воспроизведения из mVideoView.getCurrentPosition() и сохранить ее локально или глобально для дальнейшего использования.

Jeel Vankhede 13.09.2018 21:27
Ответ принят как подходящий
package com.example.sagar.videoplay;

import android.net.Uri;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

    private static final String VIDEO_SAMPLE = "demo";
    private VideoView mVideoView;
    private int mCurrentPosition = 0;
    private static final String PLAYBACK_TIME = "play_time";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mVideoView = findViewById(R.id.video_view);
        if (savedInstanceState != null) {
            mCurrentPosition = savedInstanceState.getInt(PLAYBACK_TIME);
        }
        MediaController mediaController = new MediaController(this);
        mVideoView.setMediaController(mediaController);
    }

    //its a method which takes string as a input and return a url
    private Uri getMedia(String mediaName) {
        return Uri.parse("android.resource://" + getPackageName() +
                "/raw/" + mediaName);
    }

    private void initializePlayer() {
        Uri videoUri = getMedia(VIDEO_SAMPLE);
        mVideoView.setVideoURI(videoUri);

        if (mCurrentPosition > 0) {
            mVideoView.seekTo(mCurrentPosition);
        } else {
            // Skipping to 1 shows the first frame of the video.
            mVideoView.seekTo(1);
        }
        mVideoView.start();
    }

    private void releasePlayer() {
        mVideoView.stopPlayback();
    }

    @Override
    protected void onStart() {
        super.onStart();
        initializePlayer();
    }

    @Override
    protected void onStop() {
        super.onStop();
        releasePlayer();
    }

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

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            mVideoView.pause();
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(PLAYBACK_TIME, mVideoView.getCurrentPosition());
    }
}

Другие вопросы по теме