4

Задание: сделайте что-нибудь в своем приложении по команде от android wear watch, говоря команду. Это то же самое, что и команда send из поиска Google (путем написания или записи команды).Начать работу с поискового или голосового ввода google

Как к описанному в http://developer.android.com/training/wearables/apps/voice.html "Объявить App-предоставляемые голосовые команды"

Я создал два вида деятельности:

<activity 
     android:name=".MainActivity" 
     android:label="speech test main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".SomeAction" 
     android:label="speech test action" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Оба действия могут быть запущены из поиска Google с помощью команды «старт [Android: ярлык для деятельности] ». Затем я могу выполнить соответствующее действие at onResume().

Но при запуске системы значок запускается для каждого вида деятельности! Я попытался сменить категорию на DEFAULT, значок исчезнет, ​​но действие не может быть запущено из поиска Google. Кажется, поиск Google может запускать действия только с категорией LAUNCHER.

Так что вам нужно запустить действие (или просто отправить намерение, если это возможно) из поиска Google. Проблема - дополнительные значки на панели запуска.

+0

просто используйте этот бит <активность android: name = ". SomeAction" android: label = "speech test action"> – Amir

ответ

0

Вы не можете использовать <action android:name="android.intent.action.LAUNCHER" /> дважды, потому что это даст два значка запуска. Кроме того, удалите <category android:name="android.intent.category.DEFAULT" /> из обоих видов деятельности. Вместо этого просто сосредоточьтесь на том, чтобы иметь только одну главную активность запуска, где вызывается getIntent(), а затем повторно отправлять любые намерения/дополнительные/флажки/другие данные, которые пришли с намерением в ваше второе действие, если это необходимо. В качестве альтернативы, обработать намерение в основной активности запуска, а затем вызвать другой метод во втором действии.