Pavel M

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

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

  • Посещение

Информация о Pavel M

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

Информация

  • Пол
    Мужчина

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

522 просмотра профиля
  1. Разумеется. Там нет ответа на главный вопрос. "Как программно завершить вызов?"
  2. Задача отбить\завершить звонок. 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 представляю себе весьма туманно.
  3. Custom Font

    Действительно бегло прочел Ваш пост и iOS9Fix не заметил. Сам переносил свой проект (под ведро) на 10.1 berlin, - была схожая проблема, думал помогу... Вместе с тем, если бы Вы соблюдали правила форума, то претензий и обвинений за мое желание помочь Вам, у Вас не было бы. Может будет кому полезно (константы кодов символов по названиям иконок): FontAwesomeCodes.zip
  4. Custom Font

    Скопируйте файл FMX.FontGlyphs из 10.1 в папку своего проекта и отредактируйте его. Запускаемая программа должна искать шрифт в TPath.GetDocumentsPath (шрифт деплойдится в .\assets\internal) поскольку файл шрифта не найден символы не отображаются.
  5. Ярослав, спасибо этот способ я уже пробовал. в файле .style обнаружил PlatformTarget = [DARKSTYLE] 1) это флаг настроек или просто комментарий? Использовал и Light и Dark темы из BitmapStyleDesigner цвет шрифта у статус бара остается всегда белым. Проверял на Android 5.1.1 (Nexus 4) 2) Как сделать цвет шрифта статус бара чёрным? Как я указал выше цвет статус бара становится черным если у формы свойство Fill.Kind сменить на любое значение кроме None (иначе цвет шрифта и заливки статуса белые) однако при этом естественно не отражается беграунд формы из применяемой темы через StyleBook. 3) Как статус бар залить черным цветом не изменяя Fill. Kind ?
  6. Пожалуйста подскажите почему при третьем нажатии на кнопку возникает исключение: 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. В реальной программе многократное нажатие на разные кнопки вызывает исключение. Данный пример показывает суть проблемы.
  7. Спасибо, Я видел и это и схожие темы реализации заливки через FullScreen. Меня интересует возможность смены родительской темы на тёмную и замена цвета шрифта. Попытки редактирования Style.xml ни к чему не привели (он восстанавливается при компиляции), можно конечно отредактировать AndroidManifest.template.xml далее подгрузить свой Style.xml Но возможно есть более элегантные решения?
  8. Если залить основную форму любым цветом, то заливка TitleBar становится черной (шрифт белого цвета на ней становится виден). Но как всё таки как сменить заливку на светлую, а шрифт на тёмный пока не понятно.
  9. Использую любой стиль для Android из "FireMonkey Premium Styles Pack" Цвет шрифта статус бара и его заливка белые, видно только уровень батарейки зеленый. Как в .style или в run-time изменить тему (цвет заливки/шрифта) TitleBar на Dark?
  10. Custom Font

    http://fontello.com Поищите здесь то что Вам нужно и скачайте себе шрифт только с необходимыми символами
  11. SQLite может быть собран в однопоточном варианте (параметр компиляции SQLITE_THREADSAFE = 0). Подробнее: https://m.habrahabr.ru/post/149635/
  12. я так и сделал, но полагаю это костыль. Неужели нет API для применения. Интересна так же причина возникающих ошибок у предложенного вами варианта после 30 кликов
  13. Спасибо, звук воспроизводиться. Однако при частом многократном обращении (поставил событие на клик по кнопке и покликал) появляются ошибки: java.lang.RuntimeExceprion: Init failed И я не нашел стандартного звука "чпок" , как будто все звуки только для работы с телефонией.
  14. Как проиграть стандартный звук системы "кнооцк" при нажатии на кнопку? Про вибрацию вроде уже нашел: 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;
  15. В программе использую вспышку Camera.TorchMode := TTorchMode.ModeOn; После этого до камеры невозможно достучаться через IFMXCameraService.TakePhoto без предварительного включения затем выключения компонента. т.е. при любом обращении к свойствам компонента камера остается занятой для IFMXCameraService (даже при обращении к AvailableCaptureSettings) procedure TfrmMain.btnMakePhotoTap(Sender: TObject; const [Ref] Point: TPointF);var xService: IFMXCameraService; xParams: TParamsPhotoQuery; xCtrl: TControl; xCamera: TCameraComponent; xCamSettings: TArray<TVideoCaptureSetting>; xMaxResH, xMaxResW: Integer;begin //контрол для вызова IFMXCameraService.TakePhoto(AControl, AParam) xCtrl := TControl.Create(SELF); xCamera := TCameraComponent.Create(SELF); xCamSettings := xCamera.AvailableCaptureSettings; //получаем максимальное разрешение xMaxResH := xCamSettings[Low(xCamSettings)].Height; xMaxResW := xCamSettings[Low(xCamSettings)].Width; //////////////////////////////////////////////// // БЕЗ ЭТОГО xService.TakePhoto НЕ ЗАПУСКАЕТСЯ /////////////////////////////////////////////// xCamera.Active := True; //<- Именно сначала doStart xCamera.Active := False; // //////////////////////////// FreeAndNil(xCamera); if TPlatformServices.Current.SupportsPlatformService(IFMXCameraService, xService) then begin xParams.Editable := False; //ИНАЧЕ НЕ СОХРАНЯЕТ В АЛЬБОМ!!! xParams.NeedSaveToAlbum := True; xParams.RequiredResolution := TSize.Create(xMaxResH,xMaxResW ); xService.TakePhoto(xCtrl, xParams); end else ShowMessage('This device does not support the camera service'); FreeAndNil(xCtrl);end; Как можно освободить камеру без щелканья объективом? Задача сделать фото максимального качества в галерею. (Фактически это стандартный экшен "сделать фото" - но он не работает после игры с фанариком) Буду раз за любые комментарии по коду.