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.