Android

Android 비디오 재생하기 ( VideoView)

Machine_웅 2021. 9. 10. 13:56
728x90
반응형
public class Video_Activity extends AppCompatActivity {


    /*
    * 비디오 뷰는 두가지 방법이 있다.
    * 1) MediaPlayer 를 사용 하는 방법.
    * 2) VideoView 를 사용 하는 방법.
    *
    * 아래는  2번 방법으로 구현 해보았다.
    *  동영상이 재생이 안되는 경우는 http -> https 로 바꾼다.
    * */

    VideoView video_view;
    AppCompatButton btn_set;

    // sample 데이터

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

        init();
    }

    void init(){
        video_view = findViewById(R.id.video_view);
        video_view.setOnPreparedListener(preparedListener);
        video_view.setOnErrorListener(errorListener);
        set_video();

        btn_set = findViewById(R.id.btn_set);
        btn_set.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                video_view.seekTo(0);
                video_view.start();
            }
        });

    }

    void set_video(){
        // 로컬 재생
        // Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/sample");

        //  Uri 재생
        String test ="https://sites.google.com/site/ubiaccessmobile/sample_video.mp4";
        Uri uri = Uri.parse(test);
        video_view.setMediaController(new MediaController(this));
        video_view.requestFocus();
        video_view.setVideoURI(uri);
    }

    MediaPlayer.OnPreparedListener preparedListener = new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {

            Toast.makeText(Video_Activity.this,
                    "동영상이 준비되었습니다. \n'시작' 버튼을 누르세요", Toast.LENGTH_SHORT).show();


        }
    };
    MediaPlayer.OnErrorListener errorListener = new MediaPlayer.OnErrorListener() {
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            Log.d("Woongs","what :  " +what );
            Log.d("Woongs","extra :  " +extra );
            return false;
        }
    };
}
728x90
반응형