7

Android 2.3.3 용 라이브 배경 화면을 만들고 Visualizer 클래스를 사용했습니다. 독립형으로 작동하는 Visualizer 프로그램의 작업 버전이 이미 있습니다. 그러나 코드를 라이브 배경 서비스에 배치하면 문제가 시작됩니다. 나는 라이브 배경 화면 목록을 찾고있을 때, android.media.audiofx.Visualizer 다른 시간 간격으로 예외 발생

// Called in my Engine extension's constructor 
public void setupVisualizer() 
{ 
    mBytes = null; 
    mVisualizer = new Visualizer(0); 

    // EDIT 
    mVisualizer.setEnabled(false); // This fixes the issue 
    // END EDIT 

    mVisualizer.setCaptureSize(
     Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown 

    mVisualizer.setDataCaptureListener() { 
     public void onWaveFormDataCapture(Visualizer visualizer, 
      byte[] bytes, int samplingRate) { 
       updateVisualizer(bytes); 
      } 
     public void onFftDataCapture(Visualizer visualizer, 
      bytes[] bytes, int samplingRate) {} 
     }, Visualizer.getMaxCaptureRate()/2, true, false); 

    mVisualizer.setEnabled(true); 
} 

가 여기에 이상한 부분, 내가 미리보기를 누르거야, 그리고 그것을 잘 작동 : 오류가있는 경우 다음 코드입니다. 활성 벽지로 설정하지 않고서는 뒤로 버튼을 누른 다음 다시 선택하면 충돌이 발생합니다. 나는이 과정을 반복 할 수 있으며, 다른 모든 시간에만 충돌하고 다른 시간에는 작동합니다. 활성 배경 화면으로 설정하면 매번 충돌이 발생합니다.

답변

21

at the source을 보면 상태가 STATE_INITIALIZED이 아닌 경우 IllegalStateException이 발생합니다.

생성자가 상태를 STATE_ENABLED 또는 STATE_INITIALIZED으로 설정 했으므로 예외를 얻은 상태는 STATE_ENABLED (유일한 옵션)입니다.

가 상태가 STATE_ENABLED있을 때이 메소드를 호출하지 않아야 언급 setCaptureSize()의 문서에서

, 그래서 나는 당신이 일을 setCaptureSize()

+0

를 호출하기 전에 비주얼 객체에 setEnabled(false)를 호출 할 필요가 있다고 생각합니다! 정말 고맙습니다. 다른 6 시간 동안 현상금을 수여 할 수는 없다고 말했으나 한 번 할 수 있습니다. – Foggzie

+1

나는 기쁘다. 저는 이전에 Visualizer를 사용해 본 적이 없으며 문제를 찾는 방법이 필요할 때 다른 사람에게 도움이되기를 바랍니다. – MByD

+0

이것은 스크린 오리엔테이션과 비슷한 오류를 수정하는 데 도움이되었습니다! 훌륭한 직업 감사합니다. – kabuto178