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

brunnengi

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

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

  • Посещение

  • Победитель дней

    21

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

  1. Здравствуйте.
    Не могу понять принципиальную разницу между Push уведомлениями и самостоятельным запросом к серверу с некой периодичностью.
    Допустим можно же создать, как в некоторых примерах, само приложение и сервис к нему, который запущен в фоне. Сервис будет опрашивать сервер периодически и если есть какая то команда/информация, то выполнять её. Из сервиса ведь тоже можно показать шторку? И по клику на неё запустить приложение? Или я не прав?
    В чем преимущество Push уведомления? 
    Просветите немного пожалуйста.

  2. Здравствуйте.

    Надо запустить приложение из моего.
    Но никак не выходит. Не могу понять, то ли дело в самом Fire Monkey, то ли Win10 такой "крепкий".
    Может у кого есть действенный код запуска exe файла который лежит в той же папки что и запущенная программа на FMX?
    Подсобите пожалуйста, а то уже с восьми вечера эксперементами занимаюсь.

  3. Цитата

    На каких девайсах пробуете и какие версии Андроида на них?

    Samsung Note3 (Android 5.0) <--> Samsung Tab3 (модель SM-T531, Android 5.0.2)

     

    Спасибо за весь выложенный проект. Действительно через твой проект работает. Буду пробовать ещё раз создать с нуля у себя и посмотрю что выйдет.

  4. Про звук мне грешным делом тоже мысли приходили. Но это может и забавно, но вряд ли удобно. Да и в плане кода под Андроид придется сильно попотеть, а скорость передачи будет уж слишком низкая. С таким же успехом можно и камерой мигания светодиода считывать, тоже будет забавно, но в практических целях не очень как то.

    Смена картинок с QR кодом тоже приходила в голову. Но это опять таки не удобно. Получается сначала один должен отфоткать 10 картинок, потом другой у первого 10 фоток. Удобство пропадает.

    Блин, вот с Embacadero всегда так, вроде что то интересное вводят, вроде примеры работают, но в реальных проектах становится тяжело применимо, потому что какая то мелочь не даёт этого сделать. Самое что интересное, многое что вводится не так остро нужно, как самые обыкновенные, но хорошо работающие стандартные процедуры. Взять ту же камеру, которая по сей день с тормозами работает. Теперь и AppTethering который работает тока при "определенных" условиях. Блин, а вед задача передать данные с одного устройства на другое звучит как вполне тривиальная. Но увы, это Embacadero, детка! В реальных проектах приходится использовать много разных "блоков" и когда эти "блоки" сами по себе плохо работают, разработка превращается в ад. 

  5. Вопрос остался открытым.

    1. AppTethering через Bluetooth между двумя смартфонами не работает. (спасибо Rusland'у за подтверждение это проблемы)

    2. AppTethering через Wi-Fi не пашет, если на одном устройстве создать моб.точку доступа, а с другого подключиться. Вроде бы они получаются в одной подсети, но по факту AppTethering не пашет.

    3. Хотел сделать передачу считывания через QR Code, но объем данных для QR оказался слишком большой. Да и адекватного компонента нет. 

    Какие ещё варианты передачи данных/строки/файла, из программы на FMX стоящей на смартфоне некой Alice можно передать в такую же программа на FMX стоящей на смартфоне некого Bob'а, максимально легко (не в плане кода, а плане дальней эксплуатации пользователями), вы можете посоветовать, предложить? 

    Условия:

    1. При передачи не использовать интернет. Должна быть передача именно с телефона на телефон.

    2. Способ передачи должен быть технически возможен на большинстве устройств. Т.е. например передачу через NFC не рассматриваем, так как есть не у всех.

  6. Серверная часть:

    Спойлер
    
    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IPPeerClient,
      IPPeerServer, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,
      System.Tether.Manager, FMX.StdCtrls, System.Tether.AppProfile;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        TetheringManager1: TTetheringManager;
        Button1: TButton;
        TetheringAppProfile1: TTetheringAppProfile;
        procedure TetheringManager1PairedFromLocal(const Sender: TObject;
          const AManagerInfo: TTetheringManagerInfo);
        procedure TetheringManager1PairedToRemote(const Sender: TObject;
          const AManagerInfo: TTetheringManagerInfo);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      TetheringManager1.AutoConnect();
    end;
    
    procedure TForm1.TetheringManager1PairedFromLocal(const Sender: TObject;
      const AManagerInfo: TTetheringManagerInfo);
    begin
      Memo1.Lines.Add('PairedFromLocal: ' +
          AManagerInfo.ManagerIdentifier + ' ' +
          AManagerInfo.ManagerText);
    end;
    
    procedure TForm1.TetheringManager1PairedToRemote(const Sender: TObject;
      const AManagerInfo: TTetheringManagerInfo);
    begin
      Memo1.Lines.Add('PairedToRemote: ' +
          AManagerInfo.ManagerIdentifier + ' ' +
          AManagerInfo.ManagerText);
    end;
    
    end.

     

    Клиентская часть:

    Спойлер
    
    
    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IPPeerClient,
      IPPeerServer, System.Tether.Manager, System.Tether.AppProfile,
      FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        TetheringAppProfile1: TTetheringAppProfile;
        TetheringManager1: TTetheringManager;
        procedure TetheringAppProfile1ResourceReceived(const Sender: TObject;
          const AResource: TRemoteResource);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    procedure TForm1.FormShow(Sender: TObject);
    begin
      TetheringManager1.AutoConnect();
    end;
    
    procedure TForm1.TetheringAppProfile1ResourceReceived(const Sender: TObject;
      const AResource: TRemoteResource);
    begin
      if AResource.ResType = TRemoteResourceType.Data then
      begin
        Memo1.Lines.Add(AResource.Hint + ': ' + AResource.Value.AsString);
        TetheringAppProfile1.Resources.FindByName('TestSend').Value := '[Server] Постоянный ресурс';
      end;
    end;
    
    end.

     

     

    TetheringManager.AllowedAdapters = Bluetooth;

    Когда стоит Network и устройства подключены через ВайФай, то все работает. Но как тока и у сервера и клиента ставлю Bluetooth и собрегаю смартфоны между собой, то перестает работать.

  7. Здравствуйте.

    Необходимо добавить в приложение возможность обменяться строками данных между смартфонами.

    Задача такая. Смартфон "Alice" сгенерировал некую строку, допустим такую "somegendatadrom_a".

    На смартфоне "Bob" приложение должно прочитать/получить строку "somegendatadrom_a".

    Как проще всего, без болезненнее, быстро, эффективно и с помощью каких компонентов это сделать?

  8. В 04.07.2016 в 15:36, Rusland сказал:

    На обычном Android планшете этого не сделать?

    Ну в полном объеме, точно так же как и на компе, не сделать конечно. 

    Не смотря на то что мобильные устройства становятся мощнее, всё же им пока еще тяжело догнать ПК. 

    Да, игры становятся красивее, но если присмотреться, то видно как в этих играх, сильно уменьшено количество полигонов, особенно на вторых планах, некоторые части прорисовки рассчитаны заранее, какие то объекты вообще исчезают из виртуального мира во время резких поворотов персонажа в игре. Так что всё это относиться к оптимизации, и она отнимает много времени и даже тогда существует не нулевой шанс что оптимизация не даст нужного эффекта.

    Так что если требуется вывести на планшет/смартфон, то придется много стараться в плане оптимизации. 

    Но если объективно, то с хорошей графикой, плавностью движения, работой света и тени и т.д. - нет, не сделать. Но что то похожее, с заниженным качеством, и высокой информативностью это можно.

     

     

     

  9. Ну как тебе сказать... однозначного ответа тут нет.. и да и нет.

    Можно конечно на OpenGL + чистом Delphi сделать. А можно и на FMX сделать. Но без алгоритмов оптимизации, это всё может притупливать.

    Вообще, можно конечно. Но я бы взял комп с запасом ресурсов побольше. Вообще кстати такие программы набирают обороты и в Москве есть не мало компаний которые уже работают и контролируют свои узлы с помощью таких вот программ. Но и у них компы тоже очень мощные.

    Словом, если ресурсы позволяют и есть время на разработку, то можно конечно. 

  10. Нельзя положить поверх карты (андроид), я так понимаю что это проблема только программирования на Андроид из под делфи, коли в других программ под андроид нормально идет?

     

    Цитата

    нужно изменять координаты маркера при движении карты на Map.location

    попробую, посмотрю что из этого выйдет.

     

     

    А варианта перерисовывать в самом компоненте нет?

  11. Ну я так раньше делал. 

    Но помогало чуть чуть. Сейчас, поковырявшись, понял что там две линии. Одна от DropLine (она убралась методом указанным Ярославом), а вторая внутренняя линия, и она лечиться margin.right = -1;

    Но все же хотелось узнать что это за линии такие, зачем они нужны?

  12. Не помогло.

    Нажал на MultiView компоненте ПКМ, выбрал EditDefultStyle. В дизайнере выставил DropLine цвет в Null.

    Нажал на крестик в правом верхнем углу, на вопрос о применение и сохранение ответил "Yes".

    Но линия никуда не делась. Имя стиля у MultiView перевыбирал.

    Может я что то не так сделал? Или не доделал?

     

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