2011-10-05 7 views
0

안녕하세요 저는 android dev에 새로 태어났습니다. Eclipse를 사용 중이며 일부 사운드 보드를 개발했습니다. 내 문제는 이것이다 :전화 할 때 Android 앱이 다운 됨

public class BernardsActivity extends Activity { 

    MediaPlayer eileanBeag; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.bernards_layout); 

     Button eileanBeagButton = (Button) findViewById(R.id.ButtonB1); 

     eileanBeagButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       eileanBeag = MediaPlayer.create(getApplicationContext(), R.raw.eilean_beag); 
       eileanBeag.start(); 
      }  
     }); 

    ***public void onPause() { 
     eileanBeag.release();     
    }***  
} 

응용 프로그램이 잘 작동, 모든 오디오가 잘 재생,하지만 난 뒤로 버튼을 사용하여 응용 프로그램을 떠날 때, 그것은 프로세스가 예기치 않게 중지가 내가 강제 종료한다는 것을 알려줍니다.

onCreate 메서드 외부에서 MediaPlayer를 정의 할 때 메서드가 제대로 작동하지만 많은 소리를 사용하고로드 시간을 줄이려면 버튼을 눌렀을 때만 정의하면됩니다.

나는 OnCompleteListener를 사용해 보았지만 작동하는 것처럼 보이지만, 내 사운드 클립을 일찍 끊어 버립니다.

이렇게 어떤 도움을 주시면 대단히 감사하겠습니다.

감사합니다.

+0

추가하려고 캐치 블록을하고있다 예외의 종류를 알아보십시오 – Sergey

답변

3

문제처럼 보인다있는 유일한 방법은, 의 내부에 첫 번째 문으로 super.onPause()를 호출해야합니다. 게임을 할 때 플레이어를 직접 해제 할 수는 없습니다. 또한이 super.onPause();

0

당신은 당신이 eileanBeag.stop();를 호출해야 eileanBeag.release();를 호출하기 전에 onPause 방법

2

누락은 다음과 같이해야합니다 :

public void onPause() { 
    super.onPause(); 
    eileanBeag.pause(); 
} 

protected void onDestroy() { 
    super.onDestroy(); 
    if(eileanBeag != null) { 
     eileanBeag.stop(); 
     eileanBeag.release(); 
    } 
} 
관련 문제