2013-06-30 54 views
1

我正在開發一款應用程序,使用處理2.0的Android設備,現在我有playMP3();功能,但需要使用stopMP3();停止聲音。我嘗試了一切,但是什麼是加載mp3並播放/停止使用處理的最佳方式?,snd.stop();內stopMP3功能不起作用......Android處理MP3音效(需要停止)

import android.media.*; 
import android.content.res.*; 

...

MediaPlayer snd; 

...

void setup() 
{ 
MediaPlayer snd = new MediaPlayer(); 
} 

...

void playMP3() 
    { 
try { 
    AssetManager assets = this.getAssets(); 
    AssetFileDescriptor fd = assets.openFd("loop1.mp3"); 
    snd.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength()); 
    snd.prepare(); 
    snd.start(); 
    snd.setLooping(true); 
    } 
    catch (IllegalArgumentException e) { 
    e.printStackTrace(); 
    } 
    catch (IllegalStateException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

}

void stopMP3(){ 
???? 
} 
+0

你在哪裏調用的stop()?你有沒有試過用一個按鈕來確保在執行停止之前至少已經開始播放mp3了? – eski

+0

你可以創建OnCompletionListener並在音樂完成時停止或創建一個按鈕來調用snd.stop(),當用戶點擊 –

+0

@ eskimoapps.com我有一個playMP3()函數,它啓動聲音循環之前的按鈕。但不知道如何在停止功能中停止它,也許有一個命令可以從手機內存中刪除聲音或變量,不知道。預先感謝您 –

回答

0

這是爲媒體播放器

private MediaPlayer m_Player; 

//Start Play Function 
private void startPlaying() { 
    m_Player = new MediaPlayer(); 
    m_Player.setOnCompletionListener(onComplete); 
    try { 
     if(m_Player.isPlaying()) 
      stopPlaying(); 

     m_Player.setDataSource(m_FileName); 
     m_Player.prepare(); 
     m_Player.start(); 

    } catch (IOException e) { 

    } 
} 

//Stop Play Function 
private void stopPlaying() { 
    m_Player.stop(); 
    m_Player.reset(); 
    m_Player = null; 
} 

//and this is onComplete Listener 
MediaPlayer.OnCompletionListener onComplete = new OnCompletionListener() 
{ 

    @Override 
    public void onCompletion(MediaPlayer mp) 
    { 
     stopPlaying(); 
    } 
}; 

一個簡單的示例我希望它幫你