1

オーディオを備えたアプリケーションを作成しています。私はなんとかオーディオをすることができました。次に、戻るボタンとホームボタンのいずれかを使用してアプリケーションを終了すると、オーディオが停止しないことに気付きます。したがって、私は2種類のコードを挿入しようとしています。まず、

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_HOME && event.getRepeatCount() == 0) {
        // do something on back.
        mp.stop();
       this.finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

第二に:

    @Override       
    protected void onStop() 
    {
        super.onStop();
        // This above line closes the app correctly
       android.os.Process.killProcess(android.os.Process.myPid());
    }

しかし、残念ながら、これらのコードはすべて、ボタンをクリックするとアプリがクラッシュします。上記のコードがなくても、アプリケーションが正常に動作することを確認しました。または、Androidがユーザーがアプリケーションを終了したことを検出したときにメディアプレーヤーを停止するように設定できる他の方法はありますか?

4

4 に答える 4

1

mediaPlayer で stop() を呼び出す直前に onStop() メソッドで実行できます isPlaying() メソッドを使用して、現在再生中かどうかを確認するか、null に対して mp を確認します。

    @Override       
    protected void onStop() 
    {
         super.onStop();

         if (mp.isPLaying()) {
              mp.reset();
          mp.release();
          mp = null;
     }   
    }

これにより、mediaPlayer が停止します。

于 2012-11-07T01:57:13.203 に答える
0

を使用してアクティビティを終了するだけfinish()です。アクティビティに関連付けられているすべてのプロセスを停止します。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_HOME && event.getRepeatCount() == 0) {
        // do something on back.
       this.finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

問題が解決しない場合は、logcat を投稿する必要があるかもしれません。

于 2012-11-07T06:31:17.203 に答える
0

オーディオを停止したい場合は、アクティビティの onStop を呼び出してMediaPlayer#stop()ください。MediaPlayer#release()

于 2012-11-07T07:39:20.263 に答える
-1

私がやった方法は、一時停止メソッドでタイマーを開始することです。タイマーを 0.5 秒などに設定しました。タイマーが期限切れになる前に on resume メソッドが呼び出された場合は、それをキャンセルします (これは、アクティビティからアクティビティに移行することを意味します)。タイマーが期限切れになった場合は、音楽を停止します。これは、アクティビティが家にあることを意味します。これがお役に立てば幸いです。最もクリーンなソリューションではありませんが、作業が最も少なく、新しいアクセス許可は不要であることがわかりました

于 2012-11-07T01:49:54.507 に答える