마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MediaRecorder.OnInfoListener 질문드립니다.

+1 추천

dev.android.com 사이트에 보면

http://developer.android.com/reference/android/media/MediaRecorder.OnInfoListener.html

 

Interface definition for a callback to be invoked when an error occurs while recording.

 

레코딩중에 에러 발생 시 호출된다고 하는데,

 

그러면 

MediaRecorder.OnErrorListener

와는 무엇이 다른건가요?

 

정확히 InfoListener는 언제 호출되나요?

 

감사합니다!

apcnic (1,420 포인트) 님이 2013년 6월 10일 질문

2개의 답변

+2 추천
 
채택된 답변

실제로 써본적은 없으나 DOC을 보면

"어플리케이션은 녹음 중 몇 가지 내부 업데이트와 가능 런타임 오류를 알리기 위해,

정보 및 오류 이벤트를 등록 할 수 있습니다. 이러한 이벤트에 대한 등록은 적절한 Listener를

(via calls (setOnInfoListener (OnInfoListener) setOnInfoListener and/or setOnErrorListener (OnErrorListener)

setOnErrorListener)를 설정하여 이루어집니다.

이 Listener에 연결된 각각 콜백을 수신하기 위해서는 어플리케이션이 MediaRecorder 객체를 생성해야합니다

라고 나와있네요. 
 
넘어오는 에러의 종류가 다른 것 같습니다.
Gradler (109,780 포인트) 님이 2013년 6월 10일 답변
apcnic님이 2013년 6월 11일 채택됨
결국 미디어레코더에서 정보요청하는 에러가 발생하면 호출된다는 것인가요?
음.. 밑에 분이 이미 답글을 다셨지만 사족을 조금더 달자면

onInfoListener 쪽에는
* MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED
MAX값으로 정의한 파일 크기이상 녹음이 진행되었을때
발생하는 에러에 대한 상수이구요
* MEDIA_RECORDER_INFO_MAX_DURATION_REACHED
MAX값으로 정의된 길이 이상 녹음이 진행되었을 때
발생하는 에러에 대한 상수입니다.

onErrorListener
MEDIA_ERROR_SERVER_DIED
미디어 서버가 죽었을 때 발생하는 에러에 대한 상수입니다.
이 경우에는 MediaRecorder를 반드시 release() 시킨 후 다시 생성 해야 한다고 나와있네요
+2 추천
해당 기능을 사용해보진 않았지만 콜백되는 상수들을 보면 어느정도 감은 잡을 수 있을것 같습니다.

onInfoListener에서 MEDIA_RECORDER_INFO_UNKNOWN 와

onErrorListener에서 MEDIA_RECORDER_ERROR_UNKNOWN의 값은 1 로 같습니다.

즉 UNKNOWN 에러가 발생했을 때 두개의 리스너에 동시적으로 콜백이 오겠지요.

그 외의 콜백으로는 질문자님이 적어 놓으신 URL에 들어가면 하단 파라미터에 설명이 되어 있습니다.

(에러리스너에는 두개의 에러 콜백, 인포리스너에는 한개의 에러콜백과 두개의 인포콜백이 있는 것 같습니다.)

 

만약 에러발생 시 처리를 해야 한다면 당연히 에러리스너에서 해야겠지요.

추후 유지보수를 위해서나 가독성 및 다른 엔지니어를 배려해서라두요.
그후최초 (2,980 포인트) 님이 2013년 6월 10일 답변
...