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

neo

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

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

  • Посещение

Сообщения, опубликованные neo

  1. Всем привет!

    Народ кто-нибудь умеет работать с Мульти-тачем?

    нужно одновременно нажать на две картинки...

    они после нажатия должны вращаться... то есть тк нажимаю на них одновременно они должны одновременно вращаться...

    но они делают это поочерёдно =(

    пробовал каждое нажатие запихнуть в TThread.Synchronize(TThread.CurrentThread, procedure но это не работает

     

    Думал может просто моя Дельфи XE8 не поддерживает multi-touch.. но посмотрел доки вроде всё поддерживает... может где-то что-то включить нужно?

  2. Всем привет! =) товарищи... может немного не по теме но очень интересно узнать.

    работаю с idHttp

    он вызывается в потоке... а могу ли я из него делать вызов в трейИкон? чтоб к примеру в случае ошибки

    вылетал BalloonHint и говорил об ошибке?
     

      except
    
        on e: Exception do
        begin
           my.TrayIcon1.BalloonFlags:=bfNone;
           my.TrayIcon1.BalloonHint := 'Не могу установить соединение с сервером.';
           my.TrayIcon1.Visible := True;
           my.TrayIcon1.ShowBalloonHint;

    или я должен сделать это через Synchronize(Отдельная процедура);

    Просто знаю что на форме не положено делать изменения из потока тк могут быть ошибки... а тут не понятно =(

  3. 16 минут назад, ZuBy сказал:

    можно сделать открытие этого окошка через Intent

    
    // uses Androidapi.Jni.GraphicsContentViewText, Androidapi.Helpers;
    var
      Intent: JIntent;
    begin
      Intent := TJIntent.Create;
      Intent.setAction(StringToJString('com.android.settings.TTS_SETTINGS'));
      Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
      TAndroidHelper.Activity.startActivity(Intent);
    end;

     

    только посл строка не определялась заменил

     //TAndroidHelper.Activity.startActivity(Intent);
      SharedActivity.startActivity(Intent);

    тк у меня XE8

  4. 1 минуту назад, ZuBy сказал:

    Это в настройках делается, Синтез речи и там где-то должны быть голосовые пакеты/данные

    точно Настройки\Доп. возможности\Синтез речи там включил англ. яз

    А нельзя сделать чтоб он там автоматически включался?

  5. Всем привет! народ подскажите в чём может быть проблема?

    Использую этот пример [см. аттач]

    TextToSpeech.speak(StringToJString(Memo.text), TJTextToSpeech_QUEUE_ADD, nil);

    Нажимаю на SAY но на моём телефоне Xiaomi Redmi ничего не говорит.. тестировал до этого Sony Z3 было всё ок.

    проверил привилегии но ничего =( в чём может быть проблема?

    может на телефоне что-то должно быть установлено но не знаю что =(

     

    txtspch.zip

  6. там указан этот путь C:\Users\Public\Documents\Embarcadero\Studio\16.0\PlatformSDKs\android-sdk-windows

    внутри по этому адресу находится android-sdk-windows но почему то пишет что неверно

    как всю эту хрень снести и заново поставить с правильным путём?

    в sdk manager нету android 24

  7. Всем привет!

    народ подскажите в чём дело?

    Delphi XE8 перестал видеть мой телефон в Target

    проверял с разными проводами... на Андройде включен режим отладки.

    уже стёр дельфи и заново поставил... в SDK менеджере добавил Google USB Driver

    в диспетчере устройств выбираю свой телефон => обновляю драйвера -> указываю путь к android_winusb

    но выдаёт такую ошибку:

    1.png

  8. Всем привет)

     

    Народ тут появилась идея встроить мини-ассистента в приложение...

    тк одна девушка очень хорошо на эту роль подходит =)

     

    Идея такая что девушка подсказывает в приложении что нужно делать...

     

    Никогда такого в firemonkey не делал)

    может у кого-то был опыт?

     

    вот думаю сделать gif с анимацией и отдельно запускать звуковой файл

    или может сразу вставлять видео со звуком?

     

    какие для этого компоненты в фм лучше использовать?

    можно ли в плеере скрывать bar?

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

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

     

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

     

    зачем понадобилось создавать слабую форму 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

  10. длина то на андройдовскую подправлена?

     

    если например в винде делали так

     for I:=1 to Length(Value) do
      begin
      Result:=Chr(Ord(Value)+Ord(Code[X]));
      Inc(X);
      end;

     

    то в андройде она начинается на 1 раньше

     

     for I:=0 to Length(Value)-1 do
      begin
      Result:=Chr(Ord(Value)+Ord(Code[X]));
      Inc(X);
      end;

  11. китайцы уже давно не делают. а насчет нашего который делал, так его выловила в сети эмбаркадера, его реальный адрес, и вежливо попросила так больше так не делать.

     

    так потому то пока и пользуюсь делфи потому что в данный момент более-менее вменяемая система если закрывать глаза на то что ПО вываливается под андроидом не сказав ни слова почему и от чего. сам еще с 4 версии, не ХЕ4 а Делфи4,  начинал проги писать :)

    вы про господина Unis(а)?

    общался с ним как-то на трекере мне показалось нормальный чел и вираки не прицепляет... у него патч какой-то универсальный..

    он сказал что подправлять практически ничего не нужно в новых версиях...

    но делать ему это надоело а исходники выкладывать не хочет =)

  12. не знал как сформировать запрос) тк хз как она называется)
     
    [Android] Как отключить программную кнопку Меню?

    Итог

    Открываете файл AndroidManifest.template.xml. Он лежит в папке с вашим проектным файлом (появляется при первой попытке компиляции на Андроид)

    было

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />

    стало

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />

    добавить |screenSize

    сюда

    android:configChanges="orientation|keyboardHidden|screenSize"
  13. пфф... :wacko: этих кнопок нету в дизайнере... чёрная панель идёт от OS

     

    на новых аппаратах SONY этих стандартных кнопок физически нету...

    поэтому они отображаются на дисплее... но на всех Дельфовых приложениях появляется ещё эта кнопка [...]

     

    если на неё нажать ничего не происходит... но походу туда можно добавить менюшку

  14. Привет знатоки =)

    подскажите плз где в настройках можно отключить эту кнопку?

     

    она есть во всех приложениях которые я компилирую в чужих приложеньках её нету)

     

     

    post-1454-0-19293700-1441805522_thumb.jp

  15. а with разве еще не убрали из языка? обещали вродe

    для работы с более сложными файлами хорошо подходит TSreamReader/TStreamWriter

    там есть и Read/WriteString и Read/WriteInteger и т.д.

    в XE8, with всё ещё есть...

    без него тоже не прокатывает... а вот TSreamReader/TStreamWriter пригодился =) спасибо классный метод

    В какой кодировке у вас файл?

      with TStringList.Create do
        LoadFromFile('c:\q.txt', TEncoding.UTF8);

    так грузит текст в UTF-8 кодировке

    уже всё заработало через TSreamReader/TStreamWriter =)

  16. with TStringStream.Create do
    try
    LoadFromFile('d:\11.txt', TEncoding.UTF8);
    Edit1.Text := DataString;
    finally
    Free;
    end;

    всё что нужно было

     

    не... в андройде так не компилируется (Too many actual parameters)

     

    но пробовал вот так первые 5 симв в utf8 декодировать тоже не работает

     m:=TMemoryStream.Create;
      m.LoadFromFile(TPath.GetDocumentsPath + PathDelim +'access.key');
      m.Seek(0,soFromBeginning);
    
      SetLength(Bytes,5);
      m.Read(Bytes,5);
    
      Result:=TEncoding.UTF8.GetString(Bytes,Low(Bytes),High(Bytes)+1);
  17. итак расскажу о своём опыте... вдруг кому-то будет полезно

    попробовал максимально простым способом записать/считать строку в файле
     

    procedure WriteToFile(s: String);
    var
      f: TMemoryStream;
    begin
      f:=TMemoryStream.Create;
      try
        f.Write(S[1], Length(s));
        f.SaveToFile(TPath.GetDocumentsPath + PathDelim +'access.key');
      finally
        f.Free;
      end;
    end;
    
    function GetTextFromFile: string;
    begin
      with TStringStream.Create do
      try
        LoadFromFile(TPath.GetDocumentsPath + PathDelim +'access.key');
        Result:=DataString;
      finally
        Free;
      end;
    end;

    но тоже ничего не получилось...
    в XE8 под android нету ShortString и AnsiString
    поэтому скачал их отдельно и изменил на WriteToFile(s: ShortString);
    и всё заработало...

    не понятно только зачем их убрали? и как сдалать без них?

     

    вот ссылка на ShortString и AnsiString http://www.fmxexpress.com/use-ansistring-and-utf8string-in-delphi-xe5-firemonkey-on-android-and-ios/

×
×
  • Создать...