2016-03-16 5 views
1

У меня проблема с моим медиаплеером и активностью. Когда я пытаюсь нажать кнопку «Назад», воспроизведение звука не прекратится. Пожалуйста, помогите мне решить эту проблему.Как остановить воспроизведение звука при нажатии кнопки «Назад»?

Я использую Android Studio версии 1.5

Вот мой код:

public class DoaBangunTidur extends ActionBarActivity implements Runnable, View.OnClickListener, SeekBar.OnSeekBarChangeListener { 

    private SeekBar seekBar; 
    private Button startMedia; 
    private Button stopMedia; 
    private MediaPlayer mp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_doa_bangun_tidur); 
     seekBar = (SeekBar) findViewById(R.id.seekBar4); 
     startMedia = (Button) findViewById(R.id.button10); 
     stopMedia = (Button) findViewById(R.id.button11); 
     startMedia.setOnClickListener(this); 
     stopMedia.setOnClickListener(this); 
     seekBar.setOnSeekBarChangeListener(this); 
     seekBar.setEnabled(false); 
     setTitle("Doa Bangun Tidur"); 
    } 
    public void run() { 
     int currentPosition = mp.getCurrentPosition(); 
     int total = mp.getDuration(); 

     while (mp != null && currentPosition < total) { 
      try { 
       Thread.sleep(1000); 
       currentPosition = mp.getCurrentPosition(); 
      } catch (InterruptedException e) { 
       return; 
      } catch (Exception e) { 
       return; 
      } 
      seekBar.setProgress(currentPosition); 
     } 
    } 
    //---> Button ditekan 
    public void onClick(View v) { 
     if (v.equals(startMedia)) { 
      if (mp == null) { 
       mp = MediaPlayer.create(getApplicationContext(), R.raw.selepastidur); 
       seekBar.setEnabled(true); 
      } 
      if (mp.isPlaying()) { 
       mp.pause(); 
       mp.release(); 

      } else { 
       mp.start(); 
       seekBar.setMax(mp.getDuration()); 
       new Thread(this).start(); 
      } 
     } 

     if (v.equals(stopMedia) && mp != null) { 
      if (mp.isPlaying() || mp.getDuration() > 0) { 
       mp.stop(); 
       mp = null; 
       seekBar.setProgress(0); 
      } 
     } 
    } 

    public void onProgressChanged(SeekBar seekBar, int progress, 
            boolean fromUser) { 
     try { 
      if (mp.isPlaying() || mp != null) { 
       if (fromUser) 
        mp.seekTo(progress); 
      } else if (mp == null) { 
       Toast.makeText(getApplicationContext(), "Media is not running", 
         Toast.LENGTH_SHORT).show(); 
       seekBar.setProgress(0); 
      } 
     } catch (Exception e) { 
      Log.e("seek bar", "" + e); 
      seekBar.setEnabled(false); 

     } 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 
    public void text_doasebelumtidur(View view) { 
     AlertDialog.Builder text = new AlertDialog.Builder(this); 
     text.setMessage("bismillaahir rahmaanir rahiim. bismi kallaahumma ahyaa wa amuut.") 
       .create(); 
     text.show(); 
    } 
    //--->> Action Bar 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.activity_main_actions, menu); 

     return super.onCreateOptionsMenu(menu); 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.tentangaplikasi: 
       // about apps 
       MA(); 
       return true; 
      case R.id.maklumbalas: 
       // feedback 
       MB(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
    private void MA() { 
     Intent a = new Intent(this, MengenaiAplikasi.class); 
     startActivity(a); 
    } 
    private void MB() { 
     Intent b = new Intent(this, MaklumBalas.class); 
     startActivity(b); 
    } 
} 
+0

использовать @Override onBackPress() –

+0

Старого вопрос .search на #Google –

ответ

0

Вы можете переопределить onBackPressed(), чтобы получить уведомление, когда пользователь нажал кнопку назад. Не забудьте позвонить super.onBackPressed(), иначе ваш Activity останется на экране. Обычно это не то, чего ожидает пользователь.

@Override 
public void onBackPressed() { 
    if (mp.isPlaying()) { 
     mp.stop(); 
    } 
    super.onBackPressed(); 
} 
0

Попробуйте

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     if (mp.isPlaying()) { 
     mp.stop(); // or mp.pause(); 
     mp.release(); 
     } 
    } 

это остановит аудио.

Надеется, что это поможет вам

+0

, какая часть можно вставить этот код? Нужно ли мне менять код? Прости. –

+0

Нет, вам не нужно менять код, просто скопируйте его и вставьте в свой класс активности. @ idisaянujaи – RushDroid

+0

Большое спасибо. это работает. извините за мой старый вопрос. Все еще учусь (Y) –

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