Android Mediaplayer未知错误-38
我在服务中使用MediaPlayer,它通常工作数小时,但有时会给我错误-38。我就是这样得到的,但是我找不到它。如果您有任何建议,我将不胜感激 注意:pathToFile多次从MediaStore获取Android Mediaplayer未知错误-38,android,error-handling,runtime-error,android-mediaplayer,Android,Error Handling,Runtime Error,Android Mediaplayer,我在服务中使用MediaPlayer,它通常工作数小时,但有时会给我错误-38。我就是这样得到的,但是我找不到它。如果您有任何建议,我将不胜感激 注意:pathToFile多次从MediaStore获取 public void Play(String pathToFile) { mediaPlayer.reset(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDat
public void Play(String pathToFile)
{
mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(pathToFile);
mediaPlayer.prepareAsync();
}
@Override
public void onPrepared(MediaPlayer mp)
{
mediaPlayer.start();
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
switch (what)
{
case MediaPlayer.MEDIA_ERROR_IO:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_IO");
break;
case MediaPlayer.MEDIA_ERROR_MALFORMED:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_MALFORMED");
break;
case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK");
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_SERVER_DIED");
break;
case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_TIMED_OUT");
break;
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_UNKNOWN");
break;
case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_ERROR_UNSUPPORTED");
break;
case MediaPlayer.MEDIA_INFO_BAD_INTERLEAVING:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_BAD_INTERLEAVING");
break;
case MediaPlayer.MEDIA_INFO_BUFFERING_END:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_BUFFERING_END");
break;
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_BUFFERING_START");
break;
case MediaPlayer.MEDIA_INFO_METADATA_UPDATE:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_METADATA_UPDATE");
break;
case MediaPlayer.MEDIA_INFO_NOT_SEEKABLE:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_NOT_SEEKABLE");
break;
case MediaPlayer.MEDIA_INFO_SUBTITLE_TIMED_OUT:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_SUBTITLE_TIMED_OUT");
break;
case MediaPlayer.MEDIA_INFO_UNSUPPORTED_SUBTITLE:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_UNSUPPORTED_SUBTITLE");
break;
case MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_VIDEO_RENDERING_START");
break;
case MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError","MEDIA_INFO_VIDEO_TRACK_LAGGING");
break;
default:
ClassErrorHandler.ReportError(context, getClass().getName()+".onError",Integer.toString(what));
break;
}
return false;
}
-38等于-ENOSYS,这在Android中意味着无效的_操作。可能重复感谢您的回答。-来自MediaPlayer的38是无效的状态转换。这里的代码看起来不错,所以您必须提供更多的上下文来查看如何获得它。看起来我有时调用mediaPlayer.getDuration,但mediaPlayer还没有准备好,例如,它正在更改为下一首歌曲。