Mediaplayer stoppt nach ein paar sekunden wenn man einen button drückt.

  • Hi,


    ich programmiere schon seit längerem aber erst seit kurzem mit GUI und anderen Elementen die ich einbinden kann.
    Ich habe mir ein Programm geschrieben, welches mit einer Hintergrundmusik startet. Zuerst wird ein Lied einmal abgespielt und danach wird ein zweites Lied in einer Endlosschleife gespielt.
    Außerdem hat mein Programm einen Button. Jedesmal wenn ich diesen betätige wird ein neues Bild angezeigt.
    Mein Problem ist nun, dass das titelLied1 abbricht wenn ich mehrmals auf den Button drücke. Manchmal sogar schon beim ersten drücken. Wenn ich das Programm bis zum titelLied2 laufen lasse und dann den Button drücke, dann funktioniert alles so wie es soll.


    Meine Frage ist: Was mache ich falsch und was hat der Button mit dem mediaPlayer zu tun. Das sind doch zwei voneinander unabhängige Dinge?!
    Ich habe den Code als .txt angehangen weil bei mir der Code ohne Zeilenumbruch kopiert wird.




  • Hier kannst du die notwendigen Dateien herunterladen, einfach per Import als Projekt hinzufügen - als RAR-Archiv gepackt mit dem Passwort: ez6nxhab
    https://drive.google.com/file/…JMzVGSk0/view?usp=sharing


    Hier erfolgt nur eine kleine Erklärung! :)


    So. Ich habe mir das fix aus deiner Vorlage selbst zusammengebastelt - es funktionert bei mir einwandfrei.



    Anstelle der ganzen if-Abfragen, solltest du ruhig switch-case nutzen. Dies funktioniert so:



    Je nachdem, was die Funktion verlangt, in der switch-case genutzt wird, wird anstelle des "breaks" ein "return WERT" genutzt. In diesem Fall gibt es keinen Rückgabewert (void).
    Das "default" beschreibt, was passieren soll, wenn keiner der o.g. Fälle zutrifft - hier in diesem Fall kannst du es einfach hinschreiben oder weglassen - bei größeren Projekten sollte man bei der Nutzung dessen einen Ausgangspunkt setzen, der allgemein gehalten sein sollte. :)

    Momentan spielt er nur die Musik nach Start der App bzw. nach Aufruf der Activity ab. Um einen neuen Song zu starten, reicht es auch aus Folgendes aufzurufen:


    Java
    mediaPlayer = MediaPlayer.create(this, R.raw.theme_2);
    // neuen Song gewählt
    mediaPlayer.setLooping(true);                                                   
    // dein Loop :P
    mediaPlayer.start();                                                                    
    // Start des neuen Songs - der davor wird automatisch abgebrochen


    Etwas Einfacheres (Logischeres vielleicht auch) habe ich nicht finden können. Oder du nutzt weiterhin dein setNextMediaPlayer:

    Java
    mediaPlayer.setNextMediaPlayer(MediaPlayer.create(this, R.raw.theme_2)); //oder du kreierst einen neuen MediaPlayer, wie du es bei dir gemacht hast


    Du solltest Bezeichnungen in der "strings.xml" festlegen, so z.B. auch die Bezeichnung des Buttons.


    strings.xml

    HTML
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
    
        <string name="app_name">MediaPlayer</string>
        <string name="next_pic">Nächstes Bild</string>
        <string name="action_settings">Settings</string>
    
    
    </resources>


    activity_main.xml


    ___________________________________________


    Im Endeffekt glaube ich, dass es an deiner Initialisierung zweier MediaPlayer liegt - dazu kann ich aber nicht viel sagen :/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!