2013-05-10 2 views
4

스트리밍 라디오 응용 프로그램을 제작 중입니다. 이퀄라이저 이펙트를 변경해도 사운드에 영향을 미치지 않는다는 점을 제외하면 모든 것이 잘 작동합니다.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을 사용하는 코드 샘플에 대한 모든 참조.

+3

는이 문제가 해결 되었습니까 도움이 될 것입니다? – Wayne

+0

자습서를 제공해 주실 수 있습니까? –

답변

2
+1

소스 코드를 가져 주셔서 감사합니다. 소스 코드를보고 문제가 해결되면 업데이트합니다. – jpsasi

+0

링크가 대답으로 표시된 이유는 무엇입니까? – Ishaan

+0

나는 소스 코드를 reffrencing한다고 생각하지 않는다. –

1

동일한 문제가 있습니다. 에뮬레이터에로드 할 때 실제로 왜 그런지 알지 못한다는 오류가 발생합니다. 항상 audiofx.Equalizer라고합니다. 및 audiofx.AudioEffect. 또는 비슷한 것. 그러나 제 경우에 n7player와 같은 다른 미디어 플레이어가 있으면 미디어 플레이어를 닫고 다시 시도해보십시오. 필자의 경우에는 작동하지만, 활성화 된 일부 이퀄라이저를 얻는 한 가지 방법이라고 생각합니다.

+0

에뮬레이터와 장치에서 이퀄라이저 효과를 테스트 할 때 다른 오디오 응용 프로그램을 실행하지 않았습니다. 한 번 더 확인하겠습니다. – jpsasi