스트리밍 라디오 응용 프로그램을 제작 중입니다. 이퀄라이저 이펙트를 변경해도 사운드에 영향을 미치지 않는다는 점을 제외하면 모든 것이 잘 작동합니다.Android - 이퀄라이저 usePreset 작동하지 않음 (음향 효과가 변경되지 않음)
usePreset (사전 설정)을 호출하여 이퀄라이저 효과를 변경해도 사운드 효과가 변경되지 않습니다.
오류가 없어도 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을 사용하는 코드 샘플에 대한 모든 참조.
는이 문제가 해결 되었습니까 도움이 될 것입니다? – Wayne
자습서를 제공해 주실 수 있습니까? –