Ich arbeite an einer App, die im Grunde eine Musikbibliothek ist und für jeden Song, wenn Sie Taste play drücken, beginnt der Song zu spielen. Im Moment hat meine Bibliothek 3 Elemente und ich versuche, "sound.mp3" zu spielen, was für die 3 von ihnen (im Moment) in res/roh ist.Fehler mit mediaPlayer.create (dies, R.raw.sound) wenn nicht in onCreate
Mein Problem ist, wenn ich versuche, den Clip zu referenzieren, habe ich eine rote Unterstreichung unter "this, R.raw.sound". Ich habe gesehen, dass in den meisten Fällen "create" in onCreate aufgerufen wird, aber in meinem Fall ist diese Klasse in keiner Aktivität, also kann ich das nicht tun ...
Können Sie mir dabei helfen? :)
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");
}
}
});
}
}
}
Hallo Anto! Danke für Ihre Hilfe, ich konnte mein Programm ohne Fehler spielen :) Wenn ich das gut verstehe, verwenden wir einen Konstruktor, um die aktuelle Aktivität als die Aktivität festzulegen, in der der Soundclip abgespielt wird. Und das ist notwendig, weil wir eine Aktivität brauchen, um den Clip zu starten. – Yoan
Ich denke, es funktioniert jetzt, obwohl ich denke, dass wir mit einem Emulator nicht wirklich Sound spielen können ... Habe ich recht? – Yoan
Gut zu hören. Sie sollten in der Lage sein, Sound mit Emulator zu spielen. Dann ist das eine andere Frage. Überprüfen Sie, ob dies http://stackoverflow.com/questions/5259849/mediaplayer-no-long-working-on-the-emulator-since-r10/8262747#8262747 hilft – HelloSadness