0

着信時に番号を識別し、Androidテキストを使用して音声を発声するアプリを作成しようとしています。発信者の連絡先名が表示されます。私はほとんど私の問題をやったことがありますデフォルトの着信音の代わりに電話が来るときそれはTTSと言うべきですここでTTSで着信音を上書きする方法私が試したことを与えます。誰かが私がより良い解決策を得るのを手伝ってくれるでしょうか。私は最初の答えを試しましたが、リングの音量がミュートになりました。しかし、ttsの音は来ません。

   public class myPhoneStateChangeListener extends PhoneStateListener
{
    int ph_state = 0;
    speechcontact clsspcntct = new speechcontact();
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state, incomingNumber);
        if (state == TelephonyManager.CALL_STATE_RINGING)
        {

            String phoneNumber =   incomingNumber;
            String ContactName = objUtility.getContactName2(context,phoneNumber);

            if (RBSpkMde.isChecked())
            {
                speakWords(ContactName);
            }
        } 
    }
     public void speakWords(String speech)
    {
    myTTS.speak("you have call from"+speech, TextToSpeech.QUEUE_FLUSH, null);

    }
}
4

1 に答える 1

1

ミュートしますSTREAM_RING

public class myPhoneStateChangeListener extends PhoneStateListener
{
    private int mRingVolume;
    Context context;

    public myPhoneStateChangeListener(Context cxt)
    {
        context = cxt;
    }

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state, incomingNumber);
        if (state == TelephonyManager.CALL_STATE_RINGING)
        {
            mRingVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
            mAudioManager.setStreamMute(AudioManager.STREAM_RING, true);
            String phoneNumber =   incomingNumber;
            String ContactName = objUtility.getContactName2(context,phoneNumber);

            if (RBSpkMde.isChecked())
            {
                speakWords(ContactName);
            }
        } 
        if (state == TelephonyManager.CALL_STATE_IDLE)
        {
             mAudioManager.setStreamMute(AudioManager.STREAM_RING, false);
             mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 
                        mRingVolume, AudioManager.FLAG_ALLOW_RINGER_MODES);
        }
    }
     public void speakWords(String speech)
    {
    myTTS.speak("you have call from"+speech, TextToSpeech.QUEUE_FLUSH, null);

    }

}
于 2013-03-27T09:07:48.780 に答える