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
}