Android MediaPlayer onPause()

Я начинаю разработчик Android, и я хочу разработать базовое приложение, которое запускает музыку, когда она будет открыта и остановится, когда закончится (onPause). Когда я создаю метод "onPause", мое состояние "musica.stop();" не работаю.

Мой код:

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(); }
}
1 ответ

Проблема в том, что переменная musica недоступна в вашем методе onPause(). Вы должны объявить переменную musica для глобального использования в классе, как показано ниже.

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(); }
}

licensed under cc by-sa 3.0 with attribution.