development

Android : Mediaplayer가 처리되지 않은 이벤트로 사라졌습니다.

big-blog 2020. 12. 13. 10:12
반응형

Android : Mediaplayer가 처리되지 않은 이벤트로 사라졌습니다.


앱에서 재생해야하는 일련의 음성 안내를 위해 오디오 파일의 길이를 가져와야합니다. 오디오 파일을 리소스로 추가했으며 제대로 재생됩니다. 아래 샘플 코드는 실제로 의도 된 목적에 완벽하게 작동합니다. 오디오 파일의 길이를 반환합니다.

다음은 코드입니다.

float getDurationOfAudioResource(LocationEnum loc, Context context){
    float  duration = 0;
    try {
        MediaPlayer mp; 
        mp = MediaPlayer.create(context, getAudioResource(loc));
        duration = mp.getDuration();
        mp.release();
        mp = null;
    }
    catch (IllegalStateException e) {e.printStackTrace(); logError(25, "TestDescItem:Fault::Could not open mediaplayer object with audio resource.");} 
    return duration;
}

여기에 이상한 점이 있습니다. 이 코드는 주어진 테스트에 대한 오디오 지침 세트를 준비하는 Main 활동에서 호출됩니다. 이 활동에는 오류가 없습니다. 그러나 두 번째 활동이 호출 되 자마자 logcat에 긴 오류 문자열이 표시됩니다.

03-07 13:23:43.820: I/ActionLogger(21435): GenTest_Info_Test #0 successfully created.
03-07 13:23:43.830: I/ActionLogger(21435): GenTest_Info_Test #1 successfully created.
03-07 13:23:43.840: I/ActionLogger(21435): GenTest_Info_Test #2 successfully created.
03-07 13:23:43.850: I/ActionLogger(21435): GenTest_Info_Test #3 successfully created.
<snip>
03-07 13:23:43.910: I/ActionLogger(21435): GenTest_Info_all tests successfully created.
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.270: W/MediaPlayer(21435): mediaplayer went away with unhandled events
<snip>

Main 활동의 끝 (오류 없음)과 두 번째 활동의 첫 번째 줄까지 한 단계 씩 이동했습니다. 오류는 확실히 활동 사이에 발생합니다.
또한 try 블록의 8 줄을 주석 처리하면 (따라서 0 만 반환 됨) logcat 오류가 방지됩니다. 여덟 줄을 복원하면 오류가 다시 발생합니다. 문서를 파고 웹을 검색했는데 미디어 플레이어 개체를 올바르게 구성, 해제 및 파괴하고 있다고 믿기 때문에 오류가 발생하는 이유를 알 수 없습니다. 즉, 내가 뭔가 잘못하고있는 것 같습니다. 어떤 아이디어?

감사,

케빈


그냥 mp.reset();앞에 넣어 mp.release();.


거룩한 다섯 :

    if(mp!=null) {
        if(mp.isPlaying())
            mp.stop();
        mp.reset();
        mp.release();
        mp=null;
    }

참고 URL : https://stackoverflow.com/questions/9609479/android-mediaplayer-went-away-with-unhandled-events

반응형