Luiz Henrique Ugliano
Luiz Henrique Ugliano

Reputation: 1317

Android MediaPlayer onPause()

I´m a begginer developer for Android and i want to develop a basic app that start music when its opened and stop when its finished (onPause). When i create a method "onPause", my condition "musica.stop();" don´t work.

My code:

import android.media.MediaPlayer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final MediaPlayer mpBtnsom = MediaPlayer.create(this, R.raw.somvoa);
        ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton2);

        MediaPlayer musica = MediaPlayer.create(this, R.raw.sommusica);
        musica.start();
        musica.setLooping(true);

        btn1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpBtnsom.start();
            }
        });
    }

    public void toast2(View view){
        Toast toast = Toast.makeText(MainActivity.this, "Botão ToastMessage", Toast.LENGTH_LONG);
        toast.show();
    }

    public void toast(View view){
        Toast toast = Toast.makeText(MainActivity.this, "Botão Felpudo", Toast.LENGTH_SHORT);
        toast.show();
    }

    protected void onPause(){
        super.onPause();

        musica.stop();
        finish();
    }
}

Upvotes: 0

Views: 386

Answers (1)

Marko
Marko

Reputation: 20513

The problem is that variable musica is not reachable in your onPause() method. You should declare you variable musica for global use in the class like shown below.

public class MainActivity extends ActionBarActivity {

    private MediaPlayer musica;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final MediaPlayer mpBtnsom = MediaPlayer.create(this, R.raw.somvoa);
        ImageButton btn1 = (ImageButton) findViewById(R.id.imageButton2);

        musica = MediaPlayer.create(this, R.raw.sommusica);
        musica.start();
        musica.setLooping(true);

        btn1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpBtnsom.start();
            }
        });
    }

    public void toast2(View view){
        Toast toast = Toast.makeText(MainActivity.this, "Botão ToastMessage", Toast.LENGTH_LONG);
        toast.show();
    }

    public void toast(View view){
        Toast toast = Toast.makeText(MainActivity.this, "Botão Felpudo", Toast.LENGTH_SHORT);
        toast.show();
    }

    @Override
    protected void onPause(){
        super.onPause();

        musica.stop();
        finish();
    }
}

Upvotes: 1

Related Questions