Неизвестная ошибка Android Mediaplayer -38

Я пользуюсь MediaPlayer в сервисе и обычно он работает часами, но время от времени выдает ошибку "-38". Вот как я понимаю. Я пытался найти, что это значит, но не смог. . Буду признателен за любые советы.

Примечание: 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;
    }

person Michal    schedule 19.11.2013    source источник
comment
-38 равно -ENOSYS, что в Android означает INVALID_OPERATION.   -  person Michael    schedule 19.11.2013
comment
возможный дубликат Media Player, вызванный в состоянии 0, ошибка (-38 ,0)   -  person Mohamed_AbdAllah    schedule 19.11.2013
comment
Спасибо за ваш ответ.   -  person Michal    schedule 19.11.2013
comment
-38 из MediaPlayer является недопустимым переходом состояния. Ваш код здесь выглядит нормально, поэтому вам нужно предоставить больше контекста, чтобы увидеть, как вы его получаете.   -  person Dave    schedule 20.11.2013
comment
Кажется, я иногда вызывал mediaPlayer.getDuration(), но mediaPlayer не был готов (например, он находился в процессе перехода к следующей песне).   -  person Michal    schedule 21.11.2013
comment
возможный дубликат Android MediaPlayer Проблемы: ошибка (-38 , 0) и вызов остановки в состоянии 1   -  person rds    schedule 22.06.2015