Android 来自MediaPlayer的无法解释的错误

Android 来自MediaPlayer的无法解释的错误,android,Android,我的代码尝试从res/raw播放MP3文件 代码: 日志显示: 02-21 15:18:18.360:ERROR/PlayerDriver(51):命令播放器设置数据源已完成,但有错误或信息PVMFErrNotSupported 02-21 15:18:18.380:错误/媒体播放器(693):错误(1,-4) 02-21 15:18:18.390:WARN/PLAYERDRIVE(51):PVMFInfoErrorHandling完成 调用player.prepare()之后 我真的没有任何暗

我的代码尝试从res/raw播放MP3文件

代码:

日志显示:

02-21 15:18:18.360:ERROR/PlayerDriver(51):命令播放器设置数据源已完成,但有错误或信息PVMFErrNotSupported 02-21 15:18:18.380:错误/媒体播放器(693):错误(1,-4) 02-21 15:18:18.390:WARN/PLAYERDRIVE(51):PVMFInfoErrorHandling完成

调用player.prepare()之后

我真的没有任何暗示。 我不会使用MediaPlayer.create(),因为我需要player.setAudioStreamType(AudioManager.STREAM_RING)

如果您能在这方面提供帮助,我们将不胜感激:

当一个
MediaPlayer
对象 使用new或after
reset()创建
被调用时,它处于空闲状态;
调用
release()
后,它将 在最后的状态。在这两者之间 国家是国家的生命周期
MediaPlayer
对象

这是编程错误 调用方法,例如
getCurrentPosition()
setAudioStreamType(int)
处于空闲状态 国家

您应该研究
MediaPlayer
生命周期图,并提供示例,然后重写与之相关的代码。在这种情况下,您会发现需要在调用之前调用
setDataSource()
setAudioStreamType()


旁注:在安卓系统中,你真的需要跟踪生命周期事件,否则你会被咬。您可能会编写不正确的代码,直到运行时才会知道,或者更糟糕的是,您可能会编写您认为有效的代码,并且您只会在奇怪的情况下发现它不。。。e、 g.在这种情况下,或在其他类似情况下(主页按钮…等),屏幕方向发生变化,回调方法不相同。

来自:

当一个
MediaPlayer
对象 使用new或after
reset()创建
被调用时,它处于空闲状态;
调用
release()
后,它将 在最后的状态。在这两者之间 国家是国家的生命周期
MediaPlayer
对象

这是编程错误
调用方法,例如
getCurrentPosition()
setAudioStreamType(int)
处于空闲状态 国家

您应该研究
MediaPlayer
生命周期图,并提供示例,然后重写与之相关的代码。在这种情况下,您会发现需要在调用之前调用
setDataSource()
setAudioStreamType()



旁注:在安卓系统中,你真的需要跟踪生命周期事件,否则你会被咬。您可能会编写不正确的代码,直到运行时才会知道,或者更糟糕的是,您可能会编写您认为有效的代码,并且您只会在奇怪的情况下发现它不。。。e、 g.屏幕方向发生变化,回调方法与本例或其他类似情况(主页按钮等)不同。

我在尝试设置音频流类型时遇到类似问题,我发现本指南很有帮助:

我在设置音频流类型时遇到了类似的问题,我发现本指南很有帮助:

您是否尝试使用其他文件?我可以使用MediaPlayer播放相同的文件。create()因此我知道这不是格式问题。您是否尝试使用其他文件?我可以使用MediaPlayer.create()播放相同的文件,因此我知道这不是格式问题。谢谢,但是:1。没有关于调用setAudioStreamType()的正确生命周期状态的文档。2.我已经试过你说的了,但它给出了相同的错误…抱歉,我的第一句话不是真的,但仍然不起作用:(谢谢,但是:1.没有关于调用setAudioStreamType()的正确生命周期状态的文档).2.我已经试过你说的话了,但还是出了同样的错误…对不起,我的第一句话不是真的,但仍然不起作用:(
FileDescriptor fd = appContext.getResources().openRawResourceFd(R.raw.ringtone)
                    .getFileDescriptor();
player = new MediaPlayer();
            try
            {
                player.setAudioStreamType(AudioManager.STREAM_RING);
                player.setDataSource(fd);
                player.prepare();           
            }
            catch (IllegalArgumentException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                player = null;
                return;
            }
            catch (IllegalStateException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                player = null;
                return;
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                player = null;
                return;
            }

            player.setLooping(true);
            player.start();