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

Pax Beach

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

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

  • Посещение

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

    12

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

  1. Like
  2. Like
    Pax Beach отреагировална ophion в Генерация QR-кода на Android   
    Всем доброго времени суток.
     
    Среда: Rad Studio 10 Seattle (без Update 1)
    Платформа: Android
     
    Столкнулся с необходимостью генерации QR-кода для отображения на TImage.
    Воспользовался информацией, взятой тут http://zarko-gajic.iz.hr/firemonkey-mobile-android-ios-qr-code-generation-using-delphi-xe-5-delphizxingqrcode/
    У автора возникла проблема с опцией DisableInterpolation на платформе Android (тот же код отлично работает на Windows), а именно, на Android это не работает (изображение получается размытым)
    Перепробовал всё, что приходило в голову, а так же было нагуглено.... но все попытки безуспешны.
    Подскажите, как изменить размер изображения, чтобы оно не становилось мутным?
  3. Like
    Pax Beach получил реакцию от Rusland в Delphi.DataSnap. Провайдеры. Загрузка картинки   
    var strImagem: TMemoryStream; B: TBitmap; begin //создаем битмап меньше исходного в 4 раза B := TBitmap.Create(rectSign.Width div 2, rectSign.Height div 2); B.Clear(TAlphaColorRec.White); //переносим исходное изображение в созданынй битмап if B.Canvas.BeginScene then try layoutPhoto.PaintTo(B.Canvas, TRectF.Create(, , B.Width, B.Height)); finally B.Canvas.EndScene; end; try //поток для изображения strImagem := TMemoryStream.Create; //загружаем в него битмап B.SaveToStream(strImagem); //возвращаем курсор потока в начало strImagem.Position := ; dm.qMDevice.SQL.Text := 'UPDATE Orders SET PHOTO = :PHOTO WHERE ROWID = :RowId'; dm.qMDevice.ParamByName('RowId').AsInteger := SourceROW; //загружаем в запрос изображение из потока dm.qMDevice.ParamByName('PHOTO').LoadFromStream(strImagem, ftBlob); dm.qMDevice.ExecSQL; dm.qMDevice.Close; except on e: Exception do Toast('Не удалось сохранить фото #7702:'#13#10 + e.Message); end; //освобождем ресурсы FreeAndNil(B); FreeAndNil(strImagem); end; Как-то так делаю я.
    Наверняка можно более изящно, с меньшим количеством кода. Подключитесь пожалуйста коллеги!
     
  4. Like
    Pax Beach отреагировална Brovin Yaroslav в Как узнать поддерживаемый максимально допустимый размер изображения в TBitmap?   
    В FireMonkey TBitmap имеет верхнее ограничение на размеры хранимого изображения, ограниченные максимально допустимым размером текстур в текущей платформе. Узнать максимальную ширину и высоту можно так:
    var MaxWidthHeight: Integer; begin MaxWidthHeight := TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize); end;
  5. Like
    Pax Beach отреагировална petyaas в Delphi.DataSnap. Провайдеры. Загрузка картинки   
    Проблема – не могу передать изображение с клиента  на сервер DataSnap и сохранить в СУБД MySQL
    procedure TForm2.Button1Click(Sender: TObject);
    var bmp:tbitmap; twic:twicimage;
    begin
    bmp:=tbitmap.Create; twic:=twicimage.Create;
    opendialog1.Execute;
    twic.LoadFromFile(opendialog1.FileName);
    bmp.Assign(twic);
    clientdataset1.append;
    clientdataset1.FieldByName('name').Asstring:='Hello';
    clientdataset1.FieldByName('Picture').Assign(bmp);
    clientdataset1.Post;
    clientdataset1.ApplyUpdates(0);
    //clientdataset1.Refresh;
    clientdataset1.Close;
    clientdataset1.Open;
    end;
     
     
  6. Like
    Pax Beach отреагировална fac в Поворот изображения   
    При попытке установить RotationAngle:=90 изображение на Win32 поворачивается, а на Android исчезает. Это нормальное состояние вещей или я что-то делаю не так?
  7. Like
    Pax Beach отреагировална Andrew в Сглаживание у TImage   
    У TImage есть свойство  DisableInterpolation
    =====================================
    Image1.DisableInterpolation:= False;
     
  8. Like
    Pax Beach получил реакцию от Alex Bozhko в Открытие окна настроек Wi-Fi, Способ определения координат   
    Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.
    Качайте, кому нужно.
     
    TestWifi.zip
  9. Like
    Pax Beach отреагировална fsdb в [Статья][Android] Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде   
    я просто закоментировал строчки на которые ругался компилятор. что то про аккаунт - не знаю откуда но я так понял они мне не нужны.
    Вроде все работает, но скажите пожалуйста почему когда я добавляю строчку  у меня просто рушится выполнение в OnRecive?  я хотел обработать событие загрузки ОС...
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Скажите пожалуйста как мне идентифицировать событие AlarmManager в OnReciver - как например что ОС только что загрузилась 
    intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)  
    встает вопрос а сами классы можно как то разделить? что бы оба обрабатывали onRecive но один из них только для загрузку ОС обрабатывал что бы избжать проблему что я описал выше
     
    После перезагрузки ОС, мой таймер установленный в AlarmManager перестал работать. т.е. обнулился.  это нормально? я думал один раз поставил и больше не забудет AlarmManager
     
    В вашем проекте я нашел строчку написанную ниже, скажите где можно увидеть этот самый лог.
    Log.d("FMX", "AlarmReceiver.onReceive");  
    Я заметил что интерфейс (например ['{A27E897E-3AE0-4953-BA9C-FD2056EBAF2C}'] )  меняется каждый раз.. на сколько критично что бы там были цифры самые актуальные, т.е. последнесгенерированные.
  10. Like
    Pax Beach получил реакцию от #WAMACO в Открытие окна настроек Wi-Fi, Способ определения координат   
    Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.
    Качайте, кому нужно.
     
    TestWifi.zip
  11. Like
    Pax Beach получил реакцию от Rusland в Открытие окна настроек Wi-Fi, Способ определения координат   
    Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.
    Качайте, кому нужно.
     
    TestWifi.zip
  12. Like
    Pax Beach отреагировална Brovin Yaroslav в [Статья][Android] Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде   
    Ссылка: http://yaroslavbrovin.ru/using-alarmmanager-in-firemonkey-on-android-ru/ Автор: Бровин Ярослав Статья посвящена использованию Андроид AlarmManager в delphi приложения, позволяющего выполнять код в назначенное время даже, когда приложение закрыто. Все это рассматривается на примере приложения Будильник.
  13. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в TLocationSensor - GPS трекер   
    TMapsEngine
  14. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в TMapsEngine   
    Компонент TMapsEngine
     
    Возможности
    Нативный LocationSensor [ANDROID] Геокодинг/Реверс геокодинг через Google API, Yandex API, Here Maps API Построение маршрута через Google Distance API Расчет дистанции по прямой Совместим со стандартным компонентом TLocationSensor  
    Видео демонстрация
     
    На видео видно как TMapView косячик с миллионом точек, приложение зависло при отрисовке, но с этим ничего не поделать.
    Без синхронизации не возможно отрисовать все точки
     
    Исходник
    TMapsEngine_source.zip
    TMapsEngine_Seattle_10.zip
     
    Скачать APK  (долго он там не пролежит, а форум не позволяет загрузить zip размером 7,4 мб )
     
  15. Like
    Pax Beach отреагировална Равиль Зарипов (ZuBy) в LocationSensor.Sensor.State используется?   
    чтобы получить статус GPS (для Android) включен или нет, нужно использовать следующий код
    function CheckGPSActive: boolean; // uses // Androidapi.JNIBridge, Androidapi.JNI.Location,  Androidapi.JNI.JavaTypes, // Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers {$IFDEF ANDROID} var   LocManagerObj: JObject;   LocationManager: JLocationManager;   allProviders: JList;   I: Integer; begin   Result := false;   // запрашиваем сервис Location   LocManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);   if Assigned(LocManagerObj) then   begin     // получаем LocationManager     LocationManager := TJLocationManager.Wrap((LocManagerObj as ILocalObject).GetObjectID);     if Assigned(LocationManager) then     begin       // запрашиваем список всех провайдеров       allProviders := LocationManager.getProviders(true);       // выводим список       if Assigned(allProviders) then       begin         with TStringList.Create do         begin           for I := 0 to allProviders.size - 1 do             Add(JStringToString(allProviders.get(I).toString));           if ((IndexOf('gps') >= 0) or (IndexOf('network') >= 0)) then             Result := true;           Free;         end;       end;     end;   end; {$ELSE} begin   Result := false; {$ENDIF} end;
  16. Like
    Pax Beach отреагировална Andrey Efimov в Открытие окна настроек Wi-Fi, Способ определения координат   
    Выключить WiFi:
    uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net.Wifi; procedure TForm1.Button1Click(Sender: TObject); var WiFIServiceNative: JWifiManager; begin WiFIServiceNative := TJWifiManager.Wrap (TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE)); WiFIServiceNative.setWifiEnabled(false); end;  
  17. Like
    Pax Beach отреагировална Rusland в Открытие окна настроек Wi-Fi, Способ определения координат   
    Вызвать-настройки-gps-в-android
  18. Like
    Pax Beach отреагировална Satellite в [Android] При попытке отправить письмо через стандартное приложение, не передаётся EXTRA_EMAIL (Intent)   
    Разобрался, в общем только так передаётся нормально:
    procedure TfmSettings.CreateEmail(Const Recipient, Subject: string); var Intent: JIntent; JRecipient: TJavaObjectArray<JString>; begin JRecipient := TJavaObjectArray<JString>.Create(1); JRecipient.Items[0] := StringToJString(Recipient); Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, JRecipient); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(Subject)); Intent.setType(StringToJString('vnd.android.cursor.dir/email')); SharedActivity.startActivity(Intent); end;
  19. Like
    Pax Beach отреагировална krapotkin в Сканер штрих-кодов   
    на Fmxexpress - поиск - barcode
  20. Like
    Pax Beach отреагировална kami в Пример создания Android приложения в RAD Studio 10 Seattle для работы c сервером MySQL. Работа с компонентами UniDAC от Devart.   
    {$IFDEF offtop}по ряду причин стараюсь использовать именно прослойку между БД и приложением. Стойкое убеждение (не для холивара) - не должна СУБД быть открытой для доступа "снаружи", даже если это локалка. Сегодня так, а завтра потребуется доступ через интернет... Я считаю, что правильный админ никогда не откроет порт для доступа к БД наружу. В данном случае не понимаю, что мешает установить свой сервис не на машину с СУБД, а "рядом".{$ENDIF}
     
    А так - да, рекламный пост
    Pax Beach   , все нормально, очень многие знают про UniDac
  21. Like
    Pax Beach отреагировална Деня в Не работает FMX.Sensors в Delphi XE 10   
    Будьте здравы товарищи! Сделал прогу в xe5 под Андроид, скачал новую xe10. При попытке создать проект - подчёркивает мне "FMX.Sensors" в разделе "Uses" и внезапно выплёвывает мне:
     
    [DCC Error] MainUnit.pas(9): E2004 Identifier redeclared: 'System.Sensors'
     
    [DCC Error] MainUnit.pas(50): E2003 Undeclared identifier: 'SharedActivityContext'
     
    [DCC Error] MainUnit.pas(55): E2003 Undeclared identifier: 'JStringToString'
     
    [DCC Error] MainUnit.pas(58): E2003 Undeclared identifier: 'SharedActivity'
     
    [DCC Error] MainUnit.pas(81): E2004 Identifier redeclared: 'Finalization'
     
    я не следил за развитием Эмбаркадэры, можете что-нибудь прояснить по данному вопросу? В XE5 всё открывается без проблем. Но мне нужно в XE 10 потому что здесь появилась возможость запилить приложение в процесс без костылей, чтобы прога работала в фоне.
  22. Like
    Pax Beach получил реакцию от Rusland в [TCameraComponent] Четкость изображения, полученного из TCameraComponent   
    Да, спасибо, получилось, как вы написали.
     
    В «FMX.Media.pas» для CameraComponent есть свойство FocusMode с такими вариантами значений.
    В приложении доработал пример работы TCameraComponent с возможностью фокусировки камеры.
    На моем HTC One фокусировка работает только в значении fmContinuousAutoFocus.
     
    procedure RegisterAliases;
    begin
      AddEnumElementAliases(TypeInfo(TDevicePosition), ['dpUnspecified', 'dpFront', 'dpBack']);
      AddEnumElementAliases(TypeInfo(TFlashMode), ['fmAutoFlash', 'fmFlashOff', 'fmFlashOn']);
      AddEnumElementAliases(TypeInfo(TFocusMode), ['fmAutoFocus', 'fmContinuousAutoFocus', 'fmLocked']);
      AddEnumElementAliases(TypeInfo(TTorchMode), ['tmModeOff', 'tmModeOn', 'tmModeAuto']);
      AddEnumElementAliases(TypeInfo(TVideoCaptureQuality), ['vcPhotoQuality', 'vcHighQuality', 'vcMediumQuality', 'vcLowQuality']);
      AddEnumElementAliases(TypeInfo(TCameraKind), ['ckDefault', 'ckFrontCamera', 'ckBackCamera']);
    end;
     
    Мое мнение, компонент TCameraComponent не пригоден пока для промышленной эксплуатации — очень тяжело работает, для примеров разве что.
    Решил в проекте использовать Standart Action — TTakePhotoFromCameraAction — стандартная камера устройства сама сделает качественное фото, остается только его обработать.
    CameraComponentWith.zip
  23. Like
    Pax Beach отреагировална Sergionn в [TCameraComponent] Четкость изображения, полученного из TCameraComponent   
    и самое обидное, что нет никакой инфы, что разработчики будут с такой ситуацией делать,
    и есть ли вообще возможность что-то сделать, или fmx так и останется демо-фреймворком
  24. Like
    Pax Beach отреагировална Dreablin в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    Вопрос актуален.
    Использую C++ Builder XE7, стндартный компонент и код из примера самого Builder:
    Camera->SampleBufferToBitmap(imgCameraView->Bitmap, true);  Выдает 2-3 fps
×
×
  • Создать...