2019년 3월 14일 목요일

VideoView 기본 예제

- VideoView의 기본 예제
- 플레이, 정지, 구간 스킵의 UI 요소들은 MediaController를 적용하는 예제
- 커스텀 UI로 구현할 경우 MediaController의 코드를 분석한 뒤 구현하는 것을 권장.



1. 기본 소스
- 로드 및 재생
String path = "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4";
VideoView videoView = findViewById(R.id.videoView);
videoView.setVideoPath(path);
videoView.setMediaController(new MediaController(videoView.getContext()));
videoView.start();

> 기본 MediaController를 적용하면 현재포지션과 재생과 구간 스킵은 간편함.
> 커스텀 UI를 구현할 때 MediaController 소스를 참고해서 구현하는 것을 권장함.


- 포지션 이동
VideoView videoView = findViewById(R.id.videoView);
videoView.resume();
if (currentPosition > 0)
videoView.seekTo(currentPosition);


- 일지정지
VideoView videoView = findViewById(R.id.videoView);
if (videoView.canPause()) {
currentPosition = videoView.getCurrentPosition();
videoView.pause();
}

> VideoView는 resume될 때 현재 진행된 포지션을 유지하지 못한다.
> 실시간 스트리밍을 구현하는 경우가 아니면 currentPosition을 알고 있어야 한다.


- 정지
VideoView videoView = findViewById(R.id.videoView);
videoView.stopPlayback();


- Activity 예제
public class MainActivity extends AppCompatActivity {

    private int currentPosition;

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

        String path = "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4";
        VideoView videoView = findViewById(R.id.videoView);
        videoView.setVideoPath(path);
        videoView.setMediaController(new MediaController(videoView.getContext()));
        videoView.start();
    }

    @Override
    protected void onResume() {
        super.onResume();
        VideoView videoView = findViewById(R.id.videoView);
        videoView.resume();
        if (currentPosition > 0)
            videoView.seekTo(currentPosition);
    }

    @Override
    protected void onPause() {
        VideoView videoView = findViewById(R.id.videoView);
        if (videoView.canPause()) {
            currentPosition = videoView.getCurrentPosition();
            videoView.pause();
        }
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        VideoView videoView = findViewById(R.id.videoView);
        videoView.stopPlayback();
        super.onDestroy();
    }
}


> 사용된 MP4 소스 :
https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4






2. 샘플코드
소스코드
APK


댓글 없음:

댓글 쓰기