1

MediaPlayer在非活动类中使用 android 时遇到了一些问题,总是出现上下文错误。这是错误的行:

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

现在我知道我不能this在服务中使用“”,但是我尝试过的所有其他东西都在不断地给出错误。

有什么建议么?

4

2 回答 2

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();
于 2012-04-21T12:04:00.137 回答
0

为什么不直接将上下文引用传递给非活动类的构造函数。然后从那里保存并将其传递到需要的地方。

确保您的上下文引用在使用后不再有效。否则会导致内存问题。

于 2012-04-21T11:56:02.260 回答