2014-11-01 4 views
1

Я хочу искать в своем списке через речью к тексту (STT). У меня есть список City, теперь, когда пользовательский поиск по STT. Этот поиск применим только к моему списку (например, STT Contact Search),Речь на текст в моем списке Android

ответ

1

Речь в текст встроена в Android 1.6+. Вот простой пример того, как это сделать.

/** 
* Showing google speech input dialog 
* */ 
private void promptSpeechInput() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, 
      getString(R.string.speech_prompt)); 
    try { 
     startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); 
    } catch (ActivityNotFoundException a) { 
     Toast.makeText(getApplicationContext(), 
       getString(R.string.speech_not_supported), 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case REQ_CODE_SPEECH_INPUT: { 
     if (resultCode == RESULT_OK && null != data) { 

      ArrayList<String> result = data 
        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      txtSpeechInput.setText(result.get(0)); 
     } 
     break; 
    } 

    } 
} 

Подробнее: http://www.androidhive.info/2014/07/android-speech-to-text-tutorial/

Обновлено:

Попробуйте этот код для просмотра фильтра.

http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/

+0

Но как фильтровать Мой список. –

+0

см. Мой обновленный ответ. и если вы удовлетворитесь, примите мой ответ. – stacktry

+0

Я сделал это как String string = matches.get (0); . MainActivity.this.aaryadpter.getFilter() фильтр (строка); –

0

Смотреть этот код Google Voice in our Application

/* Google Voice open while calling Activity */ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)   
{ 

    /* Call Activity to Open Google Voice */ 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US"); 

    try { 
     startActivityForResult(intent, 1); 
    } catch (ActivityNotFoundException a) { 
     Log.d("LOG",a.getMessage()); 
    } 
} 

/* This will be called after you speak */ 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case 1: { 
     if (resultCode == Activity.RESULT_OK && null != data) { 

      ArrayList text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

      Log.d("LOG","You have speak : "+text.get(0)); 
     } 
     break; 
    } 
    } 
} 

Вы получите text.get(0) как результат speaked строки, которые можно использовать в фильтрации ListView.

notifyDataSetChanged() полезен для изменения ListView с новыми данными.

+0

Но если Предположим, что STT получит (0) = Хари, он может искать Хариану, Харипур, Хариш из Списка? –

+0

Это зависит от вашего адаптера или фильтра. –

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