2013-07-14 7 views
1

나는 모든 활동에 고유 한 소리가있는 앱을 만들고 있습니다. 내 문제는 심지어 사용자가 activiy을 떠나기도합니다 (다른 activiy로 이동하거나 뒤로 또는 홈 키를 누르십시오) 소리가 여전히 재생 중입니다. 여기사용자가 다른 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

재정 활동 숨기거나 파괴와 재생의 사운드를 중지된다 때마다 호출되는 이동 중지하는 방법.

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

이 기능을 사용

public void onDestroy() { 

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

     }