2014-09-23 2 views
0

Я хотел бы знать, как перечислить все доступные контекстные команды на карте, где «Ок, стекло» находится внизу и готов принять команды. Мое приложение имеет более 10 контекстных команд, и пользователь может не помнить все команды.Как перечислить все доступные контекстные команды на карте?

Мой код ниже просто покажет «Окное стекло» в качестве нижнего колонтитула и ничего выше нижнего колонтитула. Тем не менее, список команд будет показан сразу после команды «Окстекло». Я бы хотел, чтобы список и «ok glass» отображались одновременно.

Просьба сообщить.

public class MenuActivity extends Activity { 


    @Override 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 

     // Requests a voice menu on this activity. As for any other 
     // window feature, be sure to request this before 
     // setContentView() is called 
     getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);   
     setContentView(R.layout.start); 
    } 

    @Override 
    public boolean onCreatePanelMenu(int featureId, Menu menu) { 
     if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS|| 
       featureId == Window.FEATURE_OPTIONS_PANEL) { 
      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|| 
      featureId == Window.FEATURE_OPTIONS_PANEL) { 

      switch (item.getItemId()) { 
       case R.id.Atrig_menu_item: 
        // handle A trigger   
        break; 
       case R.id.Btrig_menu_item: 
        // handle B trigger 
        break; 
       case R.id.Ctrig_menu_item: 
        // handle C trigger 
        break; 
       case R.id.Dtrig_menu_item: 
        // handle D trigger 
        break; 
       case R.id.Etrig_menu_item: 
        // handle E trigger 
        this.finish();     
       default: 
        return true; 
      } 
      return true; 
     } 
     // Good practice to pass through to super if not handled 
     return super.onMenuItemSelected(featureId, item); 
    } 

}

ответ

0

В ХЕ 21, вы не можете изменить поведение контекстных голосовых команд.

Если вы хотите показать всю доступную опцию, прежде чем активировать команду «Контекстуальный голос», произнеся «Окстекло», вам нужно будет создать макет, отображающий содержимое вашего меню R.menu.main.

Но даже если вы создадите макет со всем элементом в своем R.menu.main, когда вы скажете «Окное стекло» в своем приложении, контекстная голосовая команда снова отобразит ваше меню.

Лучшим было бы отобразить текст или информацию в вашем главном макете, который является R.layout.start, а затем пусть команда контекстного голоса отобразит меню, когда пользователь скажет «Окно стекла».

Вот ссылка, чтобы показать вам, как построить простую схему: Tutorial Linear Layout

+0

В настоящее время карта является пустым с «Ok, стекло» колонтитул только. Теперь я хочу просто показать текст и картинку над нижним колонтитулом «Ok, glass» вместо заполнения меню, так как он каким-то образом будет отображаться после того, как пользователь скажет «Ок, стекло». Могу ли я узнать, как я могу это сделать с помощью кода выше? –

+0

Действительно, лучше, чтобы контекстная голосовая команда отображала меню, не нужно делать это самостоятельно. Я обновлю свой ответ и объясню, как заполнять ваш взгляд – Pull

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