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

Pax Beach

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

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

  • Посещение

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

    12

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

  1. Like
    Pax Beach получил реакцию от dnekrasov в Фотография стандартной камерой смартфона   
    Проблема решалась очень просто.
    Оказывается нужно при вызове startActivityForResult использовать requestCode отличный от занятых в FMX, я использую REQUEST_IMAGE_CAPTURE = 1001 тогда обработчик сообщений FMX поймет, что сообщение не для него и передаст его в систему. 
     
     
  2. Like
    Pax Beach получил реакцию от #WAMACO в Фотография стандартной камерой смартфона   
    Проблема решалась очень просто.
    Оказывается нужно при вызове startActivityForResult использовать requestCode отличный от занятых в FMX, я использую REQUEST_IMAGE_CAPTURE = 1001 тогда обработчик сообщений FMX поймет, что сообщение не для него и передаст его в систему. 
     
     
  3. Like
    Pax Beach отреагировална Brovin Yaroslav в Ошибка "Bitmap size too big"   
    Нет. Это значит, что не нужно загружать 4 Мб фотографию в TImage с целью отобразить ее в итоге в размере 400х200. Нет, просто присваивайте в Bitmap TBtmapSurface. Bitmap.Assign(BitmapSurface) Методы по загрузки из файлов и потоков есть. Смотрите TBitmapCodecManager
  4. Like
    Pax Beach получил реакцию от Andrey Efimov в Фотография стандартной камерой смартфона   
    Проблема решалась очень просто.
    Оказывается нужно при вызове startActivityForResult использовать requestCode отличный от занятых в FMX, я использую REQUEST_IMAGE_CAPTURE = 1001 тогда обработчик сообщений FMX поймет, что сообщение не для него и передаст его в систему. 
     
     
  5. Like
    Pax Beach отреагировална Brovin Yaroslav в 2016 Cool App Winners   
    When we first launched our Cool App contest, we knew there would be some stiff competition. The winners represent some truly amazing innovations that are helping people live and work more creatively and compassionately. I want to congratulate all these great developers for their innovative use of Embarcadero tools. If this year is any indication, I truly can’t wait to see what’s in store for 2017.

    The very first entry to the Cool App contest was 1Password for Windows. This is the premier password and identity manager, and many of us already used it and were fans, but we didn’t know it was written in Delphi. When interviewing the Stefan van As, the developer of 1Password for Windows, it was really clear why he used Delphi: it has a great collection of encryption libraries, fast native code, and everything you need to make amazing user interfaces.
    [YoutubeButton url='https://www.youtube.com/watch?v=CkUF42OPKvE'] Our next Cool App winner already have a few other awards to it’s name, notably a Technical Achievement Emmy award. And that winner is FrameForge Previz Studio. If you’ve ever seen behind the scenes of a movie you’ve no doubt seen them working with storyboards. A real low-tech way of working through the story and framing before filming begins. Well that has all changed with the introduction of FrameForge 3D pre-visualization software. Not only does it make it much easier to create the storyboard frames, but it understands things like camera spacing, perspective, set layouts and more.
    A little back story. I’m a big fan of the TV series Orphan Black, which is about a bunch of clones. This means the main actress plays a number of different roles, and is regularly in scenes where she is interacting with herself. From the very beginning I was impressed with how well the scenes worked. So much so that I checked the credits to see if she was quintuplets or something. When I was interviewing Ken Schafer, the developer of FrameForge, he mentioned that FrameForge was used in the production of Orphan Black. It all made sense. It is only with a tool as powerful and versatile as FrameForge could something so impressive be pulled off so well.
    [YoutubeButton url='https://youtu.be/PIDlpxdXiY4'] I come from a very musical family. Both of my parents released music albums and all my siblings play a couple instruments by ear and sing beautifully. I’m the one they call when they have computer trouble, but I’ve never been musical. I tried. Took a couple classes, but never really got it. That is where the next winner of our Cool App contest comes in. Introducing EarMaster for the iPad. This is the app for people who want to learn music theory like rhythm and the ability to carry a tune. I downloaded EarMaster and installed it on my iPad and I kid you not, within a few minutes my wife noticed a difference. I’m not ready to release an album yet, but I’m planning to work with EarMaster some more.
    Hans Lavdal Jakobsen is the lead developer behind EarMaster. He developed the original EarMaster for Windows in Delphi, and when it came time to create an iPad version he wanted to use Delphi. A few people told him it wouldn’t work, but the end result was he shared 97% of code with the Windows and macOS versions, got to market quicker and had a fantastic native app for iPad.
    [YoutubeButton url='https://www.youtube.com/watch?v=91Bh-JCYKkM'] I was starting to think nothing else could impress me as much as these first few winners. I was wrong, and I’m OK with that. Expresii is the most impressive paint program I’ve ever seen. It uses the GPU for real-time physics simulation of watercolors. I can watch their showcase video over and over again. It is mesmerizing the way you can reposition the tablet to control the flow of the paint as the water flows down the canvas - in real-time! I’m starting to wonder if there is any reason to use paper anymore at all! Nelson Chu tells me that the GPU simulated physics are powered by GLSL and GLScene, and he uses the built in sensor components that come with Delphi to determine the tip of the tablet. He is looking forward to using the new parallel programming library to simulate a split brush in parallel.
    [YoutubeButton url='https://youtu.be/Tu3O5qvVVHo'] Our most recent Cool App winner is something completely different. Built by two sixth grade girls, Suresh and Safalta, from Sherwood Middle School in Shrewsbury, Massachusetts, HOP is designed to help prevent both hunger and obesity. The idea is to help people understand the relation between their caloric intake and obesity. So those who are overweight can reduce their caloric intake, and then donate the money they would have spent on food to feed the hungry. It is a brilliant idea.
    The thing I love about this story is Suresh and Safalta’s school taught them to use Java and Python for app development, but they were not satisfied with the selection of tools they saw. Until they tried Delphi. As they put it, “Embarcadero provided [an] easy button tool for compiling codes for multiple devices including android, iOS etc. which helped us to develop app quite faster. We are planning to recommend the use of Embarcadero [Delphi] to other kids interested in developing apps.”
    [YoutubeButton url='https://youtu.be/1I0OEi2gOcE'] We have an impressive collection of apps as contenders for future cool app winners, but we are always looking for more. Maybe it will be your app. Enter today and you could win the opportunity to be highlighted in a future newsletter, blog post and press release, not to mention receiving a $500 Amazon (or equivalent) gift card.
    Просмотр полной статьи
  6. Like
    Pax Beach получил реакцию от Dozent в Принудительная ориентация экрана   
    Я использую принудительную ориентацию экрана на Android устройстве.
    Что это означает?
    Когда открывается приложение, экран переворачивается в то положение, которое я устанавливаю по умолчанию, или которое было установлено в настройках приложения (состояние читается при запуске приложения).
    Приведу пример кода, как я его написал. Здесь что-то лишнее, что-то может стоит доработать.
    Есть две проблемы в примере:
    1. Чтобы изменить ориентацию экрана, приходится закрывать (уничтожать) приложение, а потом открывать заново.
    2. Когда стоит режим ландшафт, то срабатывает автоматический переворот экрана по сенсору, когда поворачиваешь экран на 180 градусов. А когда стоит режим портрет, автоматически экран не переворачивается.
     
    В настройках проекта так:

     
    В Object inspector для главной формы так:

     
    В модуле проекта вот так:
    begin Application.Initialize; TAndroidHelper.Activity.getWindow.addFlags (TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON); Application.FormFactor.Orientations := [TFormOrientation.Portrait, TFormOrientation.InvertedPortrait, TFormOrientation.Landscape, TFormOrientation.InvertedLandscape]; Application.CreateForm(TDM, DM); Application.CreateForm(TfmMain, fmMain); VKAutoShowMode := TVKAutoShowMode.Always; Application.Run; end.  
    В модуле главной формы:
    procedure TfmMain.FormShow(Sender: TObject); begin if DM.setOrientation(TAndroidHelper.Activity) then Invalidate; end;  
    В дата-модуле вот так:
    function TDM.setOrientation(Activity: JActivity): boolean; var orient: Integer; begin result := False; if DM.GetSettingsBoolean('IsOrientationLandshaft', true) then orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_LANDSCAPE else orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_PORTRAIT; try if Activity.getRequestedOrientation <> orient then begin Activity.setRequestedOrientation(orient); result := true; end; except result := False; end; end;  
     
  7. Like
    Pax Beach получил реакцию от Error в Принудительная ориентация экрана   
    Я использую принудительную ориентацию экрана на Android устройстве.
    Что это означает?
    Когда открывается приложение, экран переворачивается в то положение, которое я устанавливаю по умолчанию, или которое было установлено в настройках приложения (состояние читается при запуске приложения).
    Приведу пример кода, как я его написал. Здесь что-то лишнее, что-то может стоит доработать.
    Есть две проблемы в примере:
    1. Чтобы изменить ориентацию экрана, приходится закрывать (уничтожать) приложение, а потом открывать заново.
    2. Когда стоит режим ландшафт, то срабатывает автоматический переворот экрана по сенсору, когда поворачиваешь экран на 180 градусов. А когда стоит режим портрет, автоматически экран не переворачивается.
     
    В настройках проекта так:

     
    В Object inspector для главной формы так:

     
    В модуле проекта вот так:
    begin Application.Initialize; TAndroidHelper.Activity.getWindow.addFlags (TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON); Application.FormFactor.Orientations := [TFormOrientation.Portrait, TFormOrientation.InvertedPortrait, TFormOrientation.Landscape, TFormOrientation.InvertedLandscape]; Application.CreateForm(TDM, DM); Application.CreateForm(TfmMain, fmMain); VKAutoShowMode := TVKAutoShowMode.Always; Application.Run; end.  
    В модуле главной формы:
    procedure TfmMain.FormShow(Sender: TObject); begin if DM.setOrientation(TAndroidHelper.Activity) then Invalidate; end;  
    В дата-модуле вот так:
    function TDM.setOrientation(Activity: JActivity): boolean; var orient: Integer; begin result := False; if DM.GetSettingsBoolean('IsOrientationLandshaft', true) then orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_LANDSCAPE else orient := TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_PORTRAIT; try if Activity.getRequestedOrientation <> orient then begin Activity.setRequestedOrientation(orient); result := true; end; except result := False; end; end;  
     
  8. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в баг в компоненте TBluetoothLE   
    @Rusland
    не в том месте редактируешь, вот тут попробуй
     
  9. Like
    Pax Beach получил реакцию от Равиль Зарипов (ZuBy) в баг в компоненте TBluetoothLE   
    Если бы мы здесь писали в Android Studio или любой другой IDE на JAVA для Android, можно было бы через Android менеджер GATT устройств обратиться к JAVA интерфейсу конкретного устройства BLE и вызвать нужный нам метод.
    Но ты ставишь задачу, сделать вызов, работая с устройствами через компонент TBluetoothLE. В Delphi работа с модулем Androidapi.JNI.Bluetooth.pas не явная, этот файл всего лишь обертка для внешней Android библиотеки, вызовы к ее методам осуществляются через патч, работу внесенных изменений можно проверить в процессе отладки на устройстве. Участники написали, что нужно сделать, осталось только протестировать, делается ли вызов метода requestMTU(), проходит ли согласование корректно. Может быть у тебя метод вызывается, но твое BLE не дает согласие на изменение размера пакета.
    Хорошая мысль, сделать параметр "MTU_Size" в компоненте, чтобы компонент на любой платформе при сопряжении с устройствами выполнял принудительное согласование MTU. Для этого нужно написать разработчикам, как сказал ранее ZuBy.
     
  10. Like
    Pax Beach получил реакцию от Andrey Efimov в баг в компоненте TBluetoothLE   
    Не уверен, что для кого-то здесь дело в этом.
    Просто мы пытаемся разобраться с FMX, и так как устройство только у тебя, а обратная связь скупая, то дальше только пустая трата времени.
    Надо искать человека, у которого есть подходящее устройство  БЛЕ и желание копаться с  MTU.
  11. Like
    Pax Beach отреагировална Andrey Efimov в баг в компоненте TBluetoothLE   
    Важно, ещё уточнить, на какой версии Андроида пробуете.
    Метод введен в API 21, соответственно работать будет на Android 5.0 и выше.
  12. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в баг в компоненте TBluetoothLE   
    ну ок, держите (в том же файле)
    procedure TAndroidBluetoothGattListener.onConnectionStateChange(gatt: JBluetoothGatt; status, newState: Integer); begin FGatt.FConnectionStatus := TBluetoothDeviceState(newState); FGatt.FServicesEvent.SetEvent; case FGatt.FConnectionStatus of TBluetoothDeviceState.None: if Assigned(FGatt.OnDisconnect) then FGatt.OnDisconnect(FGatt); TBluetoothDeviceState.Connected: if (not FGatt.FConnecting) and Assigned(FGatt.OnConnect) then begin if TJBuild_VERSION.JavaClass.SDK_INT >= TJBuild_VERSION_CODES.JavaClass.LOLLIPOP then FGatt.FJGatt.requestMtu(64); FGatt.OnConnect(FGatt); end; // TBluetoothDeviceState.Paired:; end; FGatt.FConnecting := False; end; В следующий раз подготовьте как можно больше материала, никому не охото копаться в проблеме тем более не имея на руках нужного девайса.
    Если есть код на Java и место куда его вставить, так мы переведём на делфи (по возможности)
    Надеюсь ваша проблема решится
  13. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в баг в компоненте TBluetoothLE   
    Я не проверял код, но попробуйте.
    копируем себе в проект файлик System.android.Bluetooth.pas, он расположен по пути source\rtl\net\
    далее находим constructor TAndroidBluetoothGattListener.Create(const ALEDevice: TAndroidBluetoothLEDevice); 
    и заменяем на это
    constructor TAndroidBluetoothGattListener.Create(const ALEDevice: TAndroidBluetoothLEDevice); var retry: Integer; status: Boolean; begin inherited Create; FGatt := ALEDevice; // вставляем наш код retry := 5; status := False; while (not status) or (retry > 0) do begin status = FGatt.FJGatt.requestMtu(тут значение); dec(retry); end; end; если в этот момент уже есть доступ к интерфейсу JBluetoothGatt, то все получится.
    проверять не на чем, так что дальше сами
  14. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в ANDROID не приходят PUSH Уведомления   
    Такс, начнём с этого:
    Project Options Entitlement List Recieve Push Notification = true Version Info apiKey = server_key (из консоли) uses секция
    в private секции формы пишем
    процедура для получения и отправки токенов на сервер
    событие OnServiceConnectionChange
    событие OnReceiveNotificationEvent
    AndroidManifest.template.xml
    Ваша реализация может отличаться, т.к. у меня работа с FCM выполнена на PHP
  15. Like
    Pax Beach получил реакцию от Kitty в баг в компоненте TBluetoothLE   
    Можно, предварительно подключив модуль Androidapi.JNI.Bluetooth.pas,
    и инициализировав объект класа TJBluetoothGatt.
    UPD:
    в Berlin точно
  16. Like
    Pax Beach получил реакцию от Rusland в Работа с видео от IP Камеры   
    Это самый известный мне пример.
    Как это работает на телефонах.
     
  17. Like
    Pax Beach отреагировална Andrey Efimov в баг в компоненте TBluetoothLE   
    Ага, только перепроверьте обёртку, очень часто они неправильно сгенерены...
  18. Like
    Pax Beach получил реакцию от AngryOwl в Работа с видео от IP Камеры   
    Это самый известный мне пример.
    Как это работает на телефонах.
     
  19. Like
    Pax Beach отреагировална chaplin.u@gmail.com в баг в компоненте TBluetoothLE   
    докопался до истины и она посредине. 
    стандартно обмен идёт по минимуму - 20 байт
    но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.
    апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.
    как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.
    Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !
    Ну и если кто знает где есть нормальная компонента - просьба сообщить.
     
  20. Like
    Pax Beach получил реакцию от Камышев Александр в Помогите с MySQL   
    Да, я помню, там каждый высказал свое мнение, ни к чему не пришли, остались при своем.
    У меня есть мнение, что прямые руки при настройке ролей БД и правильная обработка соединения с распределенной БД отлично заменяют трехзвенку.
    А безаппеляционное заявление «ХХХ — зло» — это флэйм и холивар, бесполезный мусор на форуме ;-)
     
    L2C and have right hands!
  21. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Помогите с MySQL   
    Ну для своих проектов сделан файлик с набором функций, которые постоянно использую. Фреймворки не использую, хватает функционала пхп, т.к. пишу только бэкэнд.
    Возможно нужно расшифровать, что такое LAMP - это набор пакетов/модулей/сервисов Linux Apache Mysql Php.
    т.к. форум у нас по FMX выкладывать код на пхп не стоит, напишите в личку и я покажу примеры работы с БД через бэкэнд
  22. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в Помогите с MySQL   
    как по моему опыту работы с БД напрямую:
    невозможно было отловить момент переключения между станциями связи и/или Wi-Fi в этот момент компоненты которые использовал (MyDac, FireDac) крашились и невозможно было сделать реконект их события которые имелись для этих целей, не отрабатывали правильно по сравнению с трёхзвенкой работает медленней опять же безопасность хранить хост, логин, пароль в приложении? а если кто-то узнал эти данные? как быстро сменить данные для авторизации, чтобы ни у кого не упало приложение? при смене хоста где висит БД - крах (делают иногда что БД висит на отдельных серваках) тяжелые запросы, вычисления должен производить сервер, т.к. у него ресурсов побольше
  23. Like
    Pax Beach отреагировална Rusland в Приложение не отвечает. Закрыть?   
    Как-то так наверно.
     
  24. Like
    Pax Beach отреагировална krapotkin в Приложение не отвечает. Закрыть?   
    я сделал в самом начале, какой еще пример?
  25. Like
    Pax Beach отреагировална kami в Приложение не отвечает. Закрыть?   
    Да простят (или не простят) меня модераторы за ссылку на сторонний ресурс, но вот достаточно фундаментальный труд, который разжевывает всё по полочкам и не потерял ни грана актуальности с момента написания. Доступен даже (особенно) для тех, кто про потоки не слышал или "я знаю, что есть такое слово"
    Изучать до просветления. И после прочтения - не стараться использовать потоки где попало. Ну, это придет с опытом.
×
×
  • Создать...