21
ANDROID

Android M ultimedia

  • Upload
    elaina

  • View
    82

  • Download
    0

Embed Size (px)

DESCRIPTION

Android M ultimedia. 임 배 현. ANDROID. I ndex. 오디오 녹음. 비디오 녹화. 자유 과제. Q & A. 인텐트를 사용하여 오디오 녹음하기 MediaRecorder 를 사용하여 오디오 녹음하기. ANDROID. 오디오 녹음하기. ANDROID. 안드로이드에서의 오디오 녹음 방법 두 가지. 인텐트를 사용하여서 전용 애플리케이션에 오디오를 녹음해 달라고 요청할 수 있다 . - PowerPoint PPT Presentation

Citation preview

Page 1: Android M ultimedia

AndroidMultimedia

임 배 현

Page 2: Android M ultimedia

Index오디오 녹음

비디오 녹화

자유 과제

Q & A

1. 인텐트를 사용하여 오디오 녹음하기2. MediaRecorder 를 사용하여 오디오 녹음하기

Page 3: Android M ultimedia

오디오 녹음하기

Page 4: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

1. 인텐트를 사용하여서 전용 애플리케이션에 오디오를 녹음해 달라고 요청할 수 있다 .2. 애플리케이션에서 직접 Media Recorder class 를 사용하여서 오디오를 녹음할 수 있다 .

안드로이드에서의 오디오 녹음 방법 두 가지

Page 5: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

오디오를 녹음하는 컴포넌트를 불러내는 인텐트는 다음과 같다 .

1. 인텐트를 사용하여 오디오 녹음하기

여기서 한가지 주의할 사항은 오직 3GPP 형식으로만 녹음이 가능하다 .즉 우리가 많이 사용하는 MP3 형식으로는 녹음할 수 없다 . MP3 는 엔코딩하는 데 많은 시간을 소모하기 때문이다 .

오디오 녹음을 하기 위해서는 메니페스트 파일에 다음과 같은 퍼미션을 선언하여야 한다 .

Page 6: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

버튼이 클릭되면 지정된 경로에 있는 오디오를 재생한다 .

버튼이 클릭되면 오디오 녹음을 인텐트를 통하여 요청한다 .

엑티비티를 시작하고 결과를 돌려받겠다고 지정한다 .

Page 7: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

만약 인텐트를 사용하지 않고 직접 녹음을 담당하는 액티비티를 작성하고 싶으면 Media Recorder 클래스를 사용하면 된다 . 안드로이드에서 오디오를 녹음하는 대략적인 절차는 다음과 같다 .

2. Media Recorder 를 사용해서 오디오 녹음하기

MediaRecorder recorder = new MediaRecorder();

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

Recorder.setOutputFile(PATH_NAME);

Recorder.prepare();

Recorder.start();…Recorder.stop();

Recorder.reset();

Recorder.release();

MediaRecorder 의 객체를 생성한다 .

오디오 소스를 설정한다 .출력 파일 형식을 설정한다 .

엔코더를 설정한다 .

데이터가 저장될 파일경로를 생성한다 .

MediaRecorder 객체의 prepare() 를 호출한다 .녹음시작

setAudioSource() 단계로 돌아가면 객체를 재사용할 수 있다 .객체가 소멸된다 . 재사용은 불가능하다 .

Page 8: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

파일 이름을 생성한다 .

음악 재생을 위하여 Me-diaPlayer 의 객체를 생성한다 .

음악 재생을 시작한다 .

음악 재생을 중지하고 버튼의 텍스트를 “재생 시작”으로 변경한다 .

Page 9: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

MediaPlayer 의 객체를 생성한다 .

녹음 준비 단계에서는 예외가 발생할 수 있다 .

녹음을 시작한다 .

음악 재생과 녹음을 모두 중지한다 .

Page 10: Android M ultimedia

비디오 녹화하기

Page 11: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

안드로이드에서의 비디오 녹화 방법Media Recorder class 는 오디오와 비디오 녹화하는 데 사용된다 .비디오 녹화를 설정하는 데 필요한 메소드는 다음과 같다 . 이들 메소드는 아래의 순서대로 호출되어야 한다 .메소드 설명setVideoSource() 이 메소드는 녹화에 사용되는 비디오 소스를 선택한다 . 즉 Camera 가 아니면 De-

fault 중에서 선택한다 . 만약 이 메소드가 호출되지 않으면 출력 파일은 비디오트랙을 포함하지 않는다 .

setOutputFormat() 이 메소드는 녹화 때 생성되는 출력 파일의 형식을 설정한다 . 이 메소드는 setAu-dioSource()/setVideoSource() 메소드 이후에 호출해야 한다 . 그러나 pre-pare() 메소드 전에 { 는 반드시 호출되어야 한다 .

setVideoEncode() 이 메소드는 녹화할 때 사용되는 비디오 엔코더를 설정한다 . 만약 이 메소드가 호출되지 않으면 출력 파일은 비디오 트랙을 포함하지 않는다 . 이 메소드는 setOutputFormat() 후에 , prepare() 전에 호출되어야 한다 .

setOutputFile 이 메소드는 출력 파일의 경로를 설정한다 . 이 메소드는 setOutputFormat() 후에 , prepare() 전에 호출되어야 한다 .

setPreviewDisplay 녹화되는 비디오의 프리뷰를 보이기 위한 서비스를 설정한다 . 이 메소드는 원하는 프리뷰 디스플레이를 설정하기 위하여 prepare() 전에 호출되어야 한다 .

Prepare() 비디오를 캡처하고 엔코딩하기 위하여 레코더를 준비한다 . 이 메소드는 원하는 오디오나 비디오 소스나 엔코더 , 파일 형식 등을 설정한 후에 호출되어야 한다 . 그러나 start() 전에는 반드시 호출 되어야 한다 .

Start() 비디오를 캡처하고 엔코딩하여서 파일에 저장한다 . setOutpuyFile() 로 지정된 파일에 저장한다 . Prepare() 후에 이 메소드를 호출한다 .

Page 12: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

서피스 뷰를 제어한다 .

카메라에서 출력되는 영상을 제대로 표시하기 위하여 다음과 같은 문장을 사용하여서 액티비티가 가로보기 상태로 실행되도록 하였다 .

비디오 뷰를 찾아서 현재 객체를 홀더로 지정한다 .

외부 ( 인터넷 , sd 카드 ) 에서 동영상을 재생할 때 .

Page 13: Android M ultimedia

미디어 레코더의 비디오 녹화 관련 속성 지정

미디어 레코더 객체 생성

녹화 시작 버튼이 눌러지면

Q & A자유 과제비디오 녹화하기오디오 녹음하기

Page 14: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

재생시작 버튼이 눌러지면

녹화된 파일을 불러서 비디오 재생을 시작한다 .

비디오 재생을 중지한다 .

Page 15: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

동영상 녹화 실행

Page 16: Android M ultimedia

자유 과제

Page 17: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

프로그레스 바를 이용한 녹음기 구현프로그레스 바 처리를 위해 만든 핸들러는 안드로이드에서 쓰레드를 구현하는데 많이 쓰이는 기능이다 .

startRec() 에서 핸들러 호출 핸들러에서 판단 멈춤

Page 18: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

녹음시간이 음수이면 정지버튼을 눌러 정지시켰음을 의미하므로 SeekBar 는 그대로 정지시키고 레코더를 정지시킨다 .

녹음시간이 아직 최대녹음제한시간보다 작으면 녹음중이라는 의미이므로 SeekBar 의 위치를 옮겨주고 0.1 초 후에 다시 체크하도록 한다 .

녹음시간이 최대 녹음제한 시간보다 크면 녹음을 정지 시킨다 .

SeekBar 의 상태를 0.1 초 후 체크 시작

Page 19: Android M ultimedia

Q & A자유 과제비디오 녹화하기오디오 녹음하기

실행 결과

Page 20: Android M ultimedia

Q&A

Page 21: Android M ultimedia

Thank you