open coding

open coding. 안드로이드 스튜디오 비디오 재생하기 기본/mediaPlayer with surfaceView

◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧ ♣ ⊙e 2021. 1. 15. 01:02
반응형

 

비디오(mediaPlayer)는 화면 제일 위에 띄어져야 해서, SurfaceView 이용함.

 

 

package com.www.video;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;

public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {
                                        //video(mediaplayer)를 제일위에 띄워야하니 SurfaceView 이용예정.
    //define variables
    private SurfaceView surfaceView;
    private MediaPlayer video;

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

        //video 설정 instantiation
        video = MediaPlayer.create(this, R.raw.video);

        //surfaceView 설정
        surfaceView = findViewById(R.id.surfaceView);
        surfaceView.setKeepScreenOn(true);      //비디오 재생시, surfaceView screen On 상태

        SurfaceHolder holder = surfaceView.getHolder(); //스크린서 제일 위로
        holder.addCallback(this);               //register holder
        holder.setFixedSize(400,300);


    }//finish

 //button클릭시 비디오 재생 -> onclik도 설정
    public void btnMethod(View view){
        video.start();
    }

//button클릭시 비디오 정지 -> onclik도 설정
    public void btn2Method(View view){
        video.pause();
    }

//button클릭시 비디오 skip -> onclik도 설정
    public void btn3Method(View view){
        video.seekTo(video.getDuration() / 2); // 걍 스킵시 비디오 중간지점으로

    }


//surfaceHolder implement된것들

    @Override
    public void surfaceCreated(@NonNull SurfaceHolder holder) {
        video.setDisplay(holder);       //video, surface hoolder 연결 create

        //video.start();      //여기다 start 설정하면,
                            // surfaceView 나옴과 동시에 비디오도 바로 재생됨.(버튼안누르고)

    }

    @Override
    public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
            //change configuration 가능.
    }


//destory 설정 : 앱 끄면 비디오도 꺼짐
    @Override
    protected void onPause() {
        super.onPause();

        if(video != null){
            video.pause();
            video.release();    //정지 후 끄면
            video = null;   // 비디오는 null인걸로.
        }
    }//finish


}