簡體   English   中英

單擊項目時,如何在另一個活動中使用媒體播放器暫停 mp3?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM