Android 运行时异常:MediaPlayer启动时出现故障代码-38

Android 运行时异常:MediaPlayer启动时出现故障代码-38,android,android-mediaplayer,Android,Android Mediaplayer,我在启动MediaPlayer时遇到了一个异常,在大多数情况下,我认为这是一个非法状态异常,但我遇到了RuntimeException: java.lang.RuntimeException: failure code: -38 at android.media.MediaPlayer.invoke(MediaPlayer.java:694) at android.media.MediaPlayer.getInbandTrackInfo(MediaPlayer.java:1944

我在启动MediaPlayer时遇到了一个异常,在大多数情况下,我认为这是一个非法状态异常,但我遇到了RuntimeException:

java.lang.RuntimeException: failure code: -38
    at android.media.MediaPlayer.invoke(MediaPlayer.java:694)
    at android.media.MediaPlayer.getInbandTrackInfo(MediaPlayer.java:1944)
    at android.media.MediaPlayer.getTrackInfo(MediaPlayer.java:1923)
    at android.media.MediaPlayer.start(MediaPlayer.java:1205)
我不知道为什么会出现这个问题,有人能帮我解决这个问题吗?谢谢

这是我的代码:

TelephonyManager telephonyManager = (TelephonyManager) getContext().getSystemService(Service.TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state, incomingNumber);
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                if (player != null)
                    pause();
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                if (player != null)
                    start();       // <-- RuntimeException
                break;
        }
    }
}, PhoneStateListener.LISTEN_CALL_STATE);
TelephonyManager TelephonyManager=(TelephonyManager)getContext().getSystemService(Service.TELEPHONY_Service);
listen(新的PhoneStateListener(){
@凌驾
public void onCallStateChanged(int状态,字符串incomingNumber){
super.onCallStateChanged(状态、收入编号);
开关(状态){
case TelephonyManager.CALL_STATE_响铃:
如果(玩家!=null)
暂停();
打破
case TelephonyManager.CALL_STATE_OFFHOOK:
打破
case TelephonyManager.CALL_STATE_IDLE:
如果(玩家!=null)

start();//你能发布你的代码吗?你在哪里调用prepare()?可能重复。你看过这个吗?@GowthamHosamane我在
setDataSource()之后调用了
prepareAsync()
,我确信在
prepare
方面没有问题。我看过你发布的问题,我认为这不是同一个问题。我只收到RuntimeException,但他调用了
onError()
,因为在错误的状态下使用
start()
。如果你调用了prepareAsync(),您应该让onPreparedListener()确保在调用onPreparedListener()后调用start()。放置一些日志以确认顺序。您可以发布您的代码吗?您在哪里调用prepare()?可能重复。您看了这个吗?@GowthamHosamane我在
setDataSource()之后调用了
prepareAsync()
,我确信在
prepare
方面没有问题。我看过你发布的问题,我认为这不是同一个问题。我只收到RuntimeException,但他调用了
onError()
,因为在错误的状态下使用
start()
。如果你调用了prepareAsync(),您应该让onPreparedListener()确保在调用onPreparedListener()后调用start()。放置一些日志以确认顺序。