Android Mediaplayer未知错误-38

时间:2013-11-19 13:27:12

标签: android error-handling runtime-error android-mediaplayer

我在服务中使用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;
    }

0 个答案:

没有答案