2014-10-10 3 views
1

텍스트 음성 변환 시스템에서 구를 말하는 동안 오디오 플레이어를 음소거하려고합니다. audiomanager는 오디오 포커스가 요청되었을 때 볼륨을 줄이지 만 abandonAudioFocus가 호출되면 볼륨이 복원되지 않고 abandonAudioFocus의 콜백이 호출되지 않습니다.Audiomanager.abandonAudioFocus가 재생을 다시 시작하지 않습니다.

private class SpeakRunnable implements Runnable { 
    String mText; 

    public SpeakRunnable(String text) { 
     mText = text; 
    } 

    @Override 
    public void run() { 
     stream_volume = am.getStreamVolume(AudioManager.STREAM_MUSIC); 
     am.requestAudioFocus(new OnAudioFocusChangeListener() { 
      @Override 
      public void onAudioFocusChange(int focusChange) { 
        //Check if focus granted 
        ..... 
        HashMap<String, String> params = new HashMap<String, String>(); 
        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "none"); 
        talker.speak(mText, TextToSpeech.QUEUE_ADD, params); 
      } 
     }, 
     AudioManager.STREAM_MUSIC, 
     AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); 

    } 
} 

과 :

talker.setOnUtteranceProgressListener(new UtteranceProgressListener() { 

      @Override 
      public void onStart(String utteranceId) { 

      } 

      @Override 
      public void onError(String utteranceId) { 

      } 

      @Override 
      public void onDone(String utteranceId) { 
       am.abandonAudioFocus(new OnAudioFocusChangeListener() {      
        @Override 
        public void onAudioFocusChange(int focusChange) { 
         Log.v(app_id, "CALLBACK"); 
        } 
       }); 
      } 
     }); 

어떤 생각 이 내 코드? 미리 감사드립니다.

답변

2

AudioManager.OnAudioFocusChangeListener ~ abandonAudioFocusrequestAudioFocus으로 전달해야합니다. 이것은 the documentation for abandonAudioFocus에 설명되어 있습니다 :

public int abandonAudioFocus (AudioManager.OnAudioFocusChangeListener l) 

Parameters 
l the listener with which focus was requested. 

또한, 나는 당신이 오디오 사용을 포기 당신의 결과로 호출 할 당신의 청취자의 onAudioFocusChange 방법을 기대한다고 생각하지 않습니다. 오디오 포커스를 포기할 때 오디오 포커스를 요청한 다른 오디오 클라이언트 인은 포커스를 얻었 음을 알립니다. 이것이 Android에서 내부적으로 어떻게 구현되는지에 대해 읽어 보려면 MediaFocusControl source code을 살펴보세요.

+0

당신 말이 맞습니다. 그건 내 잘못이야. 감사합니다. – dantard

관련 문제