Как приостановить mp3 с помощью медиаплеера в другой деятельности, когда элемент нажимается? - PullRequest
0 голосов
/ 01 октября 2019

я делаю mp3-плеер в автономном режиме, в MainActivity есть список песен, при нажатии на который он отправляет данные песни с намерением PlayActivity. Я хочу, чтобы при нажатии другой песни текущая песня была приостановлена. Что я должен делать? ниже мой код

MainActivity

открытый класс 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();
    }

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете создать отдельный класс синглтонов-помощников для управления вашим музыкальным проигрывателем с помощью некоторого контекстного метода, такого как воспроизведение, пауза, остановка и т. Д.

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);
}
...