我在服务中使用MediaPlayer,它通常可以使用数小时,但有时会给我错误“-38”。这就是我得到它的方式。 I tried to find what that means,但我找不到它。我很感激任何建议。
注意:pathToFile取自MediaStore(一遍又一遍)
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;
}