我在非活动类中使用android MediaPlayer
时遇到了一些麻烦,总是出现上下文错误。这是错误的行:
MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);
现在我知道我不能在服务中使用“this
”,但我尝试过的所有其他内容都不断给出错误。
有什么建议吗?
答案 0 :(得分: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();
答案 1 :(得分:0)
为什么不直接将上下文引用传递给非活动类的构造函数。 然后从那里保存并将其传递到需要的地方。
确保您的上下文引用在使用后不再保持活动状态。否则它会引起记忆问题。