0

戻るボタンまたは戻るボタンを押したときに音声を停止したい

public class buttonFour extends Activity{ 

    MediaPlayer mp;

    @Override 
    public void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button4);

        MediaPlayer mp = MediaPlayer.create(this, R.raw.song);
        mp.start(); 
    }
}

私は以下を試しました:

@Override 
public void onPause () {
    if (mp != null){
        mp.pause();
        mp.stop();   
    }   
    super.onPause(); 
}

でも音楽は流れ続ける

4

3 に答える 3

2

MediaPlayer参照をグローバル参照にします。

次にオーバーライドonBackPressed()

public class buttonFour extends Activity {
MediaPlayer mp;
    @Override
    public void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button4);

        mp = MediaPlayer.create(this, R.raw.song);
        mp.start();
    }
}

@Override
public void onBackPressed ()
{
  if (mp != null)
    mp.stop();
  super.onBackPressed();
}

編集します。上記は機能するはずですが、機能しない場合は、次のように試すことができます。

@Override
public void onPause ()
{
  if (mp != null)
  {
    mp.pause();
    mp.stop();
  }
  super.onPause();
}

ただし、このコードは、アクティビティが画面から消えると、または回転が変更されると再生を停止します。

于 2012-12-17T15:30:25.130 に答える
1

内部で別のローカルMediaPlayerオブジェクトを初期化しているため、インスタンス変数が初期化されたり、一時停止されたりすることはありません。mponCreate()

次の行を置き換えて、インスタンス変数を使用するだけです。

MediaPlayer mp = MediaPlayer.create(this, R.raw.song);

mp = MediaPlayer.create(this, R.raw.song);
于 2012-12-17T19:25:17.623 に答える
0

オブジェクトをグローバルにしようとしていMediaPlayerます...これはGlobalMediaPlayerオブジェクトで機能します。

その後

mp.stop();
于 2013-03-22T12:01:57.070 に答える