Перейти к содержанию
Fire Monkey от А до Я

abwabw

Пользователи
  • Постов

    4
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    abwabw отреагировална Brovin Yaroslav в Вызов распознавателя голоса. Помогите перевести Java код на Delphi   
    Почему Не все 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;
×
×
  • Создать...