Android MediaPlayer-每当活动实例化时都会创建不需要的新实例
我在一个活动中有一个MediaPlayer,每当用户点击一首特定的歌曲时就会调用它。MediaPlayer播放后,如果用户单击“上一步”,他们可以选择另一首歌曲 问题是,在选择第二首歌曲时,MediaPlayer会再次创建,两首歌曲同时开始播放。我曾尝试在活动开始时使用if MediaPlayer.isplay、MediaPlayer.stop,但一旦用户按下后退并滚动另一首歌曲,MediaPlayer就会停止 代码如下所示。如果您能将答案保持基本,我将不胜感激,因为我对我正在尝试开发的java了解有限 包含MediaPlayer的活动:Android MediaPlayer-每当活动实例化时都会创建不需要的新实例,android,media-player,android-activity,recreate,Android,Media Player,Android Activity,Recreate,我在一个活动中有一个MediaPlayer,每当用户点击一首特定的歌曲时就会调用它。MediaPlayer播放后,如果用户单击“上一步”,他们可以选择另一首歌曲 问题是,在选择第二首歌曲时,MediaPlayer会再次创建,两首歌曲同时开始播放。我曾尝试在活动开始时使用if MediaPlayer.isplay、MediaPlayer.stop,但一旦用户按下后退并滚动另一首歌曲,MediaPlayer就会停止 代码如下所示。如果您能将答案保持基本,我将不胜感激,因为我对我正在尝试开发的java
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();
}
}
}
谢谢你的帮助。
也许你想考虑对MealApple有一个灵活的控制。在任何活动中播放/暂停都很简单。
谢谢您的回答Primož,我需要阅读一些有关服务的内容。实现起来有这么容易吗?你需要做一些阅读,但实际上它很容易在以后实现。这是一个例子;