音乐服务不播放

时间:2014-06-15 14:22:32

标签: java android eclipse

我已在我的应用中创建了一个MusicService,启动了该服务并且无法播放。 我从主菜单启动了服务,并将其(服务)添加到清单中, 我已经阅读了几篇关于它的帖子,到目前为止还没有任何帮助。(它扩展了服务)

class MusicService extends Service {
MediaPlayer mediaPlayer;

@Override

public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    mediaPlayer = MediaPlayer.create(this, R.raw.song);
    mediaPlayer.setLooping(true);
    mediaPlayer.setVolume(100, 100);
}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

    try {
        mediaPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if (!mediaPlayer.isPlaying()) {
        mediaPlayer.start();
    }
    else if (mediaPlayer.isPlaying())
    {
        mediaPlayer.stop();

    }
    return 1;
}

和来自主屏幕的电话:

Intent music = new Intent(this, MusicService.class);
startService(music);

和清单上的服务声明:

<service
     android:name="com.example.trviaForBagrut.MusicService"
     android:enabled="true"
/>  

1 个答案:

答案 0 :(得分:0)

根据此链接http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context,android.net.Uri),当yoyu使用create方法时,你不能调用prepare。

  

为给定的Uri创建MediaPlayer的便捷方法。成功时,prepare()已经被调用,不能再被调用。

也许你也可以使用像

这样的东西
public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)

因为除非首先准备好媒体播放器,否则不应该调用start,因为这可能导致非法状态异常。