Stas
Members-
Posts
536 -
Joined
-
Last visited
-
Days Won
75
Content Type
Profiles
Forums
Events
Store
Blogs
Everything posted by Stas
-
По крайне мере, я старался.
-
Коллекция пополнилась Вашим . Я думаю, у все разные диалоги.
-
А что такое, диалог по умолчанию? Я про него ничего не знаю, видел разные
-
Этот classes.dex должен быть в deploy
-
Сделал очень ректально. Но уже работает и не падает (я надеюсь) Хотел бы комментарии Ярослава. (Касательно таймеров) Спасибо BarcodeDetector.rar
-
Уважаемые друзья, прежде всего хочу попросить у вас прощения, что не успел привести это в божеский вид, потому даю только наметки. Возможно у кого-то возникнут более разумные идеи , чтобы это работало как следует. Итак начинаем Прежде всего нам понадобится 1) Кнопка для начала сканирования 2)Мемо для отображения результатов 3) TfgVideoControl для показа действий с камерой. 4) Два маленьких литра коньяка Мы создаем имплементацию интерфейса type TDetector_Processor = class(TfgAndroidListener<TfgAndroidControl>,JDetector_Processor) public procedure receiveDetections(const AArg0: TJDetector_Detections); procedure release; end; procedure TDetector_Processor.receiveDetections( const AArg0: TJDetector_Detections); var J:TJSparseArray; B:TJBarcode; D:TDetector_Processor; begin J:=AArg0.getDetectedItems; if (J.size<>0) then begin D:=Self; B:=TJBarcode.Wrap(J.valueAt(0)); TThread.Synchronize(nil,procedure begin FormMain.fgMemo1.Lines.Text:=JStringToString(B.displayValue); end); end; end; procedure TDetector_Processor.release; begin ; end; Собственно говоря, он отвечает за распознавание штрих-кода. Далее при создании формы, нам необходимо создать этот объект processor:=TDetector_Processor.Create(TfgAndroidControl(TfgAndroidControlHandle(fgMemo1.Handle).NativeControl)); //Я не знаю, почему я так сделал На кнопку мы вешаем следующий код //Мы просим разрешения сканировать, и при получении оного пытаемся это делать. TfgPermissionService.RequestPermissionsAsync(['android.permission.CAMERA', 'android.permission.WRITE_EXTERNAL_STORAGE'], procedure(const APermissionInfo: TArray<TfgPermissionInfo>) begin case APermissionInfo[0].CheckResult of TPermissionCheckResult.Granted: begin DoScan; end else TfgToast.Show('Camera permission is not granted. Cannot scan barcode.', TfgToastDuration.Long); end; end); Теперь собственно, сама процедура procedure TFormMain.doScan; begin detector:=TJBarcodeDetector_Builder.Create(TfgAndroidHelper.Context).setBarcodeFormats(TJBarcode.ALL_FORMATS).build(); detector.setProcessor(processor); cameraSource:=TJCameraSource_Builder.Create(TfgAndroidHelper.Context,detector). setRequestedPreviewSize(1920, 1080).setAutoFocusEnabled(true).build(); cameraSource.start( TfgAndroidVideoControl(TfgAndroidControlHandle(fgVideoControl1.Handle).NativeControl).VideoView.getHolder()); end; Конечно про используемые модули. uses ...,Java.Bridge,FGX.Animation, FGX.Dialogs, FGX.Log,FGX.Helpers.Android,FGX.Image.Android,FGX.VideoControl.Android,Android.Api.ActivityAndView,FGX.Permissions,FGX.Toasts, И в interface Android.Api.PlayServices.Vision Благодарю за внимание, и прошу прощения, что так сумбурно.
-
Пытаюсь привести в божеский вид Штрих-код киевской примы без фильтра я уже получил, осталось добиться нормальной остановки камеры Падаем-с. З.ы используется Google vision api
-
Ну, что могу сказать, получилось. Библиотека Ярослава к этому готова Если это необходимо, постараюсь сегодня выложить пример.
-
Ярослав, спасибо за развернутый ответ, я должен понимать принципы построения библиотеки. Конечно не имеет смысл добавлять общий метод.
-
Виктор, это для чистоты и изящества кода, Вы же все равно используете TfgAndroidListener, что мешает, передавать в конструктор тип объекта, и вызывать один и тот же метод TfgMap З.Ы. Повторюсь, я не в претензии.
-
Я знаю, Виктор, Но в GoogleMaps отсутствует и общий объект, наследниками которого являются полигоны полилинии и иже с ними в Fgx, просто это несколько странно, делать столько событий, когда можно обойтись одним. (бритва Оккама) Я не в претензии, мысли вслух.
-
Это правильно и разумно, спасибо, в идеале хотелось бы автогенерации как в FMX, но настаивать на этом глупо, не все от вас зависит.
-
OnTap<TfgMapObject> Де факто их можно было объединить в одно.
-
Ярослав, а почему появилось столько событий, которые можно было не постулировать в таком количестве?
-
Здравствуйте, проблема в том, что в распространяемый classes.dex Не вошли эти jar файлы посмотрите файл build.bat и поправьте путь к classes.dex fgx , У вас получится слитый classes.dex , который вы должны распространить вместо оригинального от fgx У меня это получилось только при помощи временной замены оригинального classes.dex fgx своим Ярослав обещал это исправить Да, и не забудьте про разрешения
-
Виктор, он это не сможет скачать
-
Так прежде всего большая благодарность автору сайта http://delphifmandroid.blogspot.com/ Без него бы ничего не получилось. А так же автору нативного примера на джаве,который был утянут с просторов интернета Ну и конечно Ярославу. В джаве я полный ламер, поэтому просьба не кидать тапками за плохой код. Пример сделан для fgx, но все нативные интерфейсы были сгенерированы для fmx. FGXFingerPrint.7z
-
Добрый день. Расскажите, каким образом мне распространять собственный classes.dex? Я смикшировал оригинальный classes.dex из [FGX] со своим, но при развертывании он отказывается добавляться в APK Оригинальный classes.dex из [FGX] мне не удается отключить. Для проверки работоспособности я подменил classes.dex из [FGX] своим и все прошло на ура, но мне кажется, это не лучший метод. Спасибо.
-
Ну, что могу сказать, на FMX получилось. Жизненно не хватает генератора оберток для FGX. Сразу скажу, сложно, долго и "не те ощущения" Спасибо Ярославу, за объяснение, как это делать в принципе. Необходимо использовать Java и подключение своих jar. Исходники свои, чужие, благодарности и комментарии выложу как приведу это хоть в какой-то божеский вид. Если конечно, это кому-то интересно.
-
Здравствуйте, обнаружил неприятную особенность отрисовки текста. Охватило меня желание нарисовать текст в круге. procedure TFormMain.fgButton1Tap(Sender: TObject); var B:TfgBitmap; Sz:Integer; begin B:=TfgBitmap.Create; Sz:=128; B.Size:=Tsize.Create(Sz,Sz); B.Canvas.Fill.Color:=TAlphaColorRec.Green; B.Canvas.FillCircle(B.Size.cx/2,B.Size.cy/2,B.Size.cx/2); B.Canvas.Font.Size:=Sz/2; B.Canvas.Fill.Color := TAlphaColorRec.Red; B.Canvas.Fill.Kind := TfgBrushKind.Solid; B.Canvas.FillText(B.Bounds,'100',False); TfgAssetsManager.Current.AddBitmap('test',B); fgImage1.ImageName:='test'; end; И показать его на картинке. И не получилось Спасибо
-
Добрый день, очень интересная ошибка При добавлении маркера при движении по карте procedure TFormMain.fgMap1CameraChanging(Sender: TObject); begin try fgMap1.AddMarker(fgMap1.CameraTarget,''); except on E:Exception do TfgDialogs.ShowMessage(E.Message); end; end; Происходит вот такое. Если сделать отложенное добавление через таймер, ошибки не происходит. Спасибо.
-
От себя добавлю, добавьте TfgNavigator bar и у TfgDrawerLayout добавьте в свойство ToggleControl Его. Картинку с бигмаком спионерьте у material.io И добавьте в Asset Получится вот такое (у Вас, надеюсь будет лучше).
-
Мне кажется, это не сложно. Три Layout c цифрами fgImage, fgLabel Layout c шестью кружочками.