Почему Не все Android API включено в RTL
Это АПИ, как и другое, специально не включено в состав RTL. Поскольку в RTL включены только те классы и пакеты, которые непосредственно используются и нужны для корректного функционирования FireMonkey.
Вторая не менее важная причина - это прирост размера выходного файла вашего приложения. Проблемы трансляции всех модулей Android API нету. Главная причина в том, что мост вызовов между Delphi и Android программный, и поэтому включение огромного числа дополнительных интерфейсов Android API влечет значительный прирост конечного исполняемого файла. Так как он будет содержать всю ту часть модулей, которые не используются.
Решение
1. Переводим нужную часть Android API. Делаем по аналогии, как переведены другие классы и пакеты, сравнивая документацию Андроида и аналогичные обертки на Delphi AndroidApi.JNU.* Androidapi.JNI.Speech.pas.zip
2. Пишем реализацию на Delphi:
uses
Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Speech, Androidapi.Helpers, FMX.Helpers.Android;
procedure OpenSpeechRecognizer;
var
Intent: JIntent;
begin
Intent := TJIntent.JavaClass.init(TJRecognizerIntent.JavaClass.ACTION_RECOGNIZE_SPEECH);
Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_PROMPT, StringToJString('Голосовой поиск Inforino'));
Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE_MODEL, TJRecognizerIntent.JavaClass.LANGUAGE_MODEL_WEB_SEARCH);
Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_MAX_RESULTS, 1);
Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE, StringToJString('ru-RU'));
SharedActivity.startActivityForResult(Intent, 1);
end;