2013-07-14 35 views
1

我正在製作一個應用程序,每個活動都有自己的聲音。 我的問題是,即使用戶離開活動(去另一個活動或按回或主頁鍵)聲音仍在播放即使用戶轉到另一個Android活動,聲音播放

這裏是我的代碼...

import android.graphics.Typeface; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageButton; 
import android.widget.SeekBar; 
import android.widget.TextView; 
import android.widget.SeekBar.OnSeekBarChangeListener; 


    public class MainActivity extends Activity implements Runnable, OnClickListener, OnSeekBarChangeListener{ 
     private SeekBar seekBar; 
     private ImageButton startMedia; 
     private ImageButton pauseMedia; 
     private MediaPlayer mp; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main);    

      TextView title1 = (TextView) findViewById(R.id.title1); 
      TextView tx1 = (TextView) findViewById(R.id.textView1); 
      Typeface font = Typeface.createFromAsset(getAssets(), "font.ttf"); 
      title1.setTypeface(font); 
      tx1.setTypeface(font); 

      AudioControl();  



     } 



     public void AudioControl(){ 
      seekBar = (SeekBar) findViewById(R.id.seekBarnew2); 
      startMedia = (ImageButton) findViewById(R.id.playbuttonnew2); 
      pauseMedia = (ImageButton) findViewById(R.id.pausebuttonnew2); 
      seekBar.setOnSeekBarChangeListener(this); 
      startMedia.setOnClickListener(this); 
      pauseMedia.setOnClickListener(this); 
     } 



     public void run() { 
      int currentPosition= 0; 
      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); 
      } 
     } 

     public void onClick(View v) { 
      pauseMedia.setVisibility(View.VISIBLE); 
      seekBar.setVisibility(View.VISIBLE); 
      if (v.equals(startMedia)) { 
       if (mp != null && mp.isPlaying()) return; 
       if(seekBar.getProgress() > 0) { 
        mp.start(); 
        return; 
       } 
       mp = MediaPlayer.create(MainActivity.this, R.raw.lone); 
       mp.start();      
       seekBar.setProgress(0); 
       seekBar.setMax(mp.getDuration()); 
       new Thread(this).start(); 
      } 
      if (v.equals(pauseMedia) && mp!=null) { 
       mp.pause(); 
       pauseMedia.setVisibility(View.INVISIBLE); 
      }  

     } 

     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     public void onStopTrackingTouch(SeekBar seekBar) { 
     } 

     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 
      if(fromUser) mp.seekTo(progress); 

     } 


    } 

回答

2

覆蓋的方法的onStop只要您的活動變得隱藏或銷燬,並停止播放的聲音將被調用。

public void onStop() { 
    super.onStop(); 
    mp.stop(); 
} 
0

使用此功能

public void onDestroy() { 

      mp.stop(); 
      super.onDestroy(); 

     }