본문 바로가기
실시간TV∴영화∴드라마∴예능

[안드로이드] 미디어플레이어 에러 대처하기 (-38, -19)

반응형

error (-38, 0)


미디어 플레이어가 준비 되지 않았는데 시작 하게 되면 발생하는 에러다.

즉, 준비 리스너를 달고 난 뒤 준비가 끝났다는 이벤트가 오면 시작 시키도록 하자.


                mPlayer.prepareAsync();

                mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                    public void onPrepared(MediaPlayer mp) {                        

                        mp.start();

                    }

                });


그러나,

위와 같이 하면 또.. -38이 날 확률이 높다.

                mPlayer.prepareAsync();


아래와 같이 코드를 리스너 밑으로 달자. 그래야 확실하게... 준비 된 사수로 부터 발사를 할 수 있다..... 

                mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                    public void onPrepared(MediaPlayer mp) {                        

                        mp.start();

                    }

                });

    mPlayer.prepareAsync();



Error (-19,0)

종료 후 릴리즈를 하지 않아서 발생하는 문제다.
즉, 종료 시점을 리스너로 달아서 확실하게 릴리즈 하도록 한다.

                mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                    public void onCompletion(MediaPlayer mp) {

                        try{

                            mp.release();

                        }catch(Exception e){

                            e.printStackTrace();

                        }

                    }

                });



그리고, 항상 에러 리스너를 달아서 에러 나면 아래와 같이 필요한 작업들을 꼭 하도록 해야, 다음 번 작업에 영향을 미치지 않는다.


mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {

                    public boolean onError(MediaPlayer mp, int what, int extra) {

                        try {

                            mp.stop();

                            mp.release();

                        } catch (Exception e) {

                            e.printStackTrace();

                        }

                        return true;

                    }

                });

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.