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.


    Dateien

    Zitat von androidKani


    Wer programmiert kann scheitern aber wer nicht programmiert der ist schon gescheitert!

    Einmal editiert, zuletzt von androidKani (19. Januar 2015 um 23:30)

  • 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/d/0BxvRbx…iew?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 :/

    :Android:

    4 Mal editiert, zuletzt von Psychosadistic (20. Januar 2015 um 09:27)

  • Sorry war im Urlaub, aber so funktioniert es. Danke für die Mühe:-D

    Zitat von androidKani


    Wer programmiert kann scheitern aber wer nicht programmiert der ist schon gescheitert!

Jetzt mitmachen!

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