2014-12-25 2 views
0

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

Мой код:

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

@OneWay, я думал, что аннотация не является обязательной, потому что «компиляторы должны генерировать сообщение об ошибке», если определенные условия не были выполнены. – ChiefTwoPencils

ответ

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

, вы должны удалить finish(), если вы не хотите завершить действие. –

+0

Хорошо, его работа !!! Tks много !!!! @Одностороннее движение –

Смежные вопросы