Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Mediaplayer未知错误-38_Android_Error Handling_Runtime Error_Android Mediaplayer - Fatal编程技术网

Android Mediaplayer未知错误-38

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

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

-38等于-ENOSYS,这在Android中意味着无效的_操作。可能重复感谢您的回答。-来自MediaPlayer的38是无效的状态转换。这里的代码看起来不错,所以您必须提供更多的上下文来查看如何获得它。看起来我有时调用mediaPlayer.getDuration,但mediaPlayer还没有准备好,例如,它正在更改为下一首歌曲。