2011-09-03 4 views
0

Android AudioManager를 사용하여 SCO ON 및 스피커폰을 켜고 나면 시작 지점으로 되돌리고 나서 미디어 스트림이 전화기 스피커 대신 이어폰에 남습니다. 내가AudioManager를 사용한 후 오디오 스트림이 이어폰에 남습니다.

(내가 TTS를 사용하고 있습니다) 노선 변경 (모든 위대한 작품을)이 SCO 스피커폰을 통해 스트림 내 메시지를 읽은 후

if (am2.isBluetoothScoAvailableOffCall()) { 
          am2.startBluetoothSco(); 
         } 
         if(!am2.isSpeakerphoneOn()){ 
          speakerPhoneWasOn = false; 
          am2.setSpeakerphoneOn(true); 
         } 
         myHash.put(TextToSpeech.Engine.KEY_PARAM_STREAM, 
           String.valueOf(AudioManager.STREAM_VOICE_CALL)); 
         am2.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, 
           AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 

가 그럼 난 모두를 다시 변경하려고 할 경우 여기에있다

if(SMSstream == 1){ 
       if (am2.isBluetoothScoAvailableOffCall()) { 
        am2.stopBluetoothSco(); 

       } 
       if(!speakerPhoneWasOn){ 
        am2.setSpeakerphoneOn(false); 
       } 


      } 
      else{ 

      } 
      am2.setMode(OLD_AUDIO_MODE); 
      am2.abandonAudioFocus(null); 

하지만 재부팅 할 때까지 스피커 대신 전화 이어폰을 사용합니다. 나는 반대 문제가 있었지만이 문제가없는 게시물을 보았다. 나는 안드로이드 2.3.4와 Droid 3 있습니다.

는 현재 전체 프로젝트 및 소스 코드를 볼 수 있습니다 http://code.google.com/p/a2dpvolume/

답변

1

OK, 나는 마침내이 문제를 해결했습니다. 그다지 귀엽지 않다. 내가 믿는 AudioManager에는 어떤 종류의 버그가있다. 초점을 포기한 후에도 장치 스트림이 혼란에 빠지게됩니다. 포커스를 포기하기 직전에 음악 스트림을 통해 마지막 TTS를 읽지 않는 한 잘못 스트림, 음소거 스트림 등을 라우트합니다. 따라서 음악 스트림을 제외한 모든 스트림에서 SMS를 읽은 후 한 번만 읽으면됩니다. 초점을 포기. 나는 또한 물건들을 불렀던 주문을 청소했고, TTS를 읽은 후에 전화 모드 등을 고쳤다. 이상하게도 잘 작동하는 것 같습니다.

+0

안녕하세요. 동일한 문제가 있습니다. 내 장치는 Android 버전 2.3.3의 Samsung Galaxy SII입니다. 이것 좀 도와 줄 수 있니? –