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

Помогите разобраться с кодом


neo

Вопрос

Здравствуйте нашёл код для андройда

который читает текст

 

он работает но я не всё в нём понимаю...

 

зачем понадобилось создавать слабую форму FFormMain (weak)

 

почему просто не сделали класс с событиями

и при TJTextToSpeech_SUCCESS через TThread.Queue меняли что-то на форме?

unit Main;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  FMX.Memo, FMX.StdCtrls, android.speech.tts, Androidapi.JNIBridge,
  FMX.ScrollBox, FMX.Controls.Presentation;

type
  TFormMain = class(TForm)
    ButtonSay: TButton;
    Memo: TMemo;
    procedure ButtonSayClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    type
      TOnInitListener = class(TJavaLocal, JTextToSpeech_OnInitListener)
      private
        [weak] FFormMain: TFormMain;
      public
        constructor Create(FormMain: TFormMain);
        procedure onInit(Status: Integer); cdecl;
      end;
  private
    OnInitListener: TOnInitListener;
    TextToSpeech: JTextToSpeech;
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

uses Androidapi.Helpers, FMX.Helpers.Android;

{$R *.fmx}

constructor TFormMain.TOnInitListener.Create(FormMain: TFormMain);
begin
  inherited Create;
  FFormMain := FormMain;
end;

procedure TFormMain.TOnInitListener.onInit(Status: Integer);
begin
  if Status = TJTextToSpeech_SUCCESS then
    FFormMain.ButtonSay.Enabled := True;
end;

procedure TFormMain.ButtonSayClick(Sender: TObject);
begin
  TextToSpeech.speak(StringToJString(Memo.text), TJTextToSpeech_QUEUE_ADD, nil);
end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
  OnInitListener := TOnInitListener.Create(Self);
  TextToSpeech := TJTextToSpeech.JavaClass.init(SharedActivityContext, OnInitListener);
end;

end.

 

atts.zip

Ссылка на комментарий

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...