2015-12-10 2 views
0
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener { 
    private TextToSpeech tts; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tts = new TextToSpeech(this,this); 

     TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

     PhoneStateListener callStateListener = new PhoneStateListener() { 
      public void onCallStateChanged(int state, String incomingNumber) { 

       if(state== TelephonyManager.CALL_STATE_RINGING){ 
        tts.speak(incomingNumber+" calling", TextToSpeech.QUEUE_FLUSH, null); 
        Toast.makeText(getApplicationContext(),"Phone is Ringing : "+incomingNumber,Toast.LENGTH_LONG).show(); 
       } 
      } 
     }; 
    } 

    @Override 
    public void onInit(int status) { 

    } 
} 

Но функция speak(String text, int queueMode, HashMap params) осуждается в уровне API 21. Как я могу решить эту проблему?андроид - как использовать TextToSpeech с апи 21

ответ

0

Да, вы Rigth, это не рекомендуется, пока API 21 вы использовали для использования:

public int speak (String text, int queueMode, HashMap<String, String> params) 

, но этот метод не рекомендуется в API 21. На уровне API 21, заменены:

public int speak (CharSequence text, int queueMode, Bundle params, String utteranceId)

в вашем случае:

...  
tts.speak(incomingNumber+" calling", TextToSpeech.QUEUE_FLUSH, null, null); 

просто передать null параметру utteranceId

более

Информация о Text To Speech

Смежные вопросы