Я работаю над приложением, которое в основном представляет собой музыкальную библиотеку, и для каждой песни при нажатии кнопки воспроизведение начинается. На данный момент моя библиотека имеет 3 элемента, и я пытаюсь воспроизвести «sound.mp3», который находится в res/raw, для 3 из них (на данный момент).Ошибка в mediaPlayer.create (это, R.raw.sound), когда не в onCreate
Моя проблема в том, когда я пытаюсь ссылаться на клип, у меня есть красное подчеркивание под «this, R.raw.sound». Я видел, что в большинстве случаев «create» вызывается в onCreate, но в моем случае этот класс не работает, поэтому я не могу этого сделать ...
Можете ли вы, ребята, помочь мне с этим? :)
public class ClipsAdapter extends RecyclerView.Adapter<ClipsAdapter.MyViewHolder> {
private final List<Clips> clip2 = Arrays.asList(
new Clips("Clip 1", "Artist 1"),
new Clips("Clip 2", "Artist 2"),
new Clips("Clip 3", "Artist 3")
);
public class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView title;
private final TextView author;
private final ImageView play;
private Clips currentClip;
MediaPlayer mediaPlayer = new MediaPlayer();
public MyViewHolder(final View itemView) {
super(itemView);
title = ((TextView) itemView.findViewById(R.id.title));
author = ((TextView) itemView.findViewById(R.id.author));
play = ((ImageView) itemView.findViewById(R.id.play));
}
public void display(RandomClips RandomClip) {
currentRandomClip = RandomClip;
title.setText(RandomClip.title);
author.setText(RandomClip.author);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Play clip: " + currentClip.title);
mediaPlayer.create(this, R.raw.sound);
if (mediaPlayer.isPlaying())
{
mediaPlayer.stop();
mediaPlayer.reset();
Log.d(TAG, currentRandomClip.title + " has stopped");
}
else
{
mediaPlayer.start();
Log.d(TAG, currentRandomClip.title + " is playing");
}
}
});
}
}
}
Привет Анто! Спасибо за вашу помощь, я смог играть в свою программу без ошибок :) Итак, если я хорошо понимаю, мы используем конструктор для установки текущей активности как активности, в которой будет воспроизводиться звуковой клип. И это необходимо, потому что нам нужна операция для запуска клипа. – Yoan
Я предполагаю, что он работает сейчас, хотя я думаю, что с эмулятором мы не можем играть на самом деле ... Я прав? – Yoan
Рад слышать. вы должны иметь возможность воспроизводить звук с помощью эмулятора. Тогда это другой вопрос. Проверьте, помогает ли это http://stackoverflow.com/questions/5259849/mediaplayer-no-longer-working-on-the-emulator-since-r10/8262747#8262747 – HelloSadness