Audio wird nur 1 Mal abgespielt

RezaScript

Bekanntes Mitglied
Hallo, ich habe eine Klasse die Tts heisst und darin soll eine Audio-Datei abgespielt werden, also so:
Java:
MediaPlayer mediaPlayer = new MediaPlayer();
String myFile = context.getFilesDir() + "/output.mp3";
mediaPlayer.setDataSource(myFile);
mediaPlayer.prepare();
mediaPlayer.start();

Ich habe in der App mehrere Knöpfe. Wenn ich auf einen Knopf drücke, wird das Audio abgespielt, was gut ist. Aber ich möchte nicht, dass während ein Audio abgespielt wird, ein anderer Knopf gedrückt wird. Also gleichzeitige Audios möchte ich vermeiden.

Das Problem ist mir aber bewusst. Ich weiss also, dass jedes Mal, wenn ich auf einen Knopf drücke, MediaPlayer() erneut initialisiert wird. Somit habe ich MediaPlayer() in der Klasse Tts als Eigenschaft und im Konstruktor aufgenommen, also so:

Java:
private final MediaPlayer _mediaPlayer;

public Tts(Context context, MediaPlayer _mediaPlayer) {
    this.context = context;
    this._mediaPlayer = _mediaPlayer;
}

In der Klasse MainActivity habe ich ebenfalls MediaPlayer als Eigenschaft definiert, also so:
Java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private final MediaPlayer _mediaPlayer = new MediaPlayer();

Und sobald ein Knopf gedrückt wird, initialisiere ich die Klasse Tts und rufe die Methdode (say()) auf. Also so:
Java:
public void onClick(View view) {
    Tts tts = new Tts(this, _mediaPlayer);
    tts:say();
Also somit ist mein Ziel zwar erreicht, dass die Audios nicht gleichzeitig abgespielt werden sollten aber das Problem ist, dass das Audio nun nur 1 Mal abgespielt wird und nicht mehr. D.h. auch wenn es bereits abgespielt wurde und ich im Nachhinein auf einen oder denselben Knopf drücke, wird es nicht mehr abgespielt.

Ich denke ich habe irgendwo ein Problem mit der Logik. Liegt es daran, dass ich MediaPlayer als Eigenschaft in MainActivity habe? Wenn ja, wie wäre es denn korrekt?
 

Robertop

Bekanntes Mitglied
Hallo RezaScript,

dass ich was mit dem MediaPlayer gemacht habe ist schon länger her. Aber ich habe mal in ein altes Projekt von mir geguckt und dort gesehen, dass ich meinen MediaPlayer auch in der MainActivity habe, ihn aber so initialisiere:
Code:
mediaPlayer = MediaPlayer.create(context, uri);
// URI der Audiodatei
Dieses "prepare" habe ich damals anscheinend gar nicht verwendet. Was ich aber auch noch im selben Projekt gefunden habe, ist das hier, um zurück an den Start zu kommen:
Code:
mediaPlayer.seekTo(0);

Ich hoffe, das hilft der vielleicht irgendwie weiter. :)
 
K

kneitzel

Gast
Also das wird hier etwas behandelt:

In Kurz: Ruf das prepare() erneut auf, wenn du es erneut abspielen willst und es schon in den stop Staus gegangen ist.
So lange er am spielen ist, kannst Du seekTo(0) aufrufen, um an den Anfang zu kommen. (Das geht aber nicht, wenn es bereits im STOP Zustand ist!)

Wenn Du aber die Musik / den Sound in einer Endlosschleife haben willst, dann reicht auch ein setLooping(true)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Android Audio-Datei fliessend vorspulen Android & Cross-Platform Mobile Apps 9
R Audio-Datei abspielen Android & Cross-Platform Mobile Apps 3
G Android Audio "abgreifen" Android & Cross-Platform Mobile Apps 9
W Reward Ads AdMob wird nicht ausgeliefert. Android & Cross-Platform Mobile Apps 9
J Spinner wird nicht aktualisiert Android & Cross-Platform Mobile Apps 6
Naxon89 Duplicate class kotlin - und dies ohne das es angewendet wird Android & Cross-Platform Mobile Apps 1
ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 4
W Bildschirm Nutzung Überwachen der App Nutzer ink. was angeklickt wird Android & Cross-Platform Mobile Apps 35
N XY-Plottet keine Daten obwohl Funktion ausgeführt wird Android & Cross-Platform Mobile Apps 4
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
R Android Do not disturb: Sound wird nicht abgespielt Android & Cross-Platform Mobile Apps 2
O Google Admob Ad wird nicht geladen und App stürzt ab Android & Cross-Platform Mobile Apps 1
M Paper DB wird in Android Studio nicht erkannt Android & Cross-Platform Mobile Apps 7
A GraphView => X- und Y-Achse wird nicht angezeigt Android & Cross-Platform Mobile Apps 5
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
Arif Android Radiobutton wird nicht deaktiviert Android & Cross-Platform Mobile Apps 1
Arif Android Canvas wird nicht gezeichnet? Android & Cross-Platform Mobile Apps 0
J Notification wird nicht angezeigt wenn App nicht offen ist. Android & Cross-Platform Mobile Apps 6
M TypedArray-Resource wird falsch geladen Android & Cross-Platform Mobile Apps 7
W Preview wird nicht korrekt angezeigt Android & Cross-Platform Mobile Apps 0
B Profilpic wird nach anmeldung nicht angezeigt. Android & Cross-Platform Mobile Apps 2
K Methode wird nicht gefunden Android & Cross-Platform Mobile Apps 1
J Kamera - Foto wird nicht gespeichert Android & Cross-Platform Mobile Apps 2
V Android Wird mein Vorhaben funktionieren? (Apk Datei decompilieren, bearbeiten, compilieren) Android & Cross-Platform Mobile Apps 2
G App wird nach Installation auf Smartphone beendet Android & Cross-Platform Mobile Apps 1
L Dialog anzeigen wenn auf Button gedrückt wird. Android & Cross-Platform Mobile Apps 4
S Android neue Version des Programms wird nicht in Emulator geladen Android & Cross-Platform Mobile Apps 1
O Android Switch Widget wird nicht angezeigt Android & Cross-Platform Mobile Apps 1
M Android ListView wird nicht dargestellt Android & Cross-Platform Mobile Apps 2
N PriceScannerApp: warum wird nach dem Scannen Display gleich schwarz? Android & Cross-Platform Mobile Apps 4
P Herausfinden, welches Fragment gerade angezeigt wird. Android & Cross-Platform Mobile Apps 1
M Android Nur erste Zeile wird vom Server empfangen Android & Cross-Platform Mobile Apps 0
A App wird bei start des Timers beendet Android & Cross-Platform Mobile Apps 1
A Wieso wird die App beendet ??? Android & Cross-Platform Mobile Apps 2
B Alle Daten gehen verloren, wenn die Displaysperre aktiviert wird? Android & Cross-Platform Mobile Apps 21
P trotz invalidate() wird onDraw() nicht aufgerufen Android & Cross-Platform Mobile Apps 15
W XML Layout: wann wird geladen? Android & Cross-Platform Mobile Apps 10
K Android Temperaturconverter, R.id.element wird nicht gefunden Android & Cross-Platform Mobile Apps 20
A onDraw wird nicht aufgerufen Android & Cross-Platform Mobile Apps 14
A Android Dialog wird nicht sofort angezeigt Android & Cross-Platform Mobile Apps 12
W ImageView wird nicht angezeigt Android & Cross-Platform Mobile Apps 19
T Android: ListView-Adapter: Adapter wird ständig aufgerufen Android & Cross-Platform Mobile Apps 2
F Android Datenbank upgrade wird nicht durchgeführt Android & Cross-Platform Mobile Apps 2
F Android R.raw wird nicht gefunden Android & Cross-Platform Mobile Apps 5
P ID wird nicht erzeugt Android & Cross-Platform Mobile Apps 2
C Problem Device/Emulator wird nicht erkannt Android & Cross-Platform Mobile Apps 3
R Zeichen-Codierung in (SMS) TextMessage, "_" wird § Android & Cross-Platform Mobile Apps 2
R NUR Audios von der App sollen abgespielt werden und nichts anders Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben