0

Я работаю над проектом, который требует предупреждения через вибрацию, когда функция TextToSpeech завершает сообщение. Я реализовал функцию TextToSpeech и знаю, как создать вибрацию, но я не уверен, где закодировать вибрацию. Также примеры, которые я нашел, о том, как реализовать метод OnUtteranceCompleted, оставили меня безнадежно запутанным. Может ли кто-нибудь помочь мне объединить функцию OnUtteranceCompleted, а также где вставить код вибрации? Вот мой код:Выполнять вибрацию, когда действие TextToSpeech завершено

общественный класс TypeNewMessageActivity расширяет активность реализует TextToSpeech.OnInitListener {

Button playButton; 
EditText typeNewMessageEditText; 
TextToSpeech tts; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_type_new_message); 
    // Show the Up button in the action bar. 
    setupActionBar(); 
} 

/** 
* Set up the {@link android.app.ActionBar}, if the API is available. 
*/ 
@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
private void setupActionBar() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    playButton = (Button)findViewById(R.id.playButton); 
    typeNewMessageEditText = (EditText)findViewById(R.id.typeNewMessageEditText); 
    tts = new TextToSpeech (this, this); 


    playButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      playText(); 
     } 
    }); 
} 

public void onDestroy(){ 

    if (tts != null){ 

     tts.stop(); 
     tts.shutdown(); 

    } 

} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     // This ID represents the Home or Up button. In the case of this 
     // activity, the Up button is shown. Use NavUtils to allow users 
     // to navigate up one level in the application structure. For 
     // more details, see the Navigation pattern on Android Design: 
     // 
     // http://developer.android.com/design/patterns/navigation.html#up-vs-back 
     // 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onInit(int status) { 
    // TODO Auto-generated method stub 

    if (status == TextToSpeech.SUCCESS){ 

     int result = tts.setLanguage(Locale.US); 

     if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){ 

      Log.e("tts", "This language is not supported"); 
     }else{ 


      playButton.setEnabled(true); 
      playText(); 


     } 
    }else{ 

     Log.e("tts", "Initialized failed");   
    } 

} 

public void playText(){ 

    String text = typeNewMessageEditText.getText().toString(); 
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 


} 

ответ

1

Если вы хотите, чтобы вибрировать, когда playText() делается говорить то изменить, как следовать

public void playText(){ 

String text = typeNewMessageEditText.getText().toString(); 
HashMap<String, String> myHashRender = new HashMap<String, String>(); 
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, ""); 
tts.speak(text, TextToSpeech.QUEUE_FLUSH, myHashRender); 
} 

Тогда

@Override 
public void onUtteranceCompleted(String utteranceId) 
{ 
    // code to vibrate. 
} 
+0

Awesome Hoan, большое спасибо! – embersofadyingfire

+0

Hoan: Я пытаюсь использовать Intent внутри OnUtteranceCompleted, но он не работает. Можете ли вы дать мне какие-либо отзывы о том, почему это может быть? Я знаю, что у меня есть код моего намерения правильно, поэтому я не уверен, что здесь неправильно. Спасибо! – embersofadyingfire

+0

Отправьте свой вопрос, указав, что не так, и я или кто-то ответит. –

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