2015-03-11 3 views
-1

Я использую кнопку переключения для воспроизведения аудиофайла. Когда я проверил кнопку переключения, приложение воспроизводило музыку. Когда музыка закончится, я хочу, чтобы она автоматически отключила кнопку переключения. Как я могу сделать ? Это мое музицирование методы:Как отключить кнопку переключения при остановке музыки?

MediaPlayer mp = null; 
protected void playmusic(String theText) { 
    if (mp != null) { 
     mp.reset(); 
     mp.release(); 
    } 
    if (theText.length() > 2) { 

     mp = MediaPlayer.create(this, Uri.parse(theText)); 
    } else { mp = MediaPlayer.create(this, R.drawable.afart11); 
    } 
    mp.start(); 
} 

И это моя кнопка переключения:

tg = (ToggleButton) findViewById(R.id.toggleButton1); 
    tg.setOnClickListener(this); 
... 
... 
case R.id.toggleButton1: 
     if (tg.isChecked()) { 
      playmusic(Setting.set); 
      else { 
      mp.stop(); 
     } 
+0

Surely MediaPlayer предоставляет метод, который знает, когда песня остановилась. – Mathemats

ответ

2

установить onCompletionListener в MediaPlayer

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){ 
    @Override 
    public void onCompletion(MediaPlayer mp){ 
     tg.setChecked(false); 
    } 
}); 
+0

Я поместил весь ваш код в метод oncreate() и получил ошибку: ** Метод setOnCompletionListener (MediaPlayer.OnCompletionListener) в типе MediaPlayer не применим для аргументов (новый OnCompletionListener() {}) ** –

+0

и эта ошибка в строке «onCompletion (MediaPlayer mp)»: ** Метод onCompletion (MediaPlayer) типа new OnCompletionListener() {} должен переопределить или реализовать метод супертипа **. Где я могу положить его –

+0

i import android.media.MediaPlayer.OnCompletionListener; то эта ошибка исчезает, но приложение не может работать –

1

OnCompletionListener Реализовать и вызвать mp.setOnCompletionListener(this). Метод обратного вызова onCompletion(MediaPlayer mp) вызывается, когда песня закончена.

public class YourActivity extends Activity implements OnCompletionListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //media player code 
     mp.setOnCompletionListener(this); 
    } 

    @Override 
    public void onCompletion(MediaPlayer mp) { 
     //your code when song completes 
    } 

} 
+0

Thank. но может ли ты показать мне больше деталей, я новый парень в андроиде. –

+0

Спасибо большое. Я сделал это. –

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