使用的MediaPlayer我有在非活動課,總是上下文錯誤使用了Android MediaPlayer
一些麻煩。這裏是竊聽行:在非活動類
MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);
現在我知道我不能在服務中使用「this
」,但我試過其他的東西不停地給錯誤。
有什麼建議?
使用的MediaPlayer我有在非活動課,總是上下文錯誤使用了Android MediaPlayer
一些麻煩。這裏是竊聽行:在非活動類
MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);
現在我知道我不能在服務中使用「this
」,但我試過其他的東西不停地給錯誤。
有什麼建議?
你太幸運,因爲這兩天我有開發使用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();
爲什麼不只是將上下文引用傳遞給非活動類的構造函數。 然後從那裏保存並將其傳遞到需要的地方。
確保您的上下文參考在使用後不再保持有效。否則會導致內存問題。
不知道我明白了,你能舉個例子嗎? – arielschon12 2012-04-21 12:01:29
我的意思是,代碼示例,所以我可以在我的項目中實現它。 – arielschon12 2012-04-21 12:19:14