![](/img/trans.png)
[英]How to pass raw mp3 from recyclerview item to another activity
[英]how to pause mp3 using mediaplayer in another activity when an item is clicked?
我正在離線制作 mp3 播放器,在 MainActivity 中有一個歌曲列表,當單擊一個項目時,它會將歌曲數據發送到 PlayActivity。 我想在單擊另一首歌曲時暫停當前歌曲。 我應該怎么辦? 下面是我的代碼
MainActivity
公共 class MainActivity 擴展 AppCompatActivity {
//deklarasi variabel -->
MediaPlayer mediaPlayer;
ListView listView;
final String[] song_name = { "intuisi", "krisis solusi" };
final int[] ResID = {R.raw.intuisi, R.raw.krisis};
ImageView img_play;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//inisialisasi variabel
mediaPlayer = new MediaPlayer();
listView = findViewById(R.id.list_item);
//make adapter for listview
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, song_name);
listView.setAdapter(adapter);
//onClick item
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
playSong(i);
}
});
}
private void playSong(int songIndex) {
//send song data to playActivity
Intent intent = new Intent(MainActivity.this, Play.class);
intent.putExtra("song", ResID[songIndex]);
startActivity(intent);
}
PlayActivity
int Nama = getIntent().getIntExtra("song",0);
mediaPlayer = MediaPlayer.create(getApplicationContext(), Nama);
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
} else {
mediaPlayer.start();
}
您可以創建一個單獨的 singleton 助手 class 以使用一些上下文方法(如播放、暫停、停止等)來處理您的音樂播放器。
public class MusicHelper {
private static MusicHelper instance;
MediaPlayer mPlayer;
private MusicHelper() {
instance = new MusicHelper();
}
public static MusicHelper getInstance() {
return instance;
}
public void init(Context ctx, int nama) {
mPlayer = MediaPlayer.create(getApplicationContext(), nama);
}
public void play() {
if (mPlayer != null && !mPlayer.isPlaying()) {
mPlayer.start();
}
}
public void pause() {
if (mPlayer!= null && mPlayer.isPlaying()) {
mPlayer.pause();
}
}
}
然后在你的 PlayActivity 中,
MusicHelper musicHelper = MusicHelper.getInstance();
musicHelper.init(getApplicationContext(), Nama);
musicHelper.play();
單擊另一個項目時,再次獲取幫助程序實例並調用暫停。
private void playSong(int songIndex) {
MusicHelper musicHelper = MusicHelper.getInstance();
musicHelper.pause();
Intent intent = new Intent(MainActivity.this, Play.class);
intent.putExtra("song", ResID[songIndex]);
startActivity(intent);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.