Pax Beach

Пользователи
  • Публикации

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

  • Посещение

  • Days Won

    7

Pax Beach last won the day on 23 декабря 2016

Pax Beach had the most liked content!

О Pax Beach

  • Звание
    Продвинутый пользователь
  • День рождения

Информация

  • Пол
    Мужчина
  • Город
    Moscow

Контакты

  • Skype
    PaxBeach
  • StackOverflow
    http://stackoverflow.com/users/6255550/pax-beach

Посетители профиля

647 просмотров профиля
  1. Вот по шагам пройди школу Андроид, не знаю, дают еще сертификаты. Поставь AS, делай примеры. Найди на трекере курсы UDEMY — очень качественные.
  2. Проблема решалась очень просто. Оказывается нужно при вызове startActivityForResult использовать requestCode отличный от занятых в FMX, я использую REQUEST_IMAGE_CAPTURE = 1001 тогда обработчик сообщений FMX поймет, что сообщение не для него и передаст его в систему.
  3. В Android 6 на Berlin 10.1.1 перестала работать стандартная функция TakePhotoFromCameraAction. Иногда работает, иногда нет. Поэтому я решил написать нативную замену этой функции. За основу взят пример с портала разработчиков Android. Мой пример про видео на базе отправки Intetn смартфону и получение результата в виде другого Intent, отлично работает. Но для фотографий этот пример сыпется, после выполнения фотографирования система возвращается в мое приложение и оно вылетает с ошибкой: Если заглянуть в исходнки, там все обвязано сообщениями в лог монитора. Последнее сообщение «+ Intent is sent». Помогите пожалуйста разобраться, в чем может быть проблема? PhotoIntent.zip
  4. Вот пример, преноси в сервис и пиши в фоне.
  5. Я использую принудительную ориентацию экрана на 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;
  6. Ребята, я до этого отписался, что перед НГ нет ни одного свободного дня, и мне придется отложить встречу с вами на другой какой-то раз (
  7. Товарищи, следующая неделя авралы сплошные, и эта тоже ( Мысленно с вами.
  8. Если бы мы здесь писали в Android Studio или любой другой IDE на JAVA для Android, можно было бы через Android менеджер GATT устройств обратиться к JAVA интерфейсу конкретного устройства BLE и вызвать нужный нам метод. Но ты ставишь задачу, сделать вызов, работая с устройствами через компонент TBluetoothLE. В Delphi работа с модулем Androidapi.JNI.Bluetooth.pas не явная, этот файл всего лишь обертка для внешней Android библиотеки, вызовы к ее методам осуществляются через патч, работу внесенных изменений можно проверить в процессе отладки на устройстве. Участники написали, что нужно сделать, осталось только протестировать, делается ли вызов метода requestMTU(), проходит ли согласование корректно. Может быть у тебя метод вызывается, но твое BLE не дает согласие на изменение размера пакета. Хорошая мысль, сделать параметр "MTU_Size" в компоненте, чтобы компонент на любой платформе при сопряжении с устройствами выполнял принудительное согласование MTU. Для этого нужно написать разработчикам, как сказал ранее ZuBy.
  9. Не уверен, что для кого-то здесь дело в этом. Просто мы пытаемся разобраться с FMX, и так как устройство только у тебя, а обратная связь скупая, то дальше только пустая трата времени. Надо искать человека, у которого есть подходящее устройство БЛЕ и желание копаться с MTU.
  10. 1. Сейчас не могу найти ссылку, но сам читал, что проблема с согласованием MTU есть только у Android. iOS делает согласование автоматически, Windows начинает согласование с половины октет — 500+ байт. Мне не на чем это проверить, нет под рукой BLE (маячки почему-то компонентом не распознаются как BLE), так что этот момент проверяй сам. 2. Тебе привели правильный код изменения компоненты. Неумение провести своими руками простую отладку сильно усложняет дело, трудно тебе помочь, когда ты не даешь понятную обратную связь. Поэтому, как сказал Zuby, либо ждать от Идеры изменений в следующем релизе, либо платное задание разместить где-нить.
  11. А точно используется измененный модуль, а не системный? DCU файл в каталоге проекта создался? В режиме отладки в этот метод вообще не заходит отладчик?
  12. Я бы согласование все-таки делал в отдельном потоке и проверил на наличие менеджера, а так отлично, должно заработать. Вот что у меня получилось: constructor TAndroidBluetoothGattListener.Create(const ALEDevice : TAndroidBluetoothLEDevice); begin inherited Create; FGatt := ALEDevice; // ADDED to increase MTU size - BEGIN if FGatt <> nil then if (FGatt.FConnectionStatus = TBluetoothDeviceState.Connected) then TThread.CreateAnonymousThread( procedure var MTU: Integer; status: Boolean; begin MTU := 525; while MTU > 100 do begin TThread.Synchronize(nil, procedure begin status := FGatt.FJGatt.requestMtu(MTU); end); if not status then begin dec(MTU, 100); end else begin // FRememberMTUasInteger := MTU; // I think, you need to implement this filed in private section to use in a furure break; // all good bro, it needs to exit from the thread end; end; end).Start; // ADDED to increase MTU size - END end; На счет необходимости синхронизации не уверен, надо пробовать.
  13. У меня есть джойстик, часы, пара смартфонов, ноут, колонка — ничего из этого видимо не является Smart Device, компонент с этим моим барахлом не коннектится. Не знаю, как еще проверить компонент. Может быть BLE можно эмулировать на ноуте?
  14. Не знаю почему, но у меня компонент BluetoothLE вообще не находит ни одно устройство, ни на ноуте, ни на телефоне. Трудно что-то тестировать без этого.
  15. Можно. Но это то же самое, что я написал, только в промышленном масштабе. Для Андроида будет вызов этого метода, а для остальных платформ будут заглушки, потому что мы пока не знаем как в других API это реализовано.