0

こんにちは、私は android dev の初心者です。Eclipse を使用しており、いくつかのサウンドボードを開発しています。私の問題はこれです:

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 を使用してみましたが、動作しているように見えますが、サウンド クリップが早く途切れてしまいます。

したがって、これに関するヘルプは非常に高く評価されます。

ありがとう。

4

3 に答える 3

3

問題のように見える唯一のことは、呼び出す前に を呼び出す eileanBeag.release();必要があることですeileanBeag.stop();。プレイ中にプレイヤーを直接解放することはできません。あなたも行方不明super.onPause();

于 2011-10-05T13:09:48.427 に答える
2

次のようになります。

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

protected void onDestroy() {
    super.onDestroy();
    if(eileanBeag != null) {
        eileanBeag.stop();  
        eileanBeag.release();
    }
}
于 2011-10-05T13:11:03.490 に答える
0

メソッドsuper.onPause()内の最初のステートメントとして呼び出す必要がありますonPause

于 2011-10-05T13:08:35.207 に答える