4

私はストリーミングラジオアプリケーションに取り組んでいます。イコライザー効果の変更がサウンドに影響しないことを除いて、すべて正常に機能しています。

usePreset(preset) を呼び出してイコライザー効果を変更しても、サウンド効果は変更されません。

エラーがないのに、usePreset で効果音を変更しないのはなぜですか。

4.0.3 の samsung galaxy sII でテストしました。

public void startPlayer() {
    //
    // Check whether we can acquire the audio focus
    // to start the player
    //
    if (!requestAudioFocus()) {
        return;
    }

    if (null != mAudioPlayer) {
        if (mAudioPlayer.isPlaying()) {
            mAudioPlayer.stop();
        }
        mAudioPlayer.reset();
    } else {
        mAudioPlayer = new MediaPlayer();
        mAudioPlayer.reset();
    }
    try {
        notifyProgressUpdate(PLAYER_INITIALIZING);
        try {
            mEqualizer = new Equalizer(0, mAudioPlayer.getAudioSessionId());
            mEqualizer.setEnabled(true);
            Log.d(TAG,
                    "Audio Session ID " + mAudioPlayer.getAudioSessionId()
                            + "Equalizer " + mEqualizer + " Preset "
                            + mEqualizer.getCurrentPreset());
        } catch (Exception ex) {
            mEqualizer = null;
        }
        mAudioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mAudioPlayer.setDataSource(mCurrentTrack.getStreamURL());

        //
        // Add the Listener to track the player status
        //
        mAudioPlayer.setOnCompletionListener(this);
        mAudioPlayer.setOnBufferingUpdateListener(this);
        mAudioPlayer.setOnPreparedListener(this);
        mAudioPlayer.setOnInfoListener(this);
        mAudioPlayer.setOnErrorListener(this);
        notifyProgressUpdate(PLAYER_BUFFERING);
        mAudioPlayer.prepareAsync();

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

            //Get the available presets from the equalizer
    public String[] getEqualizerPresets() {
        String[] presets = null;
        short noOfPresets = -1;
        if (null != mEqualizer) {
            noOfPresets = mEqualizer.getNumberOfPresets();
            presets = new String[noOfPresets];
            for (short index = 0; index < noOfPresets; index++) {
                presets[index] = mEqualizer.getPresetName(index);
            }
        }
        return presets;
    }

            //Set the user preferred presets
    public void setEqualizerPreset(int position) {
        if (null != mEqualizer) {
            Log.d(TAG, "setting equlizer effects " + position);
            Log.d(TAG, "Equalizer " + mEqualizer + " set Preset " + position);
            mEqualizer.usePreset((short)position);
            Log.d(TAG, "Equalizer " + mEqualizer + " current Preset "
                    + mEqualizer.getCurrentPreset());
        }
    }

問題の特定にご協力をお願いいたします。

編集 この問題はまだ解決されていません。イコライザー プリセットの使用法を説明するサンプル コードが見つかりませんでした。

Preset Welcome を使用するコード サンプルへの参照。

4

2 に答える 2

1

this is a fully source code for equalizer, hope this will help you

于 2014-03-23T14:42:29.860 に答える
1

私も同じ問題を抱えてる。エミュレーターにロードすると、理由がよくわからないエラーが発生し、常に...audiofx.Equalizerと表示されます。と audiofx.AudioEffect。または似たようなもの。しかし、私の場合、n7player のような他のメディア プレーヤーがある場合は、それを閉じて、メディア プレーヤーをもう一度試してください。私の場合は機能しますが、アクティブなイコライザーを取得する方法の 1 つである必要があると思います。

于 2013-06-06T18:42:02.633 に答える