Hilfe bei Mediaplayer funktionen

  • Hallo,
    hoffe mir kann hier jemand helfen.
    Mein Ziel ist es zwei Sounds gleichzeitig wiederzugeben.


    Ich habe zwei Switch Button.
    myswitch1 und myswitch2


    Schalte ich den ersten Button an wird ein Sound wiedergegeben mit einer Loop Schleife
    Beim zweiten Button genau so .


    Schalte ich den Button aus wird der Sound angehalten.
    Bis hier hin klappt alles perfekt mit der if else anweisung.
    Mein Problem ist es wenn beide an sind und ich ein ausschalte, wird der Sound nicht beendet .
    Schalte ich den Button wieder an . Habe ich Plötzlich drei Sounds da der eine nicht ausgegangen ist.
    Habe es mit allen mp funktionen versucht es will einfach nicht funktioneren.
    Hier mein Code :
    public Switch mySwitch1, mySwitch2;
    MediaPlayer mp;


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


    mySwitch1 = (Switch) findViewById(R.id.switch1);
    mySwitch2 = (Switch) findViewById(R.id.switch2);


    //set the switch to ON
    mySwitch1.setChecked(false);
    //attach a listener to check for changes in state
    mySwitch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {


    @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {


    if(isChecked){
    mySwitch1.setChecked(true);
    mp = MediaPlayer.create(MainActivity.this, R.raw.hallo);
    mp.setLooping(true);
    mp.start();




    }else{
    mySwitch1.setChecked(false);
    mp.stop();


    }


    }
    });
    //set the switch to ON
    mySwitch2.setChecked(false);
    //attach a listener to check for changes in state
    mySwitch2.setOnCheckedChangeListener(new OnCheckedChangeListener() {


    @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {


    if(isChecked){
    mySwitch2.setChecked(true);
    mp = MediaPlayer.create(MainActivity.this, R.raw.beep);
    mp.setLooping(true);
    mp.start();





    }else{
    mySwitch2.setChecked(false);
    mp.stop();


    }


    }
    });


    }
    }



    Gruß Stephan

  • Hi,


    du hast isChecked nicht vorher initialiesiert, deswegen ist es imme true und das führt dazu, dass der Else-Zweig nicht ausgeführt wird.
    Ich würde mir eine zusätzliche globale Variable definieren. Die isChecked immer mit dem aktuellen Zustand initialisiert.


    Gruß,


    Kani

    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!