Я интегрирую голосовой поиск Google Now в одно из моих приложений для Android. Там я начинаю помощь Google, говоря: «О'кей, Google», и я буду слушать мою команду. Затем помощь сопоставит произносимый текст с действием, используя действие:
com.google.android.gms.actions.SEARCH_ACTION
Фрагмент из моего AndroidManifest
:
<activity android:name=".activities.GActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Затем в своей деятельности я проверяю действие и текст, произнесенный пользователем. Как это:
import com.google.android.gms.actions.SearchIntents;
public class GActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_g);
// Get the intent
Intent intent = getIntent();
if (SearchIntents.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
Toast.makeText(this,
query, Toast.LENGTH_SHORT).show();
}
}
}
Затем из моего терминала я запустил действие намерения с образцом текста, который должен быть произнесен (в среде разработчиков, поскольку голосовая помощь будет работать только после освобождения), с помощью следующей команды.
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION \
--e query "TextToBeSpoken" my.package.name
Я перехожу по этой ссылке с Android
Поддержка поисковых запросов из Google Voice Actions
Использование голосового поиска для интеграции с Google Now
Проблема в том, что после того, как я дал команду из терминала, моя деятельность была успешно запущена, но я не могу получить устный текст от объекта намерения, который всегда равен нулю.
String query = intent.getStringExtra(SearchManager.QUERY);
Может кто-нибудь сказать мне, почему приведенная выше строка возвращает ноль? Любой обходной путь для этого?