2015-01-07 1 views
1

Привет, тамВозможно ли использовать голосовые команды для навигации вместо использования жестов салфетки?

В настоящее время я разработать приложение погружения, чтобы обеспечить текст на экране и пользователь может swipe_right пойти другой.

Фактически, он адаптируется к образцу погружения, который называется charades (сайт разработки Google).

Моя цель: я хочу использовать голосовые команды вместо жестов SWIPE.

например;

  1. Пользователь открывает демографическую демонстрацию, на экране появится первый ТЕКСТ.
  2. Пользователь хочет перейти дальше ТЕКСТ используя голос "GO NEXT".
  3. Экран покажет другой текст.

Учитывая это post!

Есть ли способ сделать это? или любое предложение?

+0

http://developer.android.com/reference/android/speech/SpeechRecognizer.html Используйте это как сервис для запуска в фоновом режиме. Invoke SpeechRecognizer, когда ViewPager находится на переднем плане.Надеюсь, это поможет –

+0

благодарю вас за советы, кстати, не могли бы вы привести пример для этого? @VnyKumar –

+0

http://stackoverflow.com/questions/14940657/android-speech-recognition-as-a-service-on-android-4-1-4-2/14950616#14950616 Это должно быть хорошей отправной точкой –

ответ

1

Здесь Это мое решение. Надеюсь, это поможет кому-то, кто ищет.

Я использовал Contextual voice commands для предоставления команд «Далее», «Сохранить» и «Выйти» для пользователя. вы можете перейти к this document с сайта google dev, чтобы увидеть идеи этого.

У меня есть мой макет Активность, чтобы показать некоторые ТЕКСТ, поэтому я разместил эту структуру кода. в моем макете деятельности

//contextual voice command 
import com.google.android.glass.view.WindowUtils; 
import android.view.Menu; 
import android.view.MenuItem; 


@Override 
public boolean onCreatePanelMenu(int featureId, Menu menu) { 
    if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
    // Pass through to super to setup touch menu. 
    return super.onCreatePanelMenu(featureId, menu); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) { 
     switch (item.getItemId()) { 

      case R.id.save_menu_item: 
       Log.d("Contextual", "go save checks"); 
       break; 
      case R.id.next_menu_item: 
       Log.d("Contextual", "go next checks");      
       break; 
      case R.id.exit_menu_item: 
       Log.d("Contextual", "go exit checks");      
       break; 
      default: 
       return true; 
     } 

     return true; 
    } 
    return super.onMenuItemSelected(featureId, item); 
}                             

Не забудьте объявить эту линию getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS); вашего OnCreate(); перед вашим setContentView().

Следующее, что я создал 'menu folder' и main.xml внутри его, чтобы предоставить мой выбор. Как это

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:id="@+id/next_menu_item" 
    android:title="@string/next"> 

</item> 
<item 
    android:id="@+id/save_menu_item" 
    android:title="@string/save_this"> 
</item> 
<item 
    android:id="@+id/exit_menu_item" 
    android:title="@string/exit"> 
</item> 

и мой файл strings.xml.

<resources> 
    <string name="next">next</string> 
    <string name="save_this">save</string> 
    <string name="exit">exit</string> 
</resources> 

положить эту линию <uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" />

AndroidMenifest.xml вашему.

и он отлично работает для меня!