Stas
-
Posts
536 -
Joined
-
Last visited
-
Days Won
75
Content Type
Profiles
Forums
Events
Store
Blogs
Posts posted by Stas
-
-
-
Здравствуйте
У Ярослава в поставке есть файл Android.Api.Media.pas. Там реализован класс TJMediaPlayer.
Один из конструкторов которого
class function create(const AArg0: TJContext; const AArg1: TJUri): TJMediaPlayer; overload;
Так же в этом классе есть методы
procedure start; procedure stop;
Я думаю, Вам стоит посмотреть в этом направлении.
Спасибо
- 1
-
Ну смотрите, если у вас плоский список, то каждому элементу списка будет соответствовать либо кусок json, либо запись в датасет.
Потому в OnBindItem Вы можете либо выгребать объект из json , либо позиционироваться на определенную позицию датасета.
-
Я вообще обхожусь, живет json или датасет, и позиция в списке=позиции json или (RecNo-1) датасет
-
Попробуйте мой вариант, пока Ярослав что-то не придумает
- 2
-
Здравствуйте, обнаружил странную особенность
Размер фотографий, сделанных при помощи камеры, не превышает (в моем случае ) 1920*1080.
Сердце мне подсказывает, что это разрешение моего телефона.
Фотографии сделанные средствами телефона не подвержены этому недостатку.
Спасибо.
-
Закрывайте тему, ошибка проявляется только в случае неудачного клонирования проекта.
Спасибо.
-
Спасибо, я проверю более детально, у меня начинаю возникать подозрения, что это только в конкретных проектах
-
Жаль, что прошла неделя, и я так и не услышал ничего по этому поводу.
Мне, конечно, не сложно перезапустить дельфи, но, как писал Твардовский "речь не о том, но всё же, всё же, всё же.... ".
Спасибо.
-
Здравствуйте. Ошибка в следующем.
Предположим у нас два проекта project1 и project2 с разными цветовыми гаммами
Если открыть первый проект, закрыть его, и открыть второй, то волшебным образом сохраняется тема первого проекта.
При переоткрытии дельфи, все встает на свои места.
Собственно вот
Спасибо.
-
Здравствуйте.
Ни в одной демке использования не нашел.
У меня не заработало ни разу.
Правда, интересно
-
Здравствуйте
У меня ни разу не получилось, чтобы это событие как-то себя проявило.
Что я делаю не так ?
Спасибо
-
Здравствуйте
Решается, в большинстве случаев следующим методом
uses AndroidApi.Jni,Java.Bridge,Java.Bridge.Helpers,FGX.Canvas.Android,Android.Api.Javatypes,Android.Api.ActivityAndView, Android.Api.Exif; function RotateBitmap(B:TfgBitmap;Sz:Integer):TfgBitmap; var M:TJMatrix; BA,BA1:TJBitmap; begin BA:=TfgAndroidBitmapHandle(B.Handle).NativeBitmap; M:=TJMatrix.Create; m.postRotate(Sz); BA1:=TJBitmap.createBitmap(BA,0,0,BA.getWidth,BA.getHeight,m,true); Result:=TfgBitmap.CreateFromNativeBitmap(BA1); end; function PrepareBitmapFromFile(FileName:String):TfgBitmap; var E:TJExifInterface; Orientation:Integer; begin E:=TJExifInterface.Create(FileName); Orientation:=E.getAttributeInt(TJExifInterface.TAG_ORIENTATION,TJExifInterface.ORIENTATION_UNDEFINED); Result:=TfgBitmap.CreateFromFile(FileName); if Orientation=TJExifInterface.ORIENTATION_ROTATE_180 then Result:=RotateBitmap(Result,180) else if Orientation=TJExifInterface.ORIENTATION_ROTATE_90 then Result:=RotateBitmap(Result,90) else if Orientation=TJExifInterface.ORIENTATION_ROTATE_270 then Result:=RotateBitmap(Result,270); end;
Извините за небрежность кода
-
50 минут назад, Yaroslav Brovin сказал:
Проблему воспроизвел. Отпишусь, как поправлю.
Это не проблема. Проблема, это то, что нельзя обойти, это так, мелочь. Вначале грешил на эмулятор.
-
Добрый день, обнаружил интересное поведение приложения на старых устройствах с Андроид 6 (Nexus 2013) в случае нахождения на форме NavigationBar, а также использования на ней дочерней формы в качестве фрейма.
В этом легко убедиться использовав стандартный пример из поставки (Формы в качестве фрейма)
1) Добавьте на главную форму NavigationBar с кнопочкой
2) Запустите приложение и переключайте фреймы путем нажатия на кнопки внизу
3) Вы обнаружите, что кнопка на навигаторе скоро исчезнет.
Определил, что это происходит только при вызове метода дочернего фрейма FActiveFrame.show()
Если FActiveFrame.Visible:=true, то работает адекватно.
Спасибо.
Хотелось бы услышать мнение
начальника транспортного цехаЯрослава. -
Просто интересно, мой пример тоже не работает?
-
11 часов назад, Yaroslav Brovin сказал:
Новый компонент распознавания баркодов добавлен в 1.1.2.0.
По крайне мере, я старался.
- 3
-
Коллекция пополнилась Вашим .
Я думаю, у все разные диалоги.
-
А что такое, диалог по умолчанию?
Я про него ничего не знаю, видел разные
-
Этот classes.dex должен быть в deploy
-
Сделал очень ректально.
Но уже работает и не падает (я надеюсь)
Хотел бы комментарии Ярослава. (Касательно таймеров)
Спасибо
- 4
- 2
-
Уважаемые друзья, прежде всего хочу попросить у вас прощения, что не успел привести это в божеский вид, потому даю только наметки.
Возможно у кого-то возникнут более разумные идеи , чтобы это работало как следует.
Итак начинаем
Прежде всего нам понадобится
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
Благодарю за внимание, и прошу прощения, что так сумбурно.
- 1
-
2 часа назад, Cinemaizer сказал:
Было бы очень здорово ознакомиться с примером! Респект!
Пытаюсь привести в божеский вид
Штрих-код киевской примы без фильтра я уже получил, осталось добиться нормальной остановки камеры
Падаем-с.
З.ы используется Google vision api
-
Ну, что могу сказать, получилось.
Библиотека Ярослава к этому готова
Если это необходимо, постараюсь сегодня выложить пример.
- 3
- 1
1.2.1.0 Русский
in Russian version
Posted
Ярослав, если будет такая возможность, храните пожалуйста относительные пути к jar, очень неудобно с свн.
Спасибо.