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