我已在我的应用中创建了一个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"
/>
答案 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,因为这可能导致非法状态异常。