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

antarey

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

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

  • Посещение

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

    2

Весь контент antarey

  1. Не знаю стоит ли разбивать на две темы - фактически вопрос для двух платформ. Ярослав - если скажете разобью Андроид устройство через WiFi подключается в локальную сеть Задача № 1. С андроид устройства прочитать список компов - выбрать нужный-прочитать список дисков-выбрать диск-выбрать каталог Задача №2 С компьютера подключиться к андроид устройству и далее как и выше - прочитать список дисков-выбрать диск-выбрать каталог
  2. antarey

    Подключение внешней базы

    Пишется кроссплатформенное приложение винда/андроид с использованием SQLite На десктопе будет своя база, на мобильной платформе своя Необходимо реализовать синхронизацию Андроид через WiFi подключается к локальной сети, все пингуется Как с винды подключиться к андроид базе и наоборот?
  3. Возможно ли вообще такое: создать условие динамически и как ? знак условия && или || подставить как переменную? Задача какая - выполнить определенное действие - берется из базы, к примеру запустить программу, в зависимости от определенных условий - тоже из базы, к примеру надо проверить значение ветки реестра и наличие файла/каталога , - то есть надо в динамике создать условие типа такого if (reg->ValueExists("......") переменная условия FileExists(".......") переменная условия ...... ) ну и желательно выполнить . Или может есть какой то другой вариант выполнения задачи Заранее благодарен
  4. Понятно. В принципе я сделал анимацию Folding Paper - но с одним приколчиком - анимируется не дочерний контрол а родитель, грубо говоря фон, прикольно но не то что надо. Я приглашал народ к сотрудничеству, но чет желающих не нашлось.
  5. Немного уточняю - я пишу нативный андроид компонент - наследник RelativeLayout Как дочерний компонент кидаю на него TListBox Или как раз затык в невозможности рад студии передать дочерний элемент View child = getChildAt(0); ?
  6. Подскажите, как определить какая именно ошибка при выполнении приложения При загрузке приложения DDMS выдает 07-25 04:18:59.324: E/AndroidRuntime(2129): at com.antarey.antnative.FoldingLayout.onMeasure(FoldingLayout.java:150) вот этот код @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { View child = getChildAt(0); super.measureChild(child,widthMeasureSpec, heightMeasureSpec); super.setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); } ругается на строку super.measureChild(child,widthMeasureSpec, heightMeasureSpec); А почему именно - как определить????
  7. Как уже не раз обсуждалось на форуме - анимация средствами FMX под андроид задача неблагодарная. Перечитав много чего, и на основании D.P.F Delphi Android Native Components и DevBytes: Folding Layout решил сварганить компонент для нативной анимации. Дабы не делать тему не читабельной - сам проект в атаче , проблема в следующем : при компиляции под андроид есть ряд ошибок [DCC Error] Ant.Android.JFoldingLayout.pas(119): E2064 Left side cannot be assigned to [DCC Error] Ant.Android.JFoldingLayout.pas(120): E2010 Incompatible types: 'TGUID' and 'JViewGroup_LayoutParams' [DCC Error] Ant.Android.JFoldingLayout.pas(122): E2010 Incompatible types: 'JViewGroup_LayoutParams' and 'TGUID' [DCC Error] Ant.Android.JFoldingLayout.pas(169): E2018 Record, object or class type required [DCC Error] Ant.Android.JFoldingLayout.pas(172): E2018 Record, object or class type required [DCC Error] Ant.Android.JFoldingLayout.pas(175): E2018 Record, object or class type required [DCC Error] Ant.Android.JFoldingLayout.pas(177): E2018 Record, object or class type required [DCC Error] Ant.Android.JFoldingLayout.pas(179): E2250 There is no overloaded version of 'CallInUIThread' that can be called with these arguments [DCC Fatal Error] Ant.Android.Reg.pas(13): F2063 Could not compile used unit 'Ant.Android.JFoldingLayout.pas' constructor TAntJFoldingLayout.Create(AOwner: TComponent); begin inherited Create(AOwner); ControlCaption := 'FoldingLayout'; BackgroundColor1 := TAlphaColors.Lightsteelblue; Visible := True; FForm := nil; {$IFDEF ANDROID} CallInUIThreadAndWaitFinishing( procedure() begin 119 JViewGroup_LayoutParams := TJViewGroup_LayoutParams.JavaClass.init 120 (Integer(LayoutWidth), Integer(LayoutHeight)); 121 FJFoldingLayout := TJFoldingLayout.JavaClass.init(SharedActivity); 122 FJFoldingLayout.setLayoutParams(JViewGroup_LayoutParams); JControl := FJFoldingLayout; end); {$ENDIF} end; // ------------------------------------------------------------------------------ procedure TAntJFoldingLayout.Resize; begin {$IFDEF ANDROID} if IsAutoResize then begin CallInUIThread( procedure() begin FJFoldingLayout.setX(Position.x * ScreenScale); FJFoldingLayout.setY(Position.y * ScreenScale); if LayoutWidth <> lpNone then 169 JViewGroup_LayoutParams.Width := Integer(LayoutWidth) else 172 JViewGroup_LayoutParams.Width := round(Width * ScreenScale); if LayoutHeight <> lpNone then 175 JViewGroup_LayoutParams.Height := Integer(LayoutHeight) else 177 JViewGroup_LayoutParams.Height := round(Height * ScreenScale); end); end else inherited; {$ELSE} inherited; {$ENDIF} end; // ------------------------------------------------------------------------------ Если JViewGroup_LayoutParams заменить на JRelativeLayout_LayoutParams то компилится, но самописный класс FoldingLayout наследник ViewGroup и по моему так будет не правильно Код ява проверен на Андроид студии - рабочий. Может кто упростит проект, усовершенствует и тд. Приглашаю всех к сотрудничеству - думаю такой компонент никому не помешает, тем более при желании на яве можно будет дописать любую анимацию FoldingLayout.zip
  8. Итак, вот результат моих потуг antareyToast.java package com.antarey; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.widget.Toast; public class antareyToast { private Context context; private Handler mHandler = new Handler(Looper.getMainLooper()); private String mMsg; public antareyToast(Context context) { this.context = context; } public void ShowToast(String msg) { mMsg = msg; mHandler.post(new Runnable() { public void run() { Toast.makeText(context, mMsg, Toast.LENGTH_SHORT).show(); } }); } } обертка unit com.antarey.antareyToast; interface uses FMX.Helpers.Android, Androidapi.Helpers, AndroidAPI.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.os; type JantareyToast = interface; JantareyToastClass = interface(JObjectClass) ['{C4BED43A-7A25-43F2-A9BE-B2E1602FB2D8}'] function init(JContextparam0 : JContext) : JantareyToast; cdecl; end; [JavaSignature('com/antarey/antareyToast')] JantareyToast = interface(JObject) ['{5AFABA34-5223-424D-A381-5F61E4B67B53}'] procedure ShowToast(JStringparam0 : JString) ; cdecl; end; TJantareyToast = class(TJavaGenericImport<JantareyToastClass, JantareyToast>) end; procedure ShowToast(ToastMsg: String); implementation procedure ShowToast(ToastMsg: String); var Activity:JantareyToast; begin Activity:= TJantareyToast.JavaClass.init(SharedActivityContext); Activity.ShowToast(StringToJString(ToastMsg)); end; procedure RegisterTypes; begin TRegTypes.RegisterType('com.antarey.antareyToast',TypeInfo(com.antarey.antareyToast.JantareyToast)); end; initialization RegisterTypes; end. вызов //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ShowToast( UnicodeString(_D("Ура!!!! - Получилось")) ); } //--------------------------------------------------------------------------- Все работает. Более подробно читаем тут Но ето только один из методов, использовать стандартные библиотеки немного проще, проще в том что не надо писать ява код самому, а обертки есть уже готовые
  9. вот все сначала, с исправлениями ява AntareyAnimation.java package com.antarey; import android.content.Context; import android.widget.Toast; public class AntareyAnimation { private Context context; public AntareyAnimation(Context context){ this.context=context; } public void Rotate3D() { Toast zxczx = Toast.makeText(context, "Привет", Toast.LENGTH_SHORT); } } вот обертка unit com.antarey.AntareyAnimation; interface uses AndroidAPI.JNIBridge, AndroidAPI.JNI.JavaTypes, AndroidAPI.JNI.GraphicsContentViewText; type JAntareyAnimation = interface; JAntareyAnimationClass = interface(JObjectClass) ['{1E982F9C-B857-44C1-BCCF-383C25E2CDD1}'] function init(JContextparam0: JContext): JAntareyAnimation; cdecl; // (Landroid/content/Context;)V A: $1 procedure Rotate3D; cdecl; // ()V A: $1 end; [JavaSignature('com/antarey/AntareyAnimation')] JAntareyAnimation = interface(JObject) ['{57391557-8D42-4A20-8B2C-F67157CE6899}'] procedure Rotate3D; cdecl; // ()V A: $1 end; TJAntareyAnimation = class(TJavaGenericImport<JAntareyAnimationClass, JAntareyAnimation>) end; implementation procedure RegisterTypes; begin TRegTypes.RegisterType('com.antarey.AntareyAnimation', TypeInfo(com.antarey.AntareyAnimation.JAntareyAnimation)); end; initialization RegisterTypes; end. вот вызов procedure TForm1.Button1Click(Sender: TObject); var Animation: JAntareyAnimation; begin com.antarey.AntareyAnimation.TJAntareyAnimation.JavaClass.init(MainActivity); Animation := TJAntareyAnimation.Create; Animation.Rotate3D; end; На устройстве - access violation ????
  10. Да ето я уже исправил. Просто не совсем понятно в обертке что прописывать в JAntareyAnimationClass = interface(JObjectClass) ['{2B5A2F93-3AA1-4415-9AB4-033A08EDE51A}'] function init(JContextparam0 : JContext) : JAntareyAnimation; cdecl; procedure Rotate3D ; cdecl; end; а что в [JavaSignature('com/antarey/AntareyAnimation')] JAntareyAnimation = interface(JObject) ['{9F7DE253-EBD7-4D7C-B058-D803C7CCBF2F}'] end; а если точнее , то где именно объявить мою ява процедуру Rotate3D
  11. По вашему п.№2 вызов var Animation: JAntareyAnimation; begin Animation := TJAntareyAnimation.Create; Animation.Rotate3D; end; или не верный вызов или обертка ошибка в Animation.Rotate3D;
  12. Я хочу использовать Toast для уведомления, но для создания объекта уведомления в Java используется следующий код: Toast toast= Toast.makeText(context, "Привет", Toast.LENGTH_SHORT); Как в Delphi вызвать метод Java объекта?
  13. сам не вижу, у меня обертка еще не доделана вот вызов procedure TfrmMainPas.Button1Click(Sender: TObject); begin Rotate3D(); end; end. Вот переделанная обертка с Вашими рекомендациями , но так понимаю еще не доделанная, unit com.antarey.AntareyAnimation; interface uses AndroidAPI.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText; type JAntareyAnimation = interface; JAntareyAnimationClass = interface(JObjectClass) ['{2B5A2F93-3AA1-4415-9AB4-033A08EDE51A}'] function init(JContextparam0 : JContext) : JAntareyAnimation; cdecl; // (Landroid/content/Context;)V A: $1 procedure Rotate3D ; cdecl; // ()V A: $1 end; [JavaSignature('com/antarey/AntareyAnimation')] JAntareyAnimation = interface(JObject) ['{9F7DE253-EBD7-4D7C-B058-D803C7CCBF2F}'] end; TJAntareyAnimation = class(TJavaGenericImport<JAntareyAnimationClass, JAntareyAnimation>) end; implementation procedure Rotate3D(); begin // CallInUIThread( // procedure() // begin Rotate3D(); // end); end; procedure RegisterTypes; begin TRegTypes.RegisterType('com.antarey.AntareyAnimation', TypeInfo(com.antarey.AntareyAnimation.JAntareyAnimation)); end; initialization RegisterTypes; end. плюс проблемы с вызовом procedure TForm1.Button1Click(Sender: TObject); begin com.antarey.AntareyAnimation.TJAntareyAnimation.JavaClass.Rotate3D; end; но скорее всего ето не правильно
  14. При написании обертки для ява кода необходимо связать делфи интерфейс и ява класс JAntareyAnimationClass = interface(JFMXNativeActivityClass) ['{3FC48462-87FD-4F6C-9B15-02BC09D67168}'] function init(context: JContext): JAntareyAnimation; cdecl; // function init: JAntareyAnimation; cdecl; end; [JavaSignature('com/antarey/AntareyAnimation')] JAntareyAnimation = interface(JFMXNativeActivity) ['{38A1F738-CDE7-46F6-AA07-5A453A3AC0B2}'] procedure Rotate3D(); cdecl; end; или JToastClass = interface(JObjectClass) ['{69E2D233-B9D3-4F3E-B882-474C8E1D50E9}'] {Property methods} function _GetLENGTH_LONG: Integer; cdecl; function _GetLENGTH_SHORT: Integer; cdecl; {Methods} function init(context: JContext): JToast; cdecl; overload; function makeText(context: JContext; text: JCharSequence; duration: Integer): JToast; cdecl; {Properties} property LENGTH_LONG: Integer read _GetLENGTH_LONG; property LENGTH_SHORT: Integer read _GetLENGTH_SHORT; end; [JavaSignature('android/widget/Toast')] JToast = interface(JObject) ['{FD81CC32-BFBC-4838-8893-9DD01DE47B00}'] {Methods} procedure cancel; cdecl; function getDuration: Integer; cdecl; function getGravity: Integer; cdecl; function getHorizontalMargin: Single; cdecl; function getVerticalMargin: Single; cdecl; function getView: JView; cdecl; function getXOffset: Integer; cdecl; function getYOffset: Integer; cdecl; procedure setDuration(value: Integer); cdecl; procedure setGravity(gravity, xOffset, yOffset: Integer); cdecl; procedure setMargin(horizontalMargin, verticalMargin: Single); cdecl; procedure setText(s: JCharSequence); cdecl; procedure setView(view: JView); cdecl; procedure show; cdecl; end; как определить ету связь - исходя из чего Спасибо
  15. И на етом спасибо Только насколько я понял в андроиде View-ом может выступать любой контрол. По крайней мере одну анимацию я проверял как для лайота так и для бутона - работает. Вот и думал , что по аналогии любому контролу FMX можно передать анимацию андроида. Ето не в ету тему, больше сюда Как в Firemonkey на C++Builder использовать ява код? но я пытаюсь реализовать, то что уже реализовано D.P.F Delphi Android Native Components - там есть DPF.Android.JAnimation, который реализует android.view.animation.Animation и как раз в ява процедуру startTranslateAnimation передается TDPFANDBaseControl наследник TControl
  16. Так, вот мои мучения Ява код - на андроид студии работает 100% package com.antareyanimation; import android.content.Context; import android.widget.Toast; public class AntareyAnimation { private Context context; public AntareyAnimation(Context context){ this.context=context; } public void Rotate3D() { Toast zxczx = Toast.makeText(context, "Привет", Toast.LENGTH_SHORT); } } вот батник для получения декс cls @echo off echo. echo del old dex if exist if exist .\classes.dex (del .\classes.dex) echo. setlocal if x%ANDROID% == x set ANDROID="c:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk" set ANDROID_PLATFORM=%ANDROID%\platforms\android-19 set DX_LIB=%ANDROID%\build-tools\19.1.0\lib set DX_PATH=%ANDROID%\build-tools\19.1.0 set EMBO_DEX="c:\Program Files (x86)\Embarcadero\Studio\14.0\lib\android\debug\classes.dex" set PROJ_DIR=%CD% set VERBOSE=0 set javaPath="c:\Program Files\Java\jdk1.7.0_51\bin" echo. echo Compiling the Java Sources echo. mkdir output 2> nul mkdir output\classes 2> nul if x%VERBOSE% == x1 SET VERBOSE_FLAG=-verbose %javaPath%\javac -source 1.6 -target 1.6 %VERBOSE_FLAG% -Xlint:deprecation -cp %ANDROID_PLATFORM%\android.jar -d output\classes src\com\animation\AntareyAnimation.java echo. echo Creating jar containing the new classes echo. mkdir output\jar 2> nul if x%VERBOSE% == x1 SET VERBOSE_FLAG=v %javaPath%\jar c%VERBOSE_FLAG%f output\jar\test_classes.jar -C output\classes com echo. echo Converting from jar to dex... echo. mkdir output\dex 2> nul if x%VERBOSE% == x1 SET VERBOSE_FLAG=--verbose call %DX_LIB%\dx.jar --dex %VERBOSE_FLAG% --output=%PROJ_DIR%\output\dex\test_classes.dex --positions=lines %PROJ_DIR%\output\jar\test_classes.jar echo. echo Merging dex files echo. %javaPath%\java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% echo Finished Merging copy output\dex\classes.dex .\classes.dex rd .\output /s /q вот обертка для ява кода unit Antarey.Android.JAnimation; interface uses Androidapi.JNI.GraphicsContentViewText, FMX.Platform.Android, FMX.Helpers.Android, FMX.Controls, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes; {$IFDEF ANDROID} type JAntareyAnimation = interface; // ---------------------------------------------------------------------------- // JAntareyAnimation // ---------------------------------------------------------------------------- JAntareyAnimationClass = interface(JObjectClass) ['{3FC48462-87FD-4F6C-9B15-02BC09D67168}'] function init(context: JContext): JAntareyAnimation; cdecl; end; [JavaSignature('com/animation/AntareyAnimation')] JAntareyAnimation = interface(JObject) ['{38A1F738-CDE7-46F6-AA07-5A453A3AC0B2}'] procedure Rotate3D(); cdecl; end; TAntareyAnimation = class(TJavaGenericImport<JAntareyAnimationClass, JAntareyAnimation>) end; procedure Rotate3D(); {$ENDIF} implementation {$IFDEF ANDROID} procedure Rotate3D(); begin CallInUIThread( procedure() begin Rotate3D(); end); end; {$ENDIF} end. ну и сама програмулина unit _frmMainPas; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects, Antarey.Android.JAnimation, FMX.Helpers.Android, FMX.StdCtrls; type TfrmMainPas = class(TForm) Button1: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMainPas: TfrmMainPas; implementation {$R *.fmx} procedure TfrmMainPas.Button1Click(Sender: TObject); begin Rotate3D(); end; end. все компилируется - запускается - но не кликается - вот что получаю и Где я напортачил??
  17. Вопрос к чему - так как анимация на андроиде встроенными средствами жуть полная - делается довольно легко - но работает если на форме одна кнопка - и тормозит просто жуть(тут на форуме , да и Андрей пример выкладывал есть реализация выдвижной боковой панели - если сама панель - работает отлично - киньте десяток компонентов - получим такой тормоз - вроде там время анимации не 2 с. а 2 мин. ), - может если для анимации использовать андроидовский апи то будет получше. Обертку по аналогии думаю напишу - а вот как спаровать носорога с бегемотом пока не выяснил
  18. В андроид апи в классе android.view.View есть процедура public void startAnimation (Animation animation) Если написать обертку для android.view.animation.Animation можно передать startAnimation (Animation animation) в TControl и главное как? чтобы получилось как на яве mView1.startAnimation(anim);
  19. Ладно, как написать ява обертку на С++ пока отложим и пойдем другим путем. Если писать обертку для ява кода на делфи и подключить ее к С++ - возникает два вопроса: 1. откуда брать циферки/буковки ? = interface( JObjectClass ) ['{F645A7A7-3737-4F4E-8848-9C54FBA00284}'] 2. в обертке надо описывать не только свой класс но и все классы импорта в ява кода ? import android.graphics.Bitmap; import android.graphics.Camera; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Shader; import android.os.Build; import android.view.View; import android.view.animation.Animation; import android.view.animation.Transformation; Ярослав, просьба не пинать за возможное нарушения правил о двух вопросах в одном посте - они неотъемлемая часть моего вопроса Спасибо
  20. Перерыл много форумов но так толком ничего и не нашел . Я написал ява код используя класс Animation для реализации анимации слайда и 3D вращения. Код проверил на Android Studio - работает Скомпилировал свой dex и объединил его с classes.dex студии - забросил в деплоймент Это было самое легкое. Дальше в упор не могу понять - и найти статьи о том как использовать свои ява процедуры Буду всем очень признателен за помощь Когда разберусь с подключением ява кода - думаю можно будет организовать что-то типа копилки реализации анимаций. Со слайдами и 3д переворотом вроде разобрался - на очереди folding но с ним пока проблемы - как его юзать в Android Studio разобрался - а вот как сделать код пригодным для студии пока нет Ярослав , очень сильно надеюсь на Вашу помощь - статей/примеров для С++ вообще нету - даже не знаю с чего начать Всем заранее спасибо
  21. Подскажите, почему при использовании анимации на андроиде она безбожно тормозит. TFloatAnimation или AnimateFloat или ChangeTabAction на Виндовс отрабатывается плавно и без тормозов - ета же анимация но на андроиде выполняется заметно медленнее и не соответствует установленной скорости анимация FContainer->AnimateFloat("Position.Z", TrackBarAnimDepth->Value,TrackBarAnimSpeed->Value); FContainer->AnimateFloatDelay("Position.Z", 0,TrackBarAnimSpeed->Value, 1); FContainer->AnimateFloatWait(APropertyName, 360,TrackBarAnimSpeed->Value, TAnimationType::InOut); зачастую на андроиде не прорисовывается
  22. Отвечу сам себе (Builder C++): (char)64
  23. Как в андроид получить код символа и наоборот, желательно совместимый код с виндой
×
×
  • Создать...