2011-08-22 169 views
1

我是新的android和我有另一個(簡單?)的問題。我不知道如何阻止媒體播放器。這是我的簡單代碼:停止媒體播放器

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view); 
     MediaPlayer mp; 
     mp = MediaPlayer.create(this, R.raw.sauronsound); 
     mp.setLooping(false); 
     mp.start(); 
    @Override 
    protected void onDestroy() 
{ 

    // Stop play 
     super.onDestroy(); 
     mp.stop(); 
    } 
     } 

按下後退按鈕應用程序進入我的第一個活動,但聲音已打開。當我離開一個應用程序它也是。我應該怎麼做才能關閉聲音?

一如既往地因爲我可憐的英語。

我解決了這個問題,謝謝你們。工作代碼:

public class SauronEye extends Activity { 
    private MediaPlayer mp; 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view); 
     mp = MediaPlayer.create(this, R.raw.sound); 
     mp.setLooping(false); 
     mp.start(); 


    // Get instance of Vibrator from current Context 
     Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
     v.vibrate(10000); 
     } 
@Override 
    protected void onStop() 
{ 
    // Stop play 
    super.onStop(); 
    mp.stop(); 
} 
    } 

它是否正確(它的工作原理)?感謝你們對我的幫助。

回答

2

mp您在onDestroy上使用的引用與您在onCreate上使用的引用不同。將MediaPlayer mp;行移到onCreate類之外。

+0

謝謝:)你是正確的... – jundymek

0

只有當系統終止活動時纔會調用onDestroy。你不應該把它放在onDestroy上,你應該把它放在onPause()中,這就是當你的活動移動到後臺但仍保留在內存中時所謂的。 (這是被壓或退出應用後退按鈕會發生什麼)

@Override 
protected void onPause() { 
    super.onPause(); 
    mp.stop(); 
} 
+0

當您按下後退按鈕,'onDestroy' **確實被稱爲**。 – Cristian

0

可以調用覆蓋真正實現了輕鬆的源代碼,並將其添加每一個到你的代碼。所有你需要做的就是右鍵點擊你想要的插入點,然後點擊Source-> Override/Implement Methods。它會彈出一個對話框,你點擊你需要的方法,嘗試使用ondestroy,onpause,onstop。對於你的代碼,並且在它實現它們之後,只需在每個代碼中添加以下內容。

protected void onDestroy{ 
     super.onDestroy(); 
     mp.release(); 
    } 

    protected void onStop{ 
     super.onStop(); 
     mp.stop(); 
    } 

    protected void onPause{ 
     super.onPause(); 
     mp.pause(); 
    } 

另外如果你想多一點與您soundcodes你可以試試這個鏈接 stealthcopters link或者你可以試試這個視頻系列 cornboyzAndroid