2012-04-21 79 views
1

使用的MediaPlayer我有在非活動課,總是上下文錯誤使用了Android MediaPlayer一些麻煩。這裏是竊聽行:在非活動類

MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot); 

現在我知道我不能在服務中使用「this」,但我試過其他的東西不停地給錯誤。

有什麼建議?

回答

1

你太幸運,因爲這兩天我有開發使用MediaPlayer的後臺服務內的應用程序中;)

你可以簡單地檢索使用下一行你的MediaPlayer的實例:

MediaPlayer mediaPlayer = new MediaPlayer(); 

然後你就可以將所有監聽器和播放你想要的歌曲。

編輯2012年4月22日

要設置監聽器(一個例子):

 mediaPlayer.setOnErrorListener(new OnErrorListener() {     

       public boolean onError(MediaPlayer mp, int what, int extra) { 
         // TODO notify error to user or play next song 
         return true; 
       } 
     }); 
     mediaPlayer.setOnCompletionListener(new OnCompletionListener() {      

       public void onCompletion(MediaPlayer mp) { 
         // TODO Notify to user the completion of song or play next song 
       } 
     }); 

要啓動和播放歌曲,你必須做這樣的事情:

try{ 
    mediaPlayer.setDataSource(mSongUrl); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.prepare(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
// Starting media player 
mediaPlayer.start(); 
0

爲什麼不只是將上下文引用傳遞給非活動類的構造函數。 然後從那裏保存並將其傳遞到需要的地方。

確保您的上下文參考在使用後不再保持有效。否則會導致內存問題。

+0

不知道我明白了,你能舉個例子嗎? – arielschon12 2012-04-21 12:01:29

+0

我的意思是,代碼示例,所以我可以在我的項目中實現它。 – arielschon12 2012-04-21 12:19:14