ユーザーが特定の曲をクリックするたびに呼び出されるアクティビティ内にMediaPlayerがあります。MediaPlayerの再生中に、ユーザーがクリックして戻ると、別の曲を選択できます。
問題は、2番目の曲を選択すると、MediaPlayerが再度作成され、2つの曲が同時に再生を開始することです。アクティビティの最初に「ifMediaPlayer.isplaying、MediaPlayer.stop」を使用してみましたが、ユーザーが押し戻して別の曲をスクロールするとすぐにMediaPlayerが停止します。
コードを以下に示します。私はJava(私が開発しようとしているものです!)についての理解が限られているので、あなたの答えを基本的に保つことができれば幸いです。
MediaPlayerを含むアクティビティ:
package music.tabber;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
public class MusicPlayer extends Activity {
private ImageButton playButton;
private TextView songTitleLabel;
private TextView songArtistLabel;
private MediaPlayer mediaPlayer = new MediaPlayer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playing);
Bundle extras = getIntent().getExtras();
String songPath = extras.getString("songPath");
String songTitle = extras.getString("songTitle");
String songArtist = extras.getString("songArtist");
playButton = (ImageButton) findViewById(R.id.playButton);
songTitleLabel = (TextView) findViewById(R.id.songTitleLabel);
songArtistLabel = (TextView) findViewById(R.id.songArtistLabel);
playSong(songPath);
songArtistLabel.setText(songArtist);
songTitleLabel.setText(songTitle);
playButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if(mediaPlayer.isPlaying()){
if(mediaPlayer!=null){
mediaPlayer.pause();
playButton.setImageResource(R.drawable.ic_play);
}
}else{
if(mediaPlayer!=null){
mediaPlayer.start();
playButton.setImageResource(R.drawable.ic_pause);
}
}
}
});
}
private void playSong(String songPath) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(songPath);
mediaPlayer.prepare();
mediaPlayer.start();
// Changing Button Image to pause image
playButton.setImageResource(R.drawable.ic_pause);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ご協力いただきありがとうございます。