1. 비디오 재생 주요 순서
1.1 VideoView 클래스 객체를 참조
- VideoView videoView = (VideoView) findViewById(R.id.VideoView);
1.1 비디오 파일 위치 설정
- 예제에서 확인
1.2 비디오 재생 시작
- videoView.start();
2. 비디오 재생중지 주요 순서
2.1 비디오 일시중지
- videoView.pause();
2.2 비디오 중지
- videoView.stopPlayback();
3. 예제
android version = jelly bean
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
public class MyVideoPlayerActivity extends Activity {
public final static String VIDEO_URL = "http://sites.google.com/site/ubiaccessmobile/sample_video.mp4";
public final static int URL = 1;
public final static int SDCARD = 2;
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 영상을 출력하기 위한 비디오뷰
// SurfaceView 를 상속받아 만든클래스이다
// 웬만하면 VideoView는 그때 그때 생성해서 추가 후 사용
// 화면 전환시 여러 UI가 있을때 화면에 제일 먼저 그려져서 보기에 좋지 않을 때가 있다.
// 예제에서 xml 에 추가해서 해보았다.
videoView = (VideoView) findViewById(R.id.VideoView);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
videoView = (VideoView) findViewById(R.id.VideoView);
int type = URL;
switch (type) {
case URL:
// 동영상의 경로가 웹에 있다면 아래와 같이 설정
videoView.setVideoURI(Uri.parse(VIDEO_URL));
break;
case SDCARD:
// 동영상의 경로가 SD Card 에 있다면 아래와 같이 설정
String path = Environment.getExternalStorageDirectory()
+ "/TestVidio6.mp4";
videoView.setVideoPath(path);
break;
}
// 미디어컨트롤러 추가하는부분
MediaController controller = new MediaController(this);
videoView.setMediaController(controller);
// 준비하는 과정을 미리함
videoView.requestFocus();
// 동영상이 재생준비가 완료되엇을떄를 알수있는 리스너 (실제 웹에서 영상을 다운받아 출력할때 많이 사용됨)
videoView.setOnPreparedListener(new OnPreparedListener() {
// 동영상 재생준비가 완료된후 호출되는 메서드
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"동영상이 준비되었습니다.\n'재생' 버튼을 누르세요.", Toast.LENGTH_LONG)
.show();
}
});
// 동영상 재생이 완료된걸 알수있는 리스너
videoView.setOnCompletionListener(new OnCompletionListener() {
// 동영상 재생이 완료된후 호출되는 메서드
public void onCompletion(MediaPlayer player) {
Toast.makeText(getApplicationContext(), "동영상 재생이 완료되었습니다.",
Toast.LENGTH_LONG).show();
}
});
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
playVideo();
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopVideo();
}
});
}
private void playVideo() {
// 비디오를 처음부터 재생할땐 0
videoView.seekTo(0);
// 비디오 재생 시작
videoView.start();
}
private void stopVideo() {
// 비디오 재생 잠시멈춤
videoView.pause();
// 비디오 재생 완전 멈춤
videoView.stopPlayback();
// 예제에선 videoView=null를 해서 단말기에 테스트시 한번밖에 동영상을 재생못합니다.
//videoView = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my_video_player, menu);
return true;
}
}
그대로했는데 재생할 수 없는 동영상입니다 라고 뜨네요.. 해결책이 없을까요?
답글삭제작성자가 댓글을 삭제했습니다.
답글삭제안녕하세요. 혹시 mp4형식 말고 url이나 IP address를 써서 파이카메라로 실행할수있나요
답글삭제