2013-06-30 88 views
0

我想說一些文本。由於一些奇怪的原因,屏蔽STREAM_RING也將文本轉換爲語音。我搜索了互聯網,但我想沒有人有過這個問題,所以我無法找到答案。這裏是我的代碼:setStreamMute(STREAM_RING)靜音文本到語音android

int volume=0; 

    if(state == TelephonyManager.CALL_STATE_RINGING) 
    { 
     Toast.makeText(getApplicationContext(), "Inside", Toast.LENGTH_SHORT).show(); 

     if(incomingNumber != null) 
     { 
      volume= audioManager.getStreamVolume(AudioManager.STREAM_RING); 


      audioManager.setStreamMute(AudioManager.STREAM_RING, true); 
      audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_ALLOW_RINGER_MODES); 
      tts.speak(incomingNumber, TextToSpeech.QUEUE_FLUSH, null); 

      Toast.makeText(getApplicationContext(), "speak number", Toast.LENGTH_SHORT).show(); 
     } 


     if(state == TelephonyManager.CALL_STATE_IDLE) 
     { 
      audioManager.setStreamVolume(AudioManager.STREAM_RING, volume, AudioManager.FLAG_ALLOW_RINGER_MODES); 
      audioManager.setStreamMute(AudioManager.STREAM_RING, false); 
     } 
    } 
} 
+0

嗨,你可以使用這個想法,就接到電話,而不是靜音環流可以作爲沉默的臨時設置的鈴聲,完成你的任務,那麼你可以恢復它,如果你真的需要。要設置鈴聲使用System.Settings類 –

回答

1
int mRingerMode; 

Toast.makeText(getApplicationContext(), "INCOMING CALL", Toast.LENGTH_SHORT).show(); 

if(state == TelephonyManager.CALL_STATE_RINGING) 
{ 
    Toast.makeText(getApplicationContext(), "Inside", Toast.LENGTH_SHORT).show(); 

    if(incomingNumber != null) 
    { 
     mRingerMode = audioManager.getRingerMode(); 
         audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
     new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       HashMap<String, String> myHashRender = new HashMap<String, String>(); 
       myHashRender.put(TextToSpeech.Engine.KEY_PARAM_STREAM, 
         String.valueOf(AudioManager.STREAM_VOICE_CALL)); 
       tts.speak(incomingNumber, TextToSpeech.QUEUE_FLUSH, myHashRender); 
      } 
     }).start(); 

     Toast.makeText(getApplicationContext(), "speak number", Toast.LENGTH_SHORT).show(); 
    } 


    if(state == TelephonyManager.CALL_STATE_IDLE) 
    { 
     audioManager.setRingerMode(mRingerMode); 
    } 
} 

}

+0

這不適合我,它使手機無聲 – Naruto

+0

當你打電話給tts.speak時,onInit調用? –

+0

是的。已初始化TTS – Naruto