-
Постов
32 -
Зарегистрирован
-
Посещение
Информация
-
Пол
Мужчина
Посетители профиля
1 577 просмотров профиля
Достижения Pavel M
-
Pavel M отреагировал на ответ на вопрос: JAVA и Delphi
-
Прошу помощи в определении моих ошибок при написании и использования обёртки (часть библиотеки) Или ответа типа "используемый JAR непригоден для использования с DELPHI". Подробности ниже: Мне предоставили developer kit кассы (работает на андройде). Приложение Delphi типа Hello world на кассу поставил легко, но пока не получается работать со встроенным функционалом (пользователи, товары, чеки и пр). Библиотека кассы написана на Kotlin, я скомпилировал её целиком Android Studio в файл ".aar", затем распаковал как архив и вытащил ".jar", затем надеюсь создал корректную обёртку. (JAR закидываю как библиотеку к проекту на Delphi 10.1 update 2, вызываю как статик так и просто - либо не видит метод, либо приложение вылетает) Java2OP при создании обёртки вообще вылетает с ошибкой, буду признателен если подскажите как ему или чему то ещё правильно скормить эту библиотеку. Пример обёртки которую я использую: unit jdelphi; interface uses AndroidAPI.JNIBridge, Androidapi.JNI.JavaTypes; type JUser = interface; JUserClass = interface(JObjectClass) ['{A4B29440-8C8B-4C1F-A8E7-B7612D4FEEB4}'] function getUuid : JString; cdecl; function hashCode : Integer; cdecl; function init(uuid : JString; secondName : JString; firstName : JString; inn : JString; phone : JString; pin : JString; roleUuid : JString; roleTitle : JString) : JUser; cdecl; overload; function init(uuid : JString; secondName : JString; firstName : JString; phone : JString; pin : JString; roleUuid : JString; roleTitle : JString) : JUser; cdecl; overload; function toString : JString; cdecl; end; [JavaSignature('ru/evotor/framework/users/User')] JUser = interface(JObject) ['{2558685B-2BDC-4FCE-901F-3B53604E37C6}'] function equals(JObjectparam0 : JObject) : boolean; cdecl; function hashCode : Integer; cdecl; function toString : JString; cdecl; end; TJUser = class(TJavaGenericImport<JUserClass, JUser>) end; implementation procedure RegisterTypes; begin TRegTypes.RegisterType('jdelphi.JUser', TypeInfo(jdelphi.JUser)); end; initialization RegisterTypes; end. Программа Hello World!: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.Platform.Android, Androidapi.JNI.JavaTypes, Androidapi.Helpers; type TForm1 = class(TForm) btnExit: TButton; StyleBook1: TStyleBook; Text1: TText; btnGet: TButton; lbResult: TLabel; procedure btnExitClick(Sender: TObject); procedure btnGetClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} uses jdelphi; procedure TForm1.btnExitClick(Sender: TObject); begin MainActivity.finish; end; procedure TForm1.btnGetClick(Sender: TObject); // var // TestClass: JUser; begin // TestClass := TJUser.Create; // lbResult.Text:= JStringToString(TestClass.getUuid); lbResult.Text := JStringToString(TJUser.JavaClass.getUuid); end; end. Спасибо, за любые комментарии, мысли или советы.
-
Maximus отреагировал на вопрос: Подбор максимального размера шрифта TLabel
-
Разумеется. Там нет ответа на главный вопрос. "Как программно завершить вызов?"
-
Задача отбить\завершить звонок. uses FMX.Memo, FMX.Memo.Types, FMX.Media, FMX.Helpers.Android, System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.IOUtils, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, System.Threading, Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; function getdeclaredMethod(Cls: Jlang_class; const Name: JString): JMethod; var Arr: TJavaObjectArray<JMethod>; Meth: JMethod; I: Integer; begin Result := nil; Arr := Cls.getDeclaredMethods; for I := 0 to Arr.Length-1 do begin Meth := Arr.Items[I]; if Meth.getName.compareTo(Name) = 0 then begin Result := Meth; Exit; end; end; raise Exception.CreateFmt('method not found: %s', [Name]); end; function killCall(context: JContext): Boolean; var obj: JObject; telephonyManager: JTelephonyManager; classTelephony: Jlang_Class; methodGetITelephony: JMethod; telephonyInterface: JObject; telephonyInterfaceClass: Jlang_Class; methodEndCall: JMethod; begin try // Get the boring old TelephonyManager obj := context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); telephonyManager := TJTelephonyManager.Wrap((obj as ILocalObject).GetObjectID); // Get the getITelephony() method classTelephony := TJlang_Class.JavaClass.forName(telephonyManager.getClass.getName); methodGetITelephony := getDeclaredMethod(classTelephony, StringToJString('getITelephony')); // Ignore that the method is supposed to be private // methodGetITelephony.setAccessible(True); JAccessibleObject(methodGetITelephony).setAccessible(True); // Invoke getITelephony() to get the ITelephony interface telephonyInterface := methodGetITelephony.invoke(telephonyManager); // Get the endCall method from ITelephony telephonyInterfaceClass := TJlang_Class.JavaClass.forName(telephonyInterface.getClass.getName); methodEndCall := getDeclaredMethod(telephonyInterfaceClass, StringToJString('endCall')); // Invoke endCall() methodEndCall.invoke(telephonyInterface); Result := True; except on E: Exception do // Many things can go wrong with reflection calls begin // Result := False; end; end; end; Это я нешел отсюда: stackoverflow Соответственно вопрос с invoke(): telephonyInterface := methodGetITelephony.invoke(telephonyManager); в вышеуказанной теме остался открытым. Как отловить входящий звонок (необходимый момент) через BroadcastReceiver понятно. Как решить задачу с завершением текущего звонка? P.S.: Как писать на JAVA и экспортировать функции что бы использовать их из Delphi представляю себе весьма туманно.
-
Rusland отреагировал на сообщение в теме: Custom Font
-
zairkz отреагировал на сообщение в теме: Custom Font
-
Действительно бегло прочел Ваш пост и iOS9Fix не заметил. Сам переносил свой проект (под ведро) на 10.1 berlin, - была схожая проблема, думал помогу... Вместе с тем, если бы Вы соблюдали правила форума, то претензий и обвинений за мое желание помочь Вам, у Вас не было бы. Может будет кому полезно (константы кодов символов по названиям иконок): FontAwesomeCodes.zip
- 35 ответов
-
- font
- font awesome
-
(и ещё 6 )
C тегом:
-
zairkz отреагировал на сообщение в теме: Custom Font
-
Скопируйте файл FMX.FontGlyphs из 10.1 в папку своего проекта и отредактируйте его. Запускаемая программа должна искать шрифт в TPath.GetDocumentsPath (шрифт деплойдится в .\assets\internal) поскольку файл шрифта не найден символы не отображаются.
- 35 ответов
-
- font
- font awesome
-
(и ещё 6 )
C тегом:
-
Ярослав, спасибо этот способ я уже пробовал. в файле .style обнаружил PlatformTarget = [DARKSTYLE] 1) это флаг настроек или просто комментарий? Использовал и Light и Dark темы из BitmapStyleDesigner цвет шрифта у статус бара остается всегда белым. Проверял на Android 5.1.1 (Nexus 4) 2) Как сделать цвет шрифта статус бара чёрным? Как я указал выше цвет статус бара становится черным если у формы свойство Fill.Kind сменить на любое значение кроме None (иначе цвет шрифта и заливки статуса белые) однако при этом естественно не отражается беграунд формы из применяемой темы через StyleBook. 3) Как статус бар залить черным цветом не изменяя Fill. Kind ?
-
Pavel M отреагировал на ответ на вопрос: Исключение при работе с TJToneGenerator
-
Pavel M отреагировал на ответ на вопрос: Исключение при работе с TJToneGenerator
-
Исключение при работе с TJToneGenerator
Pavel M опубликовал вопрос в Работа с медиа файлами (аудио, видео)
Пожалуйста подскажите почему при третьем нажатии на кнопку возникает исключение: java.lang.RuntimeException: Init failed. unit Main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TFormMain = class(TForm) ButtonDtmf0: TButton; procedure ButtonDtmf0Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TFormMain; implementation uses Androidapi.JNI.Media; {$R *.fmx} procedure Play(Tone, Volume, DurationMs: Integer); overload; var ToneGenerator: JToneGenerator; begin ToneGenerator := TJToneGenerator.JavaClass.init(TJAudioManager.JavaClass.STREAM_MUSIC, Volume); ToneGenerator.StartTone(Tone, DurationMs); end; procedure TFormMain.ButtonDtmf0Click(Sender: TObject); var I: Integer; begin for I := 1 to 15 do begin Play(TJToneGenerator.JavaClass.TONE_DTMF_0, TJToneGenerator.JavaClass.MAX_VOLUME div 2, 50); sleep(100); end; end; end. В реальной программе многократное нажатие на разные кнопки вызывает исключение. Данный пример показывает суть проблемы. -
Pavel M отреагировал на сообщение в теме: [Статья][Android] Автоматическая смена названия приложения в зависимости от языка системы
-
Спасибо, Я видел и это и схожие темы реализации заливки через FullScreen. Меня интересует возможность смены родительской темы на тёмную и замена цвета шрифта. Попытки редактирования Style.xml ни к чему не привели (он восстанавливается при компиляции), можно конечно отредактировать AndroidManifest.template.xml далее подгрузить свой Style.xml Но возможно есть более элегантные решения?
-
Если залить основную форму любым цветом, то заливка TitleBar становится черной (шрифт белого цвета на ней становится виден). Но как всё таки как сменить заливку на светлую, а шрифт на тёмный пока не понятно.
-
Использую любой стиль для Android из "FireMonkey Premium Styles Pack" Цвет шрифта статус бара и его заливка белые, видно только уровень батарейки зеленый. Как в .style или в run-time изменить тему (цвет заливки/шрифта) TitleBar на Dark?
-
Rusland отреагировал на сообщение в теме: Custom Font
-
Равиль Зарипов (ZuBy) отреагировал на сообщение в теме: Custom Font
-
http://fontello.com Поищите здесь то что Вам нужно и скачайте себе шрифт только с необходимыми символами
- 35 ответов
-
- font
- font awesome
-
(и ещё 6 )
C тегом:
-
SQLite может быть собран в однопоточном варианте (параметр компиляции SQLITE_THREADSAFE = 0). Подробнее: https://m.habrahabr.ru/post/149635/
-
Звук и вибра при нажатии на кнопку
Pavel M опубликовал вопрос в Работа с медиа файлами (аудио, видео)
Как проиграть стандартный звук системы "кнооцк" при нажатии на кнопку? Про вибрацию вроде уже нашел: uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; procedure TForm1.Button1Click(Sender: TObject); var VibratorObj: JObject; Vibrator: JVibrator; begin VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); Vibrator.vibrate(StrToInt(ClearingEdit1.Text)); end;