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

Pax Beach

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

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

  • Посещение

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

    12

Весь контент Pax Beach

  1. «A wake lock is a mechanism to indicate that your application needs to have the device stay on» Понимаю, такое использовать в играх, видео плеерах. А для по сути сервисов запрещать телефону спать не хорошо, нет? UPD: Хотя, вот после прочтения статьи Keeping the Device Awake понятнее становится.
  2. По порядку: 1. Сервис поможет работать с датчиками, не запуская приложение, если это нужно делать скрыто без участия пользователя. Даже, если приложение выгружено из памяти, сервис обработает нужные сообщения с датчиков и сети (если нужно PUSH с сервера получить). Ну это все выше обсудили вроде. 2. Другой вариант, прописать в Manifest BroadCastReceiver, слушать события типа (TJBluetoothDevice.JavaClass.ACTION_FOUND or TJBluetoothAdapter.JavaClass.ACTION_SCAN_MODE_CHANGED, могу ошибаться с BLE не работал). Приложение само будет запускаться (не открываться основная активити, а запускаться в памяти), когда система будет отлавливать эти события и передавать приложению. Вот только не уверен, что система их будет ловить, если датчик BLE ни какое приложение не будоражит, и он уснет. Я бы делал первый пункт и второй вместе. 3. Программно включать и выключать BlueTooth не есть хороший тон с точки зрения безопасности, если Гугл это еще не закрыли, то наверное закроют через время. Но в целом, это этическая сторона, а как это делается технически, можно посмотреть здесь. 4. Если у вас есть модуль «Embarcadero\Studio\18.0\source\rtl\net\System.Bluetooth», то в нем есть все, что нужно для работы с BLE. Осталось разобраться, как обрабатывать сообщения на ваших устройствах iOS или Android, как сделать так, чтобы датчики не спали и читали входящие и т.п. 5. В Tools→Getit PM есть компоненты Beacon Fence (BeaconZonesFencing, BeaconMapFencing). Кто-нибудь их смотрел? Судя по описанию, они решают задачу собственно технологии Beacon Fence. Очень интересно узнать, что в итоге получится у Kitty или кого-то еще из этого коллективного обсуждения.
  3. Да, глупость спросил. Не догадался макрос в шаблоне совсем убрать и заменить ручной строкой. Спасибо!
  4. Создан проект в RAD Studio 10.1 Berlin (Delphi), в приложении прилинкован сервис. При компиляции проекта в AndroidManifest.xml появляется строчка: <service android:exported="true" android:name="com.embarcadero.services.MyService" /> А мне нужна строчка: <service android:exported="true" android:name="com.embarcadero.services.MyService" android:label="Этот замечательный сервис создан вручную"/> Ни где не нашел такое свойство. В Project->Options->Version info есть свойство Label только для самого Host приложения. Помогите пожалуйста советом.
  5. Rusland, как ты обошел проблему "not allowed to send broadcast android.intent.action.PHONE_STATE" при вызове SendBroadcast?
  6. Коллеги, подскажите плиз, как использовать метод CallInUIThreadAndWaitFinishing? Как ловить событие окончания вызова? Не смог найти документацию.
  7. Какой такой случай может возникнуть? Тоже прикупил, может чего не знаю )
  8. Intents — это намерения. Intent Filter — это желание обслуживать намерения. Принял (приложением) отправленный Intent — будь добр запуститься и обработать это намерение. Не подходят для этой задачи startActivity, нужно использовать BroadcastReceiver и отправлять ему свой Intent: procedure TMainScreen.SomeOneSaysMeWhatIamStupidAndIsentHim; Begin TAndroidHelper.Context.sendBroadcast(Intent); End; procedure TMainScreen.FormActivate(Sender: TObject); begin begin try TAndroidHelper.Context.registerReceiver(FReceiver, FIntentFilter); finally end; end; end; procedure TMainScreen.FormDeactivate(Sender: TObject); begin try TAndroidHelper.Context.unregisterReceiver(FReceiver); finally end; end;
  9. Коллеги, есть ли у кого-то файл ReservedWordsOP.txt для Java2OP.exe, поделитесь пожалуйста? Каждый раз после конвертации приходится резервные слова руками исправлять.
  10. А... так это просто решается. procedure TfmSettings.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); var FService: IFMXVirtualKeyboardService; begin if (Key = vkHardwareBack) then begin Key := 0; // <=== вот здесь очищается буфер клавиатуры TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService)); if (FService <> nil) and (TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then begin FService.HideVirtualKeyboard; exit; end else begin Close; end; end; end;
  11. 1) В том же примере MyDialogs присваиваю TEdit'ам TabOrder по-порядку создания. А vkNext не переводит на следующий контрол. 2) А как узнать следующий, все контролы на форме перебирать? Может в FMX есть соответствующий метод, как в VCL SelectNext или FindNextControl? За пример перевода контрола по KeyUp тоже благодарность безмерная.
  12. Чтобы одни и те же наводящие вопросы вам не задавали, хоть подпись себе поставьте, в какой системе работаете и под какую пишите. А еще желательно какой фреймворк используете VCL/FMX. Хотя про это будем считать, что FMX. ... Думаю, можно начать с изучения этой страницы и далее по ссылкам в ней.
  13. Спасибо большое! Я так понимаю, переход между TEdit по нажатию в виртуальной клавиатуре vkNext или vkReturn не реализовывался? И кнопка по умолчанию тоже отсутствует?
  14. Не бейте сильно, но только вот такое безобразие в голову пришло =) procedure TFormMain.DialogEvent(Sender: TObject); var i: integer; s: string; begin s := ''; try for i := 0 to 1000 do s := s + (Sender as TMyInputQuery).Values[i] + #13#10; finally end; ShowMessage('TNotifyEvent '#13#10 + s); end; UPD: Отупение прошло. Но класс мне, конечно, надо будет переписать. procedure TFormMain.DialogEvent(Sender: TObject); var i: integer; s: string; begin s := ''; for i := 0 to (Sender as TMyInputQuery).Edits.count - 1 do s := s + (Sender as TMyInputQuery).Values[i] + #13#10; ShowMessage('TNotifyEvent '#13#10 + s); end;
  15. Коллеги, спасибо за проделанную работу. Работает пример как надо! P.S.: Очень странно, что встроенный InputQueryAsync использует TEdit, а доступ к нему для преднастройки не дает. P.P.S.: Авторы, krapotkin и ZuBy подскажите пожалуйста, как в DialogEvent узнать количество введенных в TMyInputQuery значений ( (Sender as TMyInputQuery).Values.Length не работает) ?
  16. Я использую сочетание свойств TEdit: *.KillFocusByReturn := false; *.ReturnKeyType := TReturnKeyType.Next; Соответственно на последнем компоненте *.KillFocusByReturn := true; Только не всегда в правильном порядке переход к следующему элементу фокус переходит, но это уже проблема дизайна формы.
  17. Коллеги, подскажите пожалуйста, как при вызове InputQueryAsync или до этого указать, что я хочу вводить только цифры (чтобы открывалась цифровая клавиатура, а не общая)? Меня интересует платформа Android, но может есть и общий способ?
  18. Возможно же, что какой-то depricated метод действительно перестали поддерживать в новой версии SDK, и он перестал работать, как обычно это делал? Как нам помочь, если не видим проект — кот Шредингера.
  19. Pax Beach

    Serial port

    Кто-нибудь знал, чтобы сервис автоматически запускался по событию BOOT_COMPLETED, нужно, чтобы сервис был Remote Service? В этом случае AndroidManifest.xml будет содержать строку <service android:exported="true" android:name="com.embarcadero.services.BootService" />, а это в свою очередь хорошо отразится на успешном запуске вашего сервиса после перезагрузки устройства. Это была хорошая новость. Плохая заключается в том, что если сервис уже написан, и вам надо включить его в автозагрузку, придется переписать сервис заново (перенести все написанное из обычного в Remote Service). Пора делать отдельный топик. Всем благ!
  20. Бесплатные все врут. А платные правду говорят. Чтобы судьбу узнать, нужно ручку программиста позолотить. =) А серьезно, интересно опыт монетизации таких приложений узнать. Хотя при 5000 скачиваний за полгода трудно наверное что-то внятное понять.
  21. Автору респект, безусловно. Если бы Алексей еще поделился опытом преодоления основных сложностей при реализации приложения, где брать поставщики данных для таких приложений, и как адаптировать их применительно к работе в RAD, было бы не только завидно, но и максимально увлекательно =)
  22. Pax Beach

    Serial port

    Несколько часов не мог понять, при чем тут Java2OP и Classes.dex, пока не прокачал обе темы и не нашел статью «Using a Custom Set of Java Libraries In Your RAD Studio Android Apps». За то теперь мой класс BootReceiver (extends BroadcastReceiver) добавляется через Project Manager, и проект компилируется и запускается. Правда при загрузке системы ресивер не отрабатывает — днем разберемся. 1. Написал JAVA класс. 2. Скомпилировал в JAR. 3. Сделал обертку при помощи Java2OP. 4. Подключил JAR в Project Manager. 5. Добавил к проекту обертку. 6. Подшаманил AndroidManifest.template.xml (если это нужно в задаче). 7. Пожалуйста → компилируй, собирай. Это реальный прогресс, по сравнению с ручным формированием DEX (ни Clean не сделать, ни Build Conf поменять). Только не знаю, с какой версии появилась такая возможность.
×
×
  • Создать...