附加BassBoost时MediaPlayer无法播放 - 错误(-22,0)

时间:2012-09-26 13:02:43

标签: java android audio effects android-mediaplayer

这应该很简单:

private void startPlaying() {
    mPlayer = new MediaPlayer();
    try {
        mPlayer.setDataSource(mFileName);

        BassBoost bassBoost = new BassBoost(0, mPlayer.getAudioSessionId());
        mPlayer.attachAuxEffect(bassBoost.getId());
        bassBoost.setStrength((short)1000);
        bassBoost.setEnabled(true);
        mPlayer.setAuxEffectSendLevel(1.0f);

        mPlayer.prepare();

        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mPlayer.start();
            }
        });
    } catch (IOException e) {
        // TODO Auto-generated catch block
       e.printStackTrace();
        throw new RuntimeException(e);
    }
        }

当我尝试时,它很安静,我在日志中得到错误(-22,0)。如果我对BassBoost bassBoost = ...mPlayer.setAuxEffectSendLevel之间的行进行评论,则播放的声音就可以了。

我去了文档,但我无法解决错误。清单中的权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

2 个答案:

答案 0 :(得分:1)

创建时,您已经将媒体播放器连接到了低音增强器。请删除此行mPlayer.attachAuxEffect(bassBoost.getId());

答案 1 :(得分:0)

是的,从媒体播放器类中删除方法attachAuxEffect,我的意思是linemPlayer.attachAuxEffect(bassBoost.getId());

其次,您可以在媒体播放器的任何状态下调用bass boost对象,不包括空闲状态