0

次のように簡単にする必要があります。

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"/>
4

2 に答える 2

2

Bassboost は、作成時にメディア プレーヤーに既に接続されています。したがって、この行を削除しますmPlayer.attachAuxEffect(bassBoost.getId());

于 2015-02-10T08:02:16.657 に答える
0

attachAuxEffectはい、メディア プレーヤー クラスからメソッドを削除します。linemPlayer.attachAuxEffect(bassBoost.getId());

bass boost次に、アイドル状態を除くメディア プレーヤーの任意の状態でオブジェクトを呼び出すことができます。

于 2016-05-27T07:35:19.957 に答える