Audio kann nur zum Teil gestoppt werden

RezaScript

Bekanntes Mitglied
Hallo,

ich habe eine Audio-Datei, die immer wiederholt wird und hierfür verwende ich die MediaPlayer-Klasse. Für die Wiederholung verwende ich nicht mediaPlayer.setLooping(true), sonder setOnCompletionListener(), da ich möchte, dass das Audio erst nach ein paar Sekunden wieder abgespielt wird. Das funktioniert soweit sehr gut aber mein Problem ist der Toggle-Knopf den ich habe. Mit einem Knopf möchte ich also den Sound abspielen und wenn er bereits gespielt wird wieder stoppen.

Java:
public class Scanner {
    public static MediaPlayer mediaPlayer = new MediaPlayer();
    public View mView;
    private Context mContext;
    public boolean status;

    public boolean getStatus() {
        return status;
    }
    public void setStatus(boolean status) {
        this.status = status;
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void toggle(View view, Context context) {
        this.mView = view;
        this.mContext = context;

        Log.d(TAG, "toggle: " + getStatus());

        // Activate the scanner
        if (!mediaPlayer.isPlaying()) {
            this.start();
        }
        // Deactivate the scanner
        else {
            this.stop();
        }

    }

    /**
     * Star the scanner
     */
    @SuppressLint("UseCompatLoadingForColorStateLists")
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void start() {
        if (!mediaPlayer.isPlaying()) {
            mediaPlayer = MediaPlayer.create(mContext, scanner);
            mediaPlayer.setOnPreparedListener(mediaPlayerListener -> mediaPlayer.start());
            int scanTimer = (!Objects.equals(Helper.getSharedPreference(mContext, "scanTimer"), "")) ? Integer.parseInt(Helper.getSharedPreference(mContext,"scanTimer")) * 1000 : 0;
            mediaPlayer.setOnCompletionListener(listener -> Helper.setTimeout(() -> {
               mediaPlayer.start();
            }, scanTimer));

            // View
            mView.setBackgroundTintList(mView.getResources().getColorStateList(R.color.darkRed));
            Snackbar.make(mView, "Scanner is ON", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            setStatus(true);
        }
    }

    /**
     * Stop the scanner
     */
    @SuppressLint("UseCompatLoadingForColorStateLists")
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void stop() {
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mView.setBackgroundTintList(null);
            Snackbar.make(mView, "Scanner is OFF", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            setStatus(false);
        }
    }
}

Die Methode stop() wird also nur ausgeführt, wenn der Sound bereits abgespielt wird. Aber in setOnCompletionListener() habe ich ja noch eine Verzögerung drin. Nachdem der Sound also abgespielt wurde, wird er nach x Sekunden wieder gespielt. Und das versteht meine toggle()-Methode irgendwie nicht so.

Wie bekomme ich es hin, dass der Sound mit oder ohne die Verzögerung gestoppt wird?
 

RezaScript

Bekanntes Mitglied
OK, Problem gelöst. Es war nur eine Frage der Logik. Mit ein paar If-Abfragen mithilfe von getStatus() lässt sich das Problem beheben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
volcanos sun.audio has been removed from Java since JDK 9 Java Basics - Anfänger-Themen 2
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
H Audio in Java Java Basics - Anfänger-Themen 3
J Sharing Audio input Java Basics - Anfänger-Themen 6
S Hilfe bei Audio und zwischenspeicher Java Basics - Anfänger-Themen 5
P Audio Datei abspielen Java Basics - Anfänger-Themen 18
M Audio + Timer Java Basics - Anfänger-Themen 12
S Input/Output audio in Programm einbinden Java Basics - Anfänger-Themen 17
H audio abspielen Java Basics - Anfänger-Themen 19
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
M Volume beim Abspielen von Audio Dateien Java Basics - Anfänger-Themen 2
D audio wiedergabe? Java Basics - Anfänger-Themen 11
X Audio über Mikrofon einlesen Java Basics - Anfänger-Themen 4
S Java Sound mit 24 bit/96 kHz Audio? Java Basics - Anfänger-Themen 12
X Audio: Abspielen eines OutputStreams Java Basics - Anfänger-Themen 4
W Dauer einer Audio-Datei Java Basics - Anfänger-Themen 2
L Audio-Clip rauscht nur Java Basics - Anfänger-Themen 5
G Audio wiedergeben Java Basics - Anfänger-Themen 10
B Audio Signale aufnehmen & Frequenzen mit Amplitude anzei Java Basics - Anfänger-Themen 2
J Audio capturen und über's Netzwerk streamen? Java Basics - Anfänger-Themen 2
M Audio Files mit Base64 De-/Endcodieren Java Basics - Anfänger-Themen 5
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Java Sternchen ausgabe teil 2 Java Basics - Anfänger-Themen 20
G Teil einer String speichern Java Basics - Anfänger-Themen 4
F Abstrakte Klasse doch zum "Teil" instanzieren? Java Basics - Anfänger-Themen 4
F Teil eines Byte Array an eine Methode übergeben Java Basics - Anfänger-Themen 5
J Bestimmter Teil aus Zeichenfolge Java Basics - Anfänger-Themen 2
S Text in einem JLabel nur zum Teil Fett Java Basics - Anfänger-Themen 2
M bestimmten Teil eines Strings entfernen Java Basics - Anfänger-Themen 4
D Wie den HTML-Teil des Chat Tutorials aus dem FAQ-Bereich starten? Java Basics - Anfänger-Themen 5
S Methoden Textdatei Teil String auslesen Java Basics - Anfänger-Themen 3
U Kann man in Java ein Array zum Teil vorbelegen? Java Basics - Anfänger-Themen 4
C bestimmten Teil von string removen Java Basics - Anfänger-Themen 4
C [Sammelthread] Fragen zu Quaxlis Tutorial Teil 1 Java Basics - Anfänger-Themen 8
D p q formel gibt zum Teil falsche Werte aus Java Basics - Anfänger-Themen 5
S Filelist Ausgabe (nur den letzten teil) Java Basics - Anfänger-Themen 8
R Teil eines Strings übertragen Java Basics - Anfänger-Themen 3
C Verzweigung Teil 2 Java Basics - Anfänger-Themen 13
W Datentypen Auswertung von Ausdrücken (Teil 1) Java Basics - Anfänger-Themen 7
2 Mehrfachvergleich Teil von String Java Basics - Anfänger-Themen 5
S Teil derGUI zeigt sich erst später Java Basics - Anfänger-Themen 2
F Teil-Array Java Basics - Anfänger-Themen 15
B Teil eines Bild kopieren bei verschiedenen Zoomstufen Java Basics - Anfänger-Themen 3
C Verstehe Code-Teil nicht. Java Basics - Anfänger-Themen 2
S Passwortgeschützter Text Teil 3 Java Basics - Anfänger-Themen 6
S Passwortgeschützter Text Teil 2 Java Basics - Anfänger-Themen 27
C Teil Problem Java Basics - Anfänger-Themen 11
T Teil eines Strings farbig gestalten Java Basics - Anfänger-Themen 10
G " als Teil von Strings verwenden Java Basics - Anfänger-Themen 9
R Teil eines Arrays übergeben Java Basics - Anfänger-Themen 1
G Teil eines Files einlesen und vergleichen Java Basics - Anfänger-Themen 4
G Teil im Code überspringen. Java Basics - Anfänger-Themen 3
M 2 Fragen: Vergleich, aber wie? Was passiert in diesem Teil? Java Basics - Anfänger-Themen 18
S neuer String zur jedem Teil von List Java Basics - Anfänger-Themen 2
G If-Abfrage, die nur einen Teil eines Strings vergleicht Java Basics - Anfänger-Themen 3
B Frage zum Tutorial "JTable - Teil 5 - Verändern von Dat Java Basics - Anfänger-Themen 6
S Teil eines Strings ermitteln Java Basics - Anfänger-Themen 2
V Teil eines Programms funktioniert einfach nicht Java Basics - Anfänger-Themen 2
G benötige nur einen teil eines strings Java Basics - Anfänger-Themen 7
K Datei lesen und nur zum Teil wieder ausschreiben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben