Anfänger MediaPlayer Start Stop

N

N3cron

Fortgeschrittenes Mitglied
1
Hallo zusammen. Bin mit meiner 2.ten app dran, und es möchte nicht klappen.
Ich hoffe, es wird mir nochmals so gut geholfen wie bei der 1ten.
Also. Ich habe/versuche eine art soundpack zu erstellen.
Die einzelnen Sounds sollen per Button gestartet werden, und 1 Button für Stop.
Folgende Probleme habe ich.

Kann die im moment nur 2 Sounds starten, welche überlagert dann abgespielt werden.

Stop button reagiert garnicht. Benutze dafür den mp.stop(); befehl.

Für mir unverständlich, da es mit dem Start button ja genauso funktioniert.

Waere schoen wenn ihr mir den oder die gefundenen Fehler ein wenig erklaeren koenntet.

Ich stelle zuerst einmal nur die Java rein. Denke es besteht nur darin der Fehler.

Danke


HTML:
package com.example.xxxxxxx;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public MediaPlayer mp;
    Button start, stop, start2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start = (Button) findViewById(R.id.start);
        start2 = (Button) findViewById(R.id.start2);
        stop = (Button) findViewById(R.id.stop);

        start.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                MediaPlayer mp = MediaPlayer.create(getApplicationContext(),
                        R.raw.e1m3);

                mp.start();

            }

        });
        
        start2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                MediaPlayer mp = MediaPlayer.create(getApplicationContext(),
                        R.raw.e1m4);

                mp.start();

            }

        });
        
        
        stop.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mp!=null && mp.isPlaying()){
                    mp.stop();
                }
            }
        });
    }
}
 
Zuletzt bearbeitet:
Du erstellst gerade für jeden Sound einen eigenen MediaPlayer.

Stop wird nicht aufgerufen, da du die Membervariable mp nie setzt (also null ist)
Deine verwendeten Variablen zum starten des Players sind lokale Variablen, keine Member

Code:
    public MediaPlayer _mp1, _mp2;
    Button start, stop, start2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start = (Button) findViewById(R.id.start);
        start2 = (Button) findViewById(R.id.start2);
        stop = (Button) findViewById(R.id.stop);

        start.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                _mp1 = MediaPlayer.create(getApplicationContext(),
                        R.raw.e1m3);

                _mp1 .start();

            }

        });
        
        start2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                _mp2 = MediaPlayer.create(getApplicationContext(),
                        R.raw.e1m4);

                _mp2.start();

            }

        });
        
        
        stop.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(_mp1!=null && _mp1.isPlaying()){
                    _mp1.stop();
                }
            }
        });
    }
 
Hi. Danke für deine Aussage. Ich sehe meinen Fehler!
Ein rat und schon kann es weiter gehen. Danke.

Könntest du mir nur deinen Satz mit dem "Stop" erklaeren?

Habe schon mehrere seiten durch bezüglich tutorial usw.
Viele benutzen aber wieder ne andere Richtung an Befehlen.
 
In deinem Quellcode wurden 3 verschiedene Variablen namens "mp" angelegt. 2 lokale Variablen in den ClickListenern und eine Membervariable im Klassenkopf.

Da die Variable im Klassenkopf an keiner Stelle beschrieben wird, ist sie null.

Um das Besser sehen zu können, benennt man Membervariablen immer anders als lokale.

Ich persönlich mache einen "_" vor den Variablennamen um erkennen zu können, dass es sich um einen Member handelt. Andere (und so auch z.B. Google) schreiben ein "m" vor die Variable.
Bsp: "mVariable" oder "_variable"
 
  • Danke
Reaktionen: N3cron
Alles klar. Gerafft. Sowas nenne ich Hilfe. Da macht das lernen Spass. Bin noch Anfänger und suche schon was laenger meine Fehler.

Danke!
 

Ähnliche Themen

D
Antworten
17
Aufrufe
408
datNeMo
D
Laser5001
  • Laser5001
Antworten
2
Aufrufe
900
Laser5001
Laser5001
Hansimglueck0815
Antworten
0
Aufrufe
733
Hansimglueck0815
Hansimglueck0815
Zurück
Oben Unten