2011-05-15 5 views
0

클래스 속성으로 MediaPlayer 객체가 있습니다. 이 같은에 ClickListener미디어 플레이어 정지가 작동하지 않습니다.

 mp = MediaPlayer.create(getApplicationContext(), R.raw.num1); 
    mp.start(); 

가 그럼 난 내 버튼 중 하나에서 그것을 막으려 - -

MediaPlayer mp; 

그때 내에서 onCreate 방법에서 사용

 btnBack = (Button) findViewById(R.id.btn1);  
    btnBack.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      stopSound(); 
      startActivity(new Intent(Five.this, Four.class)); 
      finish(); 

     } 
    }); 
} 

public void stopSound(){ 
    if (mp != null) { 
     mp.release(); 
     mp.stop(); 
    } 
} 

을하지만 정지하지 않습니다 작업.

내가 뭘 잘못하고 있니?

답변

3

이미 MediaPlayer 인스턴스를 출시했습니다. 그것은 사라 졌어요. 놓은 후에는 stop()을 호출 할 수 없습니다. 사운드를 다시 시작하려면 release() 호출을 제거하십시오. MediaPlayer를 파기하려면 (예 : 나중에 MediaPlayer.create()를 사용하여 새 미디어를 만드는 경우) stop() 호출을 제거하십시오. 너는 완전히 this documentation을 철저히 읽어야한다. MediaPlayer 클래스는 꽤 ​​복잡합니다. 여러 가지 상태를 이해하고 특정 방법을 호출 할 수 있는지 여부를 이해해야합니다.

0

당신이 정지

전에 해제 여기에 라이프 사이클 일부 안드로이드 버전, 그냥 몇 가지 것들에 http://developer.android.com/reference/android/media/MediaPlayer.html

+0

좋아요 ... 릴리스 방법을 제거하고 정지를 호출했습니다. 여전히 차이가 없습니다 : ( – nasaa

+0

은 mp null입니다. 유효하지 않은 상태에서 mediaplayer 메소드를 호출하려고하면 예외가 발생합니다. try catch (log.d와 함께 로깅)를 시도하고 logcat에서 결과를 게시하십시오. – ingo

+0

mp 없음 다시 설명하겠습니다. 다음 버튼을 클릭 할 때 mediaplayer를 중지하려고합니다. mp! = null을 확인하고 mp.stop()을 호출하면 작동하지 않습니다. 또한 API 데모에 나와있는 것처럼 onDestroy 메서드에서이 작업을 시도했습니다. ( 바보 같은 일을하고 있다고 확신합니다. – nasaa

2

를 보라 호출 할 수 없습니다, 내가 하나의 응용 프로그램 streamming 라디오에서 유사한 문제가 있었다, 그것은 일 함께 :

try{ 
     if(mp!=null && mp.isPlaying()){ 
      mp.stop(); 
     } 
     mp.release(); 
     mp=null; 
     mp = new MediaPlayer(); //I needed this, maybe you dont hac 
    }catch(Exception e){ 
        e.printStackTrace(); 
     System.out.println("I can't believe you get here !"); 
    } 
+0

any 아이디어는 mp obj를 만드는 데 얼마나 영향을 미칠지 여기에서 말하라. – CoDe

관련 문제