音楽アプリを作成しています。問題があります。ユーザーが戻る/ホームを押すと、音楽が再生され続けます。
ユーザーがメイン アクティビティに戻り、現在のアクティビティ (音楽の再生) をクリアできるようにするにはどうすればよいですか?
音楽アプリを作成しています。問題があります。ユーザーが戻る/ホームを押すと、音楽が再生され続けます。
ユーザーがメイン アクティビティに戻り、現在のアクティビティ (音楽の再生) をクリアできるようにするにはどうすればよいですか?
そこで音楽をオーバーライドonPause()
または停止する必要があります。onStop()
onWindowsFocusChanged(boolean hasFocus)
メソッドをオーバーライドしてみてください。
Activity の onPause() を使用して、Mediaplayer を停止または一時停止できます。
このように onPause() をオーバーライドします。
@Override
protected void onPause()
{
super.onPause();
if(mediaplayer!=null)
{
mediaplayer.pause();
}
}
もう一度アクティビティに入ったら、次のように onResume() をオーバーライドします。
@Override
protected void onResume() {
super.onResume();
if(mediaplayer!=null)
{
mediaplayer.start();
}
}
ユーザーが戻るボタンをクリックすると、コントロールは次のメソッド内に入ります (このメソッドをコードに挿入します)。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
if (keyCode == KeyEvent.KEYCODE_BACK) {
// code to pause or stop the music!!!!
}
**return false;**
}
onpause と onstart の切り替えが重要 onPause() メソッドは、プレーヤーがこのインスタンスを制御できるようにオーバーライドされます。また、あなたはこれを参照することができます
package org.example.audio;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class AudioDemo extends Activity implements OnClickListener {
private static final String TAG = "AudioDemo";
private static final String isPlaying = "Media is Playing";
private static final String notPlaying = "Media has stopped Playing";
MediaPlayer player;
Button playerButton;
public void onClick(View v) {
Log.d(TAG, "onClick: " + v);
if (v.getId() == R.id.play) {
playPause();
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
player = MediaPlayer.create(this, R.raw.robotrock);
player.setLooping(false); // Set looping
// Get the button from the view
playerButton = (Button) this.findViewById(R.id.play);
playerButton.setText(R.string.stop_label);
playerButton.setOnClickListener(this);
// Begin playing selected media
demoPlay();
// Release media instance to system
player.release();
}
@Override
public void onPause() {
super.onPause();
player.pause();
}
// Initiate media player pause
private void demoPause(){
player.pause();
playerButton.setText(R.string.play_label);
Toast.makeText(this, notPlaying, Toast.LENGTH_LONG).show();
Log.d(TAG, notPlaying);
}
// Initiate playing the media player
private void demoPlay(){
player.start();
playerButton.setText(R.string.stop_label);
Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show();
Log.d(TAG, isPlaying);
}
// Toggle between the play and pause
private void playPause() {
if(player.isPlaying()) {
demoPause();
} else {
demoPlay();
}
}
}