source upload

This commit is contained in:
Razor12911
2022-01-17 22:16:47 +02:00
parent 12936d065b
commit 098e8c48de
1778 changed files with 1206749 additions and 0 deletions

View File

@@ -0,0 +1,455 @@
//
// And_Controls Base Type & Constant
//
// simonsayz@naver.com / 최원식옹
//
// 2015.02.24 Started
//
unit And_Controls_Types;
{$IFDef FPC} {$mode delphi} {$packrecords c} {$EndIF}
interface
uses
SysUtils, Types, Classes,
And_Jni;
Const
// standard colors
clBlack = $FF000000;
clMaroon = $FF800000;
clGreen = $FF008000;
clOlive = $FF808000;
clNavy = $FF000080;
clPurple = $FF800080;
clTeal = $FF008080;
clGray = $FF808080;
clSilver = $FFC0C0C0;
clRed = $FFFF0000;
clLime = $FF00FF00;
clYellow = $FFFFFF00;
clBlue = $FF0000FF;
clFuchsia = $FFFF00FF;
clAqua = $FF00FFFF;
clWhite = $FFFFFFFF;
clLtGray = clSilver;
clDkGray = clGray;
// extended colors
clMoneyGreen = $FFC0DCC0;
clSkyBlue = $FFA6CAF0;
clCream = $FFFFFBF0;
clMedGray = $FFA0A0A4;
clCyan = clAqua;
clMagenta = clFuchsia;
clTransparent = $00000000;
// Max
cMaxTouch = 10; // Max Touch
cMaxForm = 40; // Max Form Stack Count
//
cLogModeOn = True;
cLogModeOff = False;
Type
//----------------------------------------------------------------------------
// Base Types
//----------------------------------------------------------------------------
cInt = Int32;
PInt32 = PjInt;
PSingle = PjFloat;
{$IfDef DCC}
pAnsiChar = MarshaledAString;
{$EndIf}
//----------------------------------------------------------------------------
// General Types
//----------------------------------------------------------------------------
TOnAppCreate = Procedure;
TOnNotify = Procedure(Sender: TObject) of object;
//
TLangType = (ltNone,
ltPascal,
ltJava,
ltAll);
//
TBytes = Array[0..0] of Byte;
pBytes = ^TBytes;
//
TRGB = Packed Record
R,G,B : Byte;
End;
pRGB = ^TRGB;
TRGBs = Packed Array[0..0] of TRGB;
pRGBs = ^TRGBs;
TImgRGB = Record
Width : Integer;
Height : Integer;
pRGBs_ : pRGBs;
End;
//
TXYi = Record
X,Y : Integer;
end;
TXYf = Record
X,Y : Single;
end;
TWH = Record
Width : Integer;
Height : Integer;
End;
TWidthHeight = TWH;
TXYWH = Record
X, Y, W, H: Integer;
End;
TColor = DWord;
TChangeType = (ctChangeBefore,
ctChange,
ctChangeAfter);
TFormState = (fsFormCreate, // Initializing
fsFormWork, // Working
fsFormClose); // Closing
//----------------------------------------------------------------------------
// Java - And_Controls Types (And_Controls Const )
// XRef. Controls.java - Const
//----------------------------------------------------------------------------
//
TDirectory_Type = ( DIRECTORY_ALARMS = 0,
DIRECTORY_DCIM = 1,
DIRECTORY_DOCUMENTS = 2,
DIRECTORY_DOWNLOADS = 3,
DIRECTORY_MOVIES = 4,
DIRECTORY_MUSIC = 5,
DIRECTORY_NOTIFICATIONS = 6,
DIRECTORY_PICTURES = 7,
DIRECTORY_PODCASTS = 8,
DIRECTORY_RINGTONES = 9,
DIRECTORY_App = 10001,
DIRECTORY_Files = 10002,
DIRECTORY_SDCard = 10003,
DIRECTORY_DataBase = 10004,
DIRECTORY_Shared_Prefs = 10005);
//
TScreen_Style = ( Screen_Style_Normal = 0,
Screen_Style_Full = 1);
//
TNetwork_Type = ( Network_Type_None = 0,
Network_Type_Wifi = 1,
Network_Type_Mobile = 2);
//
TPaint_Style = ( Paint_Style_Fill = 0,
Paint_Style_Fill_And_Stroke = 1,
Paint_Style_Stroke = 2);
//
TCompress_Format = ( Compress_Format_PNG = 0,
Compress_Format_JPEG = 1);
//
TTouch_Type = ( Touch_Down = 0,
Touch_Move = 1,
Touch_Up = 2);
//
TClick = ( Click_Default = 0,
Click_Yes = -1,
Click_No = -2);
// Animation
TAnimation_Effect = ( Animation_Effect_None = $00000000,
Animation_Effect_iR2L = $00000001,
Animation_Effect_oR2L = $00000002,
Animation_Effect_iL2R = $00000004,
Animation_Effect_oL2R = $00000008,
Animation_Effect_FadeIn = $00000010,
Animation_Effect_FadeOut = $00000020);
//
TGLView_State = ( GLView_State_SurfaceCreated = 0,
GLView_State_SurfaceChanged = 1,
GLView_State_DrawFrame = 2,
GLView_State_SurfaceDestroyed = 3,
GLView_State_SurfaceThread = 4);
//
TWebView_Act = ( WebView_Act_Continue = 0,
WebView_Act_Break = 1);
//
TWebView_State = ( WebView_State_Unknown = 0,
WebView_State_Before = 1,
WebView_State_Finish = 2,
WebView_State_Error = 3);
//
TAsyncTask_State = ( AsyncTask_State_PreExecute = 0,
AsyncTask_State_Update = 1,
AsyncTask_State_PostExecute = 2,
AsyncTask_State_BackGround = 3);
//
TEdit_Style = ( Edit_Style_SingleLine = 0,
Edit_Style_MultiLine = 1);
//
TEdit_Type = ( Edit_Type_Number = 0,
Edit_Type_Text = 1,
Edit_Type_Phone = 2,
Edit_Type_PassNumber = 3,
Edit_Type_PassText = 4);
//
THttp_Act = ( Http_Act_Text = 0,
Http_Act_Download = 1,
Http_Act_Upload = 2);
//
THttp_State = ( Http_State_Xfer = 0,
Http_State_Done = 1,
Http_State_Error = 2);
//----------------------------------------------------------------------------
// Java - Android Native Types
//----------------------------------------------------------------------------
TText_Alignment = ( Text_Alignment_INHERIT = 0,
Text_Alignment_GRAVITY = 1,
Text_Alignment_TEXT_START = 2,
Text_Alignment_TEXT_END = 3,
Text_Alignment_CENTER = 4,
Text_Alignment_VIEW_START = 5,
Text_Alignment_VIEW_END = 6);
TAndroid_Log = ( Android_Log_UNKNOWN = 0,
Android_Log_DEFAULT = 1,
Android_Log_VERBOSE = 2,
Android_Log_DEBUG = 3,
Android_Log_INFO = 4,
Android_Log_WARN = 5,
Android_Log_ERROR = 6,
Android_Log_FATAL = 7,
Android_Log_SILENT = 8);
//
TActivity_Result = ( Activity_Result_OK = -1,
Activity_Result_CANCELED = 0);
//
TScreen_Rotate = ( Screen_Rotate_UNDEFINED = 0,
Screen_Rotate_PORTRAIT = 1,
Screen_Rotate_LANDSCAPE = 2,
Screen_Rotate_SQUARE = 3); // Deprecated API 16
//
TScreen_Orientation = ( Screen_Orientation_UNSPECIFIED = -1,
Screen_Orientation_LANDSCAPE = 0,
Screen_Orientation_PORTRAIT = 1,
Screen_Orientation_USER = 2,
Screen_Orientation_BEHIND = 3,
Screen_Orientation_SENSOR = 4,
Screen_Orientation_NOSENSOR = 5,
Screen_Orientation_SENSOR_LANDSCAPE = 6,
Screen_Orientation_SENSOR_PORTRAIT = 7,
Screen_Orientation_REVERSE_LANDSCAPE = 8,
Screen_Orientation_REVERSE_PORTRAIT = 9,
Screen_Orientation_FULL_SENSOR = 10,
Screen_Orientation_USER_LANDSCAPE = 11,
Screen_Orientation_USER_PORTRAIT = 12,
Screen_Orientation_FULL_USER = 13,
Screen_Orientation_LOCKED = 14);
//
TGLES_Version = ( GLES_v1 = 1,
GLES_v2 = 2);
//
TProgressBarStyle = ( ProgressBarStyle_Horizontal = $01010078,
ProgressBarStyle_Large = $0101007a);
// jnigraphics
TAndroid_Bitmap_Result = ( Android_Bitmap_Result_SUCCESS = 0,
Android_Bitmap_Result_BAD_PARAMETER = -1,
Android_Bitmap_Result_JNI_EXCEPTION = -2,
Android_Bitmap_Result_ALLOCATION_FAILED = -3);
TAndroid_Bitmap_Format = ( Android_Bitmap_Format_NONE = 0,
Android_Bitmap_Format_RGBA_8888 = 1,
Android_Bitmap_Format_RGB_565 = 4,
Android_Bitmap_Format_RGBA_4444 = 7,
Android_Bitmap_Format_A_8 = 8);
TAndroid_Bitmap_Info = Record
width : Cardinal; // uint32_t;
height : Cardinal; // uint32_t
stride : Cardinal; // uint32_t
format : Integer; // int32_t
flags : Cardinal; // uint32_t - 0 for now
End;
PAndroid_Bitmap_Info = ^TAndroid_Bitmap_Info;
//----------------------------------------------------------------------------
// Mouch = Mouse + Touch
//----------------------------------------------------------------------------
TMouch = Record // Ref. iOS_Controls.pas TiOSMTouch
// Result
Active : Boolean;
Pt : TXYf;
Zoom : Single;
Angle : Single;
Start : Boolean; // Multi Touch start Event
End;
TMouches = Record
// Input
Cnt : Integer;
XYs : Array[0..cMaxTouch-1] of TXYf;
// Status Save
sLen : Single;
sAngle : Single;
sPt : TXYf;
sPt1 : TXYf;
sPt2 : TXYf;
sCount : Integer; // Total Event Count
Mouch : TMouch; // MultiTouch Result (Pt,Zoom,Angle)
End;
// Java Env Info.
TEnv = Record
//
AppName : String; // [Global] AppName ex. "com.kredix"
//
jVM : PJavaVM; // [Global] App
jEnv : PJNIEnv; // [Not Global] Env per Thread
//
jClass : jClass; // [Global] Java I/F Controls - Class
jControls : jObject; // [Global] Java I/F Controls - Object
jLayout : jObject; // [Global] Java App - Base Layout
End;
TPaths = Record
//
ALARMS : String;
DCIM : String;
DOCUMENTS : String;
DOWNLOADS : String;
MOVIES : String;
MUSIC : String;
NOTIFICATIONS : String;
PICTURES : String;
PODCASTS : String;
RINGTONES : String;
//
App : String;
Files : String;
SDCard : String;
DataBase : String;
Shared_Prefs : String;
End;
// Device Info.
TDevice = Record
ScreenStyle : TScreen_Style;
ScreenOrientation : TScreen_Orientation;
ScreenWH : TWH; // ex.
//
Model : String; // ex. Nexus 7
Version : String; // ex. 5.0.3
PhoneNumber : String; // ex.
ID : String; // ex.
Network : TNetwork_Type; // None,Wifi,Mobile
End;
TAnimation = Record
AniIn : TAnimation_Effect;
AniOut : TAnimation_Effect;
end;
// Form Stack
TCallBack = Record
Event : TOnNotify;
Sender : TObject;
End;
TFormCallBack = Record
jForm : jObject;
CloseCB : TCallBack; // Close Call Back Event
End;
TForms = Record
Index : Integer;
Stack : Array[0..cMaxForm-1] of TFormCallBack;
end;
//
TOnClickEx = Procedure(Sender: TObject; Value: integer) of object;
TOnClickYN = Procedure(Sender: TObject; Click : TClick ) of object;
TOnClickItem = Procedure(Sender: TObject; Item : Integer ) of object;
//
TOnChange = Procedure(Sender: TObject; EventType : TChangeType) of object;
TOnTouch = Procedure(Sender: TObject; ID: integer; X, Y: single) of object;
TOnTouchEvent = Procedure(Sender: TObject; Touch : TMouch ) of Object;
TOnCloseQuery = Procedure(Sender: TObject; var CanClose: boolean) of object;
TOnRotate = Procedure(Sender: TObject; rotate : TScreen_Rotate; Var rstRotate : TScreen_Rotate) of Object;
TOnActivityRst = Procedure(Sender: TObject; requestCode : Integer; resultCode : TActivity_Result; jData : jObject) of Object;
// State Event
TOnGLViewSize = Procedure(Sender: TObject; W, H : integer) of object;
TOnWebViewState = Procedure(Sender: TObject; State : TWebView_State ; URL : String; Var CanNavi : Boolean) of object;
TOnAsyncTaskState= Procedure(Sender: TObject; State : TAsyncTask_State; Progress : Integer) of object;
TOnHttpState = Procedure(Sender: TObject; Act : THttp_Act; State : THttp_State; Progress : Integer;Const Msg : String) of object;
// Camera Preview Event
TOnCameraFrame = Procedure(Sender: TObject; W,H,Fmt : Integer; Data : Pointer) of Object;
// Type To String
Function strWH ( WH : TWH ) : String;
Function strScreenStyle ( ScreenStyle : TScreen_Style ) : String;
Function strScreenOrientation( ScreenOrientation : TScreen_Orientation ) : String;
Function strNetworkType ( NetworkType : TNetwork_Type ) : String;
Function strEditType ( EditType : TEdit_Type ) : String;
Var
gLog : Boolean = True; // Log Write On/Off
implementation
Function strWH ( WH : TWH ) : String;
begin
Result := IntToStr(WH.Width) + 'x' + IntToStr(WH.Height);
end;
Function strScreenStyle ( ScreenStyle : TScreen_Style ) : String;
begin
Case ScreenStyle of
Screen_Style_Normal : Result := 'Normal';
Screen_Style_Full : Result := 'Full';
else Result := 'Unknown';
end;
end;
Function strScreenOrientation( ScreenOrientation : TScreen_Orientation ) : String;
begin
Case ScreenOrientation of
Screen_Orientation_UNSPECIFIED : Result := 'Unspecified';
Screen_Orientation_LANDSCAPE : Result := 'LANDSCAPE';
Screen_Orientation_PORTRAIT : Result := 'PORTRAIT';
Screen_Orientation_USER : Result := 'USER';
Screen_Orientation_BEHIND : Result := 'BEHIND';
Screen_Orientation_SENSOR : Result := 'SENSOR';
Screen_Orientation_NOSENSOR : Result := 'NOSENSOR';
Screen_Orientation_SENSOR_LANDSCAPE : Result := 'SENSOR_LANDSCAPE';
Screen_Orientation_SENSOR_PORTRAIT : Result := 'SENSOR_PORTRAIT';
Screen_Orientation_REVERSE_LANDSCAPE : Result := 'REVERSE_LANDSCAPE';
Screen_Orientation_REVERSE_PORTRAIT : Result := 'REVERSE_PORTRAIT';
Screen_Orientation_FULL_SENSOR : Result := 'FULL_SENSOR';
Screen_Orientation_USER_LANDSCAPE : Result := 'USER_LANDSCAPE';
Screen_Orientation_USER_PORTRAIT : Result := 'USER_PORTRAIT';
Screen_Orientation_FULL_USER : Result := 'FULL_USER';
Screen_Orientation_LOCKED : Result := 'LOCKED';
else Result := 'Unknown';
end;
end;
Function strNetworkType ( NetworkType : TNetwork_Type ) : String;
begin
Case NetworkType of
Network_Type_None : Result := 'None';
Network_Type_Wifi : Result := 'Wifi';
Network_Type_Mobile : Result := 'Mobile';
End;
end;
Function strEditType ( EditType : TEdit_Type ) : String;
begin
Case EditType of
Edit_Type_Text : Result := 'TEXT';
Edit_Type_Number : Result := 'NUMBER';
Edit_Type_Phone : Result := 'PHONE';
Edit_Type_PassNumber : Result := 'PASSNUMBER';
Edit_Type_PassText : Result := 'PASSTEXT';
else Result := 'Unknown';
end;
end;
end.

View File

@@ -0,0 +1,552 @@
//
//
// Jni for Pascal
//
// Original Source Code : /fpc/2.7.1/packages/jni/src/jni.pas
//
//
//
//
//
//
unit And_jni;
{$ifdef fpc} {$mode delphi} {$packrecords c} {$endif}
interface
(*
* Manifest constants.
*)
const JNI_FALSE=0;
JNI_TRUE=1;
JNI_VERSION_1_1=$00010001;
JNI_VERSION_1_2=$00010002;
JNI_VERSION_1_4=$00010004;
JNI_VERSION_1_6=$00010006;
JNI_OK=0; // no error
JNI_ERR=-1; // generic error
JNI_EDETACHED=-2; // thread detached from the VM
JNI_EVERSION=-3; // JNI version error
JNI_COMMIT=1; // copy content, do not free buffer
JNI_ABORT=2; // free buffer w/o copying back
{$IfDef DCC}
type
pChar = MarshaledAString;
{$EndIf}
(*
* Type definitions.
*)
type va_list=pointer;
jboolean=byte; // unsigned 8 bits
jbyte=shortint; // signed 8 bits
jchar=word; // unsigned 16 bits
jshort=smallint; // signed 16 bits
jint=longint; // signed 32 bits
jlong=int64; // signed 64 bits
jfloat=single; // 32-bit IEEE 754
jdouble=double; // 64-bit IEEE 754
jsize=jint; // "cardinal indices and sizes"
Pjboolean=^jboolean;
Pjbyte=^jbyte;
Pjchar=^jchar;
Pjshort=^jshort;
Pjint=^jint;
Pjlong=^jlong;
Pjfloat=^jfloat;
Pjdouble=^jdouble;
Pjsize=^jsize;
// Reference type
jobject=pointer;
jclass=jobject;
jstring=jobject;
jarray=jobject;
jobjectArray=jarray;
jbooleanArray=jarray;
jbyteArray=jarray;
jcharArray=jarray;
jshortArray=jarray;
jintArray=jarray;
jlongArray=jarray;
jfloatArray=jarray;
jdoubleArray=jarray;
jthrowable=jobject;
jweak=jobject;
jref=jobject;
PPointer=^pointer;
Pjobject=^jobject;
Pjclass=^jclass;
Pjstring=^jstring;
Pjarray=^jarray;
PjobjectArray=^jobjectArray;
PjbooleanArray=^jbooleanArray;
PjbyteArray=^jbyteArray;
PjcharArray=^jcharArray;
PjshortArray=^jshortArray;
PjintArray=^jintArray;
PjlongArray=^jlongArray;
PjfloatArray=^jfloatArray;
PjdoubleArray=^jdoubleArray;
Pjthrowable=^jthrowable;
Pjweak=^jweak;
Pjref=^jref;
_jfieldID=record // opaque structure
end;
jfieldID=^_jfieldID;// field IDs
PjfieldID=^jfieldID;
_jmethodID=record // opaque structure
end;
jmethodID=^_jmethodID;// method IDs
PjmethodID=^jmethodID;
PJNIInvokeInterface=^JNIInvokeInterface;
Pjvalue=^jvalue;
jvalue={$ifdef packedrecords}packed{$endif} record
case integer of
0:(z:jboolean);
1:(b:jbyte);
2:(c:jchar);
3:(s:jshort);
4:(i:jint);
5:(j:jlong);
6:(f:jfloat);
7:(d:jdouble);
8:(l:jobject);
end;
jobjectRefType=(
JNIInvalidRefType=0,
JNILocalRefType=1,
JNIGlobalRefType=2,
JNIWeakGlobalRefType=3);
PJNINativeMethod=^JNINativeMethod;
JNINativeMethod={$ifdef packedrecords}packed{$endif} record
name:pchar;
signature:pchar;
fnPtr:pointer;
end;
PJNINativeInterface=^JNINativeInterface;
_JNIEnv={$ifdef packedrecords}packed{$endif} record
functions:PJNINativeInterface;
end;
_JavaVM={$ifdef packedrecords}packed{$endif} record
functions:PJNIInvokeInterface;
end;
C_JNIEnv=^JNINativeInterface;
JNIEnv=^JNINativeInterface;
JavaVM=^JNIInvokeInterface;
PPJNIEnv=^PJNIEnv;
PJNIEnv=^JNIEnv;
PPJavaVM=^PJavaVM;
PJavaVM=^JavaVM;
JNINativeInterface={$ifdef packedrecords}packed{$endif} record
reserved0:pointer;
reserved1:pointer;
reserved2:pointer;
reserved3:pointer;
GetVersion:function(Env:PJNIEnv):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
DefineClass:function(Env:PJNIEnv;const Name:pchar;Loader:JObject;const Buf:PJByte;Len:JSize):JClass;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
FindClass:function(Env:PJNIEnv;const Name:pchar):JClass;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Reflection Support
FromReflectedMethod:function(Env:PJNIEnv;Method:JObject):JMethodID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
FromReflectedField:function(Env:PJNIEnv;Field:JObject):JFieldID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ToReflectedMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;IsStatic:JBoolean):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetSuperclass:function(Env:PJNIEnv;Sub:JClass):JClass;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
IsAssignableFrom:function(Env:PJNIEnv;Sub:JClass;Sup:JClass):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Reflection Support
ToReflectedField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;IsStatic:JBoolean):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
Throw:function(Env:PJNIEnv;Obj:JThrowable):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ThrowNew:function(Env:PJNIEnv;AClass:JClass;const Msg:pchar):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ExceptionOccurred:function(Env:PJNIEnv):JThrowable;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ExceptionDescribe:procedure(Env:PJNIEnv);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ExceptionClear:procedure(Env:PJNIEnv);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
FatalError:procedure(Env:PJNIEnv;const Msg:pchar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Local Reference Management
PushLocalFrame:function(Env:PJNIEnv;Capacity:JInt):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
PopLocalFrame:function(Env:PJNIEnv;Result:JObject):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewGlobalRef:function(Env:PJNIEnv;LObj:JObject):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
DeleteGlobalRef:procedure(Env:PJNIEnv;GRef:JObject);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
DeleteLocalRef:procedure(Env:PJNIEnv;Obj:JObject);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
IsSameObject:function(Env:PJNIEnv;Obj1:JObject;Obj2:JObject):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Local Reference Management
NewLocalRef:function(Env:PJNIEnv;Ref:JObject):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
EnsureLocalCapacity:function(Env:PJNIEnv;Capacity:JInt):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
AllocObject:function(Env:PJNIEnv;AClass:JClass):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewObject:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewObjectV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewObjectA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetObjectClass:function(Env:PJNIEnv;Obj:JObject):JClass;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
IsInstanceOf:function(Env:PJNIEnv;Obj:JObject;AClass:JClass):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetMethodID:function(Env:PJNIEnv;AClass:JClass;const Name:pchar;const Sig:pchar):JMethodID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallObjectMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallObjectMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallObjectMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallBooleanMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallBooleanMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallBooleanMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallByteMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallByteMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallByteMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallCharMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallCharMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallCharMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallShortMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallShortMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallShortMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallIntMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallIntMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallIntMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallLongMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallLongMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallLongMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallFloatMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallFloatMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallFloatMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallDoubleMethod:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallDoubleMethodV:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallDoubleMethodA:function(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallVoidMethod:procedure(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallVoidMethodV:procedure(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:va_list);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallVoidMethodA:procedure(Env:PJNIEnv;Obj:JObject;MethodID:JMethodID;Args:PJValue);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualObjectMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualObjectMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualObjectMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualBooleanMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualBooleanMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualBooleanMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualByteMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualByteMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualByteMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualCharMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualCharMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualCharMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualShortMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualShortMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualShortMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualIntMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualIntMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualIntMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualLongMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualLongMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualLongMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualFloatMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualFloatMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualFloatMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualDoubleMethod:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualDoubleMethodV:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualDoubleMethodA:function(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualVoidMethod:procedure(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualVoidMethodV:procedure(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:va_list);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallNonvirtualVoidMethodA:procedure(Env:PJNIEnv;Obj:JObject;AClass:JClass;MethodID:JMethodID;Args:PJValue);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetFieldID:function(Env:PJNIEnv;AClass:JClass;const Name:pchar;const Sig:pchar):JFieldID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetObjectField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetBooleanField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetByteField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetCharField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetShortField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetIntField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetLongField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetFloatField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetDoubleField:function(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetObjectField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JObject);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetBooleanField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JBoolean);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetByteField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JByte);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetCharField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetShortField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JShort);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetIntField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetLongField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JLong);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetFloatField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JFloat);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetDoubleField:procedure(Env:PJNIEnv;Obj:JObject;FieldID:JFieldID;Val:JDouble);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticMethodID:function(Env:PJNIEnv;AClass:JClass;const Name:pchar;const Sig:pchar):JMethodID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticObjectMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticObjectMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticObjectMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticBooleanMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticBooleanMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticBooleanMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticByteMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticByteMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticByteMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticCharMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticCharMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticCharMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticShortMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticShortMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticShortMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticIntMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticIntMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticIntMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticLongMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticLongMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticLongMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticFloatMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticFloatMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticFloatMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticDoubleMethod:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticDoubleMethodV:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticDoubleMethodA:function(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticVoidMethod:procedure(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticVoidMethodV:procedure(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:va_list);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
CallStaticVoidMethodA:procedure(Env:PJNIEnv;AClass:JClass;MethodID:JMethodID;Args:PJValue);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticFieldID:function(Env:PJNIEnv;AClass:JClass;const Name:pchar;const Sig:pchar):JFieldID;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticObjectField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticBooleanField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticByteField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticCharField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticShortField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticIntField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticLongField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticFloatField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStaticDoubleField:function(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID):JDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticObjectField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JObject);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticBooleanField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JBoolean);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticByteField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JByte);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticCharField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticShortField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JShort);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticIntField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticLongField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JLong);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticFloatField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JFloat);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetStaticDoubleField:procedure(Env:PJNIEnv;AClass:JClass;FieldID:JFieldID;Val:JDouble);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewString:function(Env:PJNIEnv;const Unicode:PJChar;Len:JSize):JString;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStringLength:function(Env:PJNIEnv;Str:JString):JSize;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStringChars:function(Env:PJNIEnv;Str:JString;var IsCopy:JBoolean):PJChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseStringChars:procedure(Env:PJNIEnv;Str:JString;const Chars:PJChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewStringUTF:function(Env:PJNIEnv;const UTF:pchar):JString;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStringUTFLength:function(Env:PJNIEnv;Str:JString):JSize;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStringUTFChars:function(Env:PJNIEnv;Str:JString; IsCopy:PJBoolean):pchar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseStringUTFChars:procedure(Env:PJNIEnv;Str:JString;const Chars:pchar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetArrayLength:function(Env:PJNIEnv;AArray:JArray):JSize;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewObjectArray:function(Env:PJNIEnv;Len:JSize;AClass:JClass;Init:JObject):JObjectArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetObjectArrayElement:function(Env:PJNIEnv;AArray:JObjectArray;Index:JSize):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetObjectArrayElement:procedure(Env:PJNIEnv;AArray:JObjectArray;Index:JSize;Val:JObject);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewBooleanArray:function(Env:PJNIEnv;Len:JSize):JBooleanArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewByteArray:function(Env:PJNIEnv;Len:JSize):JByteArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewCharArray:function(Env:PJNIEnv;Len:JSize):JCharArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewShortArray:function(Env:PJNIEnv;Len:JSize):JShortArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewIntArray:function(Env:PJNIEnv;Len:JSize):JIntArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewLongArray:function(Env:PJNIEnv;Len:JSize):JLongArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewFloatArray:function(Env:PJNIEnv;Len:JSize):JFloatArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
NewDoubleArray:function(Env:PJNIEnv;Len:JSize):JDoubleArray;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetBooleanArrayElements:function(Env:PJNIEnv;AArray:JBooleanArray;var IsCopy:JBoolean):PJBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetByteArrayElements:function(Env:PJNIEnv;AArray:JByteArray;var IsCopy:JBoolean):PJByte;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetCharArrayElements:function(Env:PJNIEnv;AArray:JCharArray;var IsCopy:JBoolean):PJChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetShortArrayElements:function(Env:PJNIEnv;AArray:JShortArray;var IsCopy:JBoolean):PJShort;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetIntArrayElements:function(Env:PJNIEnv;AArray:JIntArray;var IsCopy:JBoolean):PJInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetLongArrayElements:function(Env:PJNIEnv;AArray:JLongArray;var IsCopy:JBoolean):PJLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetFloatArrayElements:function(Env:PJNIEnv;AArray:JFloatArray;var IsCopy:JBoolean):PJFloat;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetDoubleArrayElements:function(Env:PJNIEnv;AArray:JDoubleArray;var IsCopy:JBoolean):PJDouble;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseBooleanArrayElements:procedure(Env:PJNIEnv;AArray:JBooleanArray;Elems:PJBoolean;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseByteArrayElements:procedure(Env:PJNIEnv;AArray:JByteArray;Elems:PJByte;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseCharArrayElements:procedure(Env:PJNIEnv;AArray:JCharArray;Elems:PJChar;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseShortArrayElements:procedure(Env:PJNIEnv;AArray:JShortArray;Elems:PJShort;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseIntArrayElements:procedure(Env:PJNIEnv;AArray:JIntArray;Elems:PJInt;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseLongArrayElements:procedure(Env:PJNIEnv;AArray:JLongArray;Elems:PJLong;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseFloatArrayElements:procedure(Env:PJNIEnv;AArray:JFloatArray;Elems:PJFloat;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseDoubleArrayElements:procedure(Env:PJNIEnv;AArray:JDoubleArray;Elems:PJDouble;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetBooleanArrayRegion:procedure(Env:PJNIEnv;AArray:JBooleanArray;Start:JSize;Len:JSize;Buf:PJBoolean);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetByteArrayRegion:procedure(Env:PJNIEnv;AArray:JByteArray;Start:JSize;Len:JSize;Buf:PJByte);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetCharArrayRegion:procedure(Env:PJNIEnv;AArray:JCharArray;Start:JSize;Len:JSize;Buf:PJChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetShortArrayRegion:procedure(Env:PJNIEnv;AArray:JShortArray;Start:JSize;Len:JSize;Buf:PJShort);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetIntArrayRegion:procedure(Env:PJNIEnv;AArray:JIntArray;Start:JSize;Len:JSize;Buf:PJInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetLongArrayRegion:procedure(Env:PJNIEnv;AArray:JLongArray;Start:JSize;Len:JSize;Buf:PJLong);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetFloatArrayRegion:procedure(Env:PJNIEnv;AArray:JFloatArray;Start:JSize;Len:JSize;Buf:PJFloat);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetDoubleArrayRegion:procedure(Env:PJNIEnv;AArray:JDoubleArray;Start:JSize;Len:JSize;Buf:PJDouble);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetBooleanArrayRegion:procedure(Env:PJNIEnv;AArray:JBooleanArray;Start:JSize;Len:JSize;Buf:PJBoolean);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetByteArrayRegion:procedure(Env:PJNIEnv;AArray:JByteArray;Start:JSize;Len:JSize;Buf:PJByte);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetCharArrayRegion:procedure(Env:PJNIEnv;AArray:JCharArray;Start:JSize;Len:JSize;Buf:PJChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetShortArrayRegion:procedure(Env:PJNIEnv;AArray:JShortArray;Start:JSize;Len:JSize;Buf:PJShort);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetIntArrayRegion:procedure(Env:PJNIEnv;AArray:JIntArray;Start:JSize;Len:JSize;Buf:PJInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetLongArrayRegion:procedure(Env:PJNIEnv;AArray:JLongArray;Start:JSize;Len:JSize;Buf:PJLong);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetFloatArrayRegion:procedure(Env:PJNIEnv;AArray:JFloatArray;Start:JSize;Len:JSize;Buf:PJFloat);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
SetDoubleArrayRegion:procedure(Env:PJNIEnv;AArray:JDoubleArray;Start:JSize;Len:JSize;Buf:PJDouble);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
RegisterNatives:function(Env:PJNIEnv;AClass:JClass;const Methods:PJNINativeMethod;NMethods:JInt):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
UnregisterNatives:function(Env:PJNIEnv;AClass:JClass):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
MonitorEnter:function(Env:PJNIEnv;Obj:JObject):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
MonitorExit:function(Env:PJNIEnv;Obj:JObject):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetJavaVM:function(Env:PJNIEnv;var VM:JavaVM):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// String Operations
GetStringRegion:procedure(Env:PJNIEnv;Str:JString;Start:JSize;Len:JSize;Buf:PJChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetStringUTFRegion:procedure(Env:PJNIEnv;Str:JString;Start:JSize;Len:JSize;Buf:pchar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Array Operations
GetPrimitiveArrayCritical:function(Env:PJNIEnv;AArray:JArray;var IsCopy:JBoolean):pointer;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleasePrimitiveArrayCritical:procedure(Env:PJNIEnv;AArray:JArray;CArray:pointer;Mode:JInt);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// String Operations
GetStringCritical:function(Env:PJNIEnv;Str:JString;var IsCopy:JBoolean):PJChar;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
ReleaseStringCritical:procedure(Env:PJNIEnv;Str:JString;CString:PJChar);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Weak Global References
NewWeakGlobalRef:function(Env:PJNIEnv;Obj:JObject):JWeak;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
DeleteWeakGlobalRef:procedure(Env:PJNIEnv;Ref:JWeak);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// Exceptions
ExceptionCheck:function(Env:PJNIEnv):JBoolean;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// J2SDK1_4
NewDirectByteBuffer:function(Env:PJNIEnv;Address:pointer;Capacity:JLong):JObject;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetDirectBufferAddress:function(Env:PJNIEnv;Buf:JObject):pointer;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetDirectBufferCapacity:function(Env:PJNIEnv;Buf:JObject):JLong;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
// added in JNI 1.6
GetObjectRefType:function(Env:PJNIEnv;AObject:JObject):jobjectRefType;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
end;
JNIInvokeInterface={$ifdef packedrecords}packed{$endif} record
reserved0:pointer;
reserved1:pointer;
reserved2:pointer;
DestroyJavaVM:function(PVM:PJavaVM):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
AttachCurrentThread:function(PVM:PJavaVM;PEnv:PPJNIEnv;Args:pointer):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
DetachCurrentThread:function(PVM:PJavaVM):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
GetEnv:function(PVM:PJavaVM;PEnv:Ppointer;Version:JInt):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
AttachCurrentThreadAsDaemon:function(PVM:PJavaVM;PEnv:PPJNIEnv;Args:pointer):JInt;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
end;
JavaVMAttachArgs={$ifdef packedrecords}packed{$endif} record
version:jint; // must be >= JNI_VERSION_1_2
name:pchar; // NULL or name of thread as modified UTF-8 str
group:jobject; // global ref of a ThreadGroup object, or NULL
end;
(**
* JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no
* longer supported.)
*)
PJavaVMOption=^JavaVMOption;
JavaVMOption={$ifdef packedrecords}packed{$endif} record
optionString:pchar;
extraInfo:pointer;
end;
JavaVMInitArgs={$ifdef packedrecords}packed{$endif} record
version:jint; // use JNI_VERSION_1_2 or later
nOptions:jint;
options:PJavaVMOption;
ignoreUnrecognized:Pjboolean;
end;
(*
* VM initialization functions.
*
* Note these are the only symbols exported for JNI by the VM.
*)
{$ifdef jniexternals}
function JNI_GetDefaultJavaVMInitArgs(p:pointer):jint;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}external 'jni' name 'JNI_GetDefaultJavaVMInitArgs';
function JNI_CreateJavaVM(vm:PPJavaVM;AEnv:PPJNIEnv;p:pointer):jint;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}external 'jni' name 'JNI_CreateJavaVM';
function JNI_GetCreatedJavaVMs(vm:PPJavaVM;ASize:jsize;p:Pjsize):jint;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}external 'jni' name 'JNI_GetCreatedJavaVMs';
{$endif}
(*
* Prototypes for functions exported by loadable shared libs. These are
* called by JNI, not provided by JNI.
*)
const curVM : PJavaVM = nil;
curEnv : PJNIEnv = nil;
(*
function JNI_OnLoad(vm:PJavaVM;reserved:pointer):jint;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
procedure JNI_OnUnload(vm:PJavaVM;reserved:pointer);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
*)
implementation
//function JNI_OnLoad(vm:PJavaVM;reserved:pointer):jint;{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
//begin
// curVM := vm;
// result := JNI_VERSION_1_6;
//end;
//procedure JNI_OnUnload(vm:PJavaVM;reserved:pointer);{$ifdef mswindows}stdcall;{$else}cdecl;{$endif}
//begin
//end;
end.

View File

@@ -0,0 +1,117 @@
Unit Form_Splash;
{$mode delphi}
interface
uses
SysUtils,Classes,math,
And_jni,And_jni_Bridge,
And_Controls_Types,And_Controls;
Type
jForm_Splash = class(jForm)
private
tvLabel : jTextView;
ivImageBG : jImageView; // Image - BackGround
ivImageIcon : jImageView; // Image - Cube
Timer : jTimer;
//
protected
Procedure Form_OnActive (Sender : TObject);
Procedure Form_OnCloseQuery(Sender : TObject; Var CanClose : Boolean);
Procedure Form_OnClose (Sender : TObject);
//
Procedure Timer_OnTimer (Sender : TObject);
public
Cnt_Timer : Integer;
Constructor Create(Owner : jForm) ; override;
Destructor Destroy; override;
end;
implementation
//
Constructor jForm_Splash.Create(Owner : jForm);
begin
inherited;
dbg('SplashForm.OnCreate');
// Resource Extract
Asset_SaveToFile('mormot.jpg' ,App.Paths.Files+'/mormot.jpg');
Asset_SaveToFile('Synopse.png',App.Paths.Files+'/Synopse.png');
// Create Controls ----------------------------------------------------------
ivImageBG := jImageView.Create(Self);
ivImageBG.xyWH := xyWH( 0,0,App.Device.ScreenWH.width,App.Device.ScreenWH.height); // x,y,w,h
ivImageBG.Parent := Self.View;
ivImageBG.ImageName := App.Paths.Files+'/mormot.jpg';
//
ivImageIcon := jImageView.Create(Self);
ivImageIcon.xyWH := xyWH(100,80,550,190); // x,y,w,h
ivImageIcon.Parent := Self.View;
ivImageIcon.ImageName := App.Paths.Files+'/Synopse.png';
//
tvLabel := jTextView.Create (Self);
tvLabel.xyWH := xyWH(60,100,600,60);
tvLabel.Parent := Self.View;
tvLabel.Text := utf8encode('Please wait ... initializing the mORMot');
tvLabel.FontColor := clWhite;
tvLabel.FontSize := 35;
//
Timer := jTimer.Create(Self);
Timer.OnTimer := Timer_OnTimer;
Timer.Interval := 20;
Timer.Enabled := True;
Cnt_Timer := 0;
//
Self.Name := 'Form_Splash';
Self.Color := clBlack;
Self.OnActive := Form_OnActive;
Self.OnClose := Form_OnClose;
Self.OnCloseQuery := Form_OnCloseQuery;
App.SetTitleBar(False);
App.SetScreenStyle(Screen_Style_Full);
//
end;
Destructor jForm_Splash.Destroy;
begin
ivImageBG.Free;
ivImageIcon.Free;
tvLabel.Free;
Timer.Free;
inherited;
end;
//
Procedure jForm_Splash.Form_OnActive(Sender : TObject);
begin
dbg('Form_Splash OnActive');
end;
//
Procedure jForm_Splash.Form_OnCloseQuery(Sender : TObject; Var CanClose : Boolean);
begin
dbg('Form_Splash OnCloseQuery');
CanClose := True;
end;
//
Procedure jForm_Splash.Form_OnClose (Sender : TObject);
begin
dbg('Form_Splash OnClose');
Free;
App.SetTitleBar(True);
App.SetScreenStyle(Screen_Style_Normal);
end;
//
Procedure jForm_Splash.Timer_OnTimer(Sender : TObject);
begin
Inc(Cnt_Timer,3);
If Cnt_timer < ((App.Device.ScreenWH.height DIV 2)-200) then ivImageIcon.xyWH := xyWH(100,80+Cnt_Timer,550,190);
If Cnt_timer < (App.Device.ScreenWH.height DIV 2) then Exit;
Timer.Enabled := False;
Close;
end;
end.

View File

@@ -0,0 +1,245 @@
Unit Form_Main;
{$mode delphi}
interface
uses
SysUtils,Classes,math,
And_jni,And_jni_Bridge,And_Controls_Types,And_Controls,
Form_Splash
,SynCommons
,mORMot
,mORMotSQLite3, SynSQLite3Static
,SampleData
;
Type
jForm_Main = class(jForm)
private
ivImageBG : jImageView; // Image - BackGround
lblTitle : jTextView;
lblName : jTextView;
lblMessage : jTextView;
AddBtn : jButton;
FindBtn : jButton;
cbInput : jCheckBox;
cbInput2 : jCheckBox;
NameInput : jEditText;
MessageInput : jEditText;
private
Database: TSQLRest;
Model: TSQLModel;
protected
Procedure Form_OnActive (Sender : TObject);
Procedure Form_OnCloseQuery(Sender : TObject; Var CanClose : Boolean);
Procedure Form_OnClose (Sender : TObject);
Procedure Form_OnRotate (Sender : TObject; rotate : TScreen_Rotate; var rstRotate : TScreen_Rotate);
//
Procedure AddBtn_OnClick (Sender : TObject);
Procedure FindBtn_OnClick (Sender : TObject);
Procedure cbInput_OnClick (Sender : TObject);
Procedure cbInput2_OnClick (Sender : TObject);
public
Form_Splash : jForm;
Constructor Create(Owner : jForm) ; override;
end;
implementation
//
Constructor jForm_Main.Create(Owner : jForm) ;
begin
inherited;
Dbg('MainForm.OnCreate');
Self.Color := clBlack;
// Resource Extract
Asset_SaveToFile('mormotbw.jpg' ,App.Paths.Files+'/mormotbw.jpg');
// Create Controls ----------------------------------------------------------
ivImageBG := jImageView.Create(Self);
ivImageBG.xyWH := xyWH( 0,0,App.Device.ScreenWH.width,App.Device.ScreenWH.height); // x,y,w,h
ivImageBG.Parent := Self.View;
ivImageBG.ImageName := App.Paths.Files+'/mormotbw.jpg';
lblTitle := jTextView.Create (Self);
lblTitle.xyWH := xyWH(30,10,600,80,1.4);
lblTitle.Parent := Self.View;
lblTitle.Text := 'mORMot for Android';
lblTitle.FontSize := 60;
lblTitle.FontColor := clBlue;
lblTitle.Enabled := True;
//
lblName := jTextView.Create (Self);
lblName.xyWH := xyWH(30,90,200,40,1.2);
lblName.Parent := Self.View;
lblName.Text := 'Your name' ;
lblName.FontColor := clBlack;
lblName.FontSize := 30;
NameInput := jEditText.Create (Self);
NameInput.xyWH := xyWH( 30,150,350, 80);
NameInput.Parent := Self.View;
NameInput.FontColor := clWhite; // ARGB , Black
NameInput.FontSize := 40; // Pixel
NameInput.EditType := Edit_Type_Text; //
//NameInput.OnEnter := edInput_OnEnter;
//NameInput.OnChange := edInput_OnChange;
NameInput.Text := '';
NameInput.Hint := 'Enter Name';
FindBtn := jButton.Create(Self);
FindBtn.xyWH := xyWH( 400,150,220,80); // x,y,w,h
FindBtn.Parent := Self.View;
FindBtn.Text := 'Find';
FindBtn.FontColor := clWhite;
FindBtn.FontSize := 40;
FindBtn.OnClick := FindBtn_OnClick;
lblMessage := jTextView.Create (Self);
lblMessage.xyWH := xyWH(30,200,200,40,1.2);
lblMessage.Parent := Self.View;
lblMessage.Text := 'Your message' ;
lblMessage.FontColor := clBlack;
lblMessage.FontSize := 30;
MessageInput := jEditText.Create(Self);
MessageInput.xyWH := xyWH( 30, 280, 600, 400);
MessageInput.Parent := Self.View;
MessageInput.FontColor := clWhite; // ARGB , Black
MessageInput.FontSize := 40; // Pixel
MessageInput.EditType := Edit_Type_Text; //
MessageInput.EditStyle := Edit_Style_MultiLine; //
//MessageInput.OnEnter := edInput_OnEnter;
//MessageInput.OnChange := edInput_OnChange;
MessageInput.Text := '';
MessageInput.Hint := 'Enter Message';
AddBtn := jButton.Create(Self);
AddBtn.xyWH := xyWH(30,700,600,80); // x,y,w,h
AddBtn.Parent := Self.View;
AddBtn.Text := 'Add the message';
AddBtn.OnClick := AddBtn_OnClick;
AddBtn.FontSize := 40;
AddBtn.FontColor := clWhite;
cbInput := jCheckBox.Create(Self);
cbInput.xyWH := xyWH( 30,800,400, 50); // x,y,w,h
cbInput.Parent := Self.View;
cbInput.Text := 'Full screen';
cbInput.Checked := False;
cbInput.FontColor := clWhite;
cbInput.FontSize := 40; // Pixel
cbInput.OnClick := cbInput_OnClick;
cbInput2 := jCheckBox.Create(Self);
cbInput2.xyWH := xyWH( 30,900,400, 50); // x,y,w,h
cbInput2.Parent := Self.View;
cbInput2.Text := 'Title / action bar';
cbInput2.Checked := True;
cbInput2.FontColor := clWhite;
cbInput2.FontSize := 40; // Pixel
cbInput2.OnClick := cbInput2_OnClick;
Self.Name := 'Form_Main';
Self.OnActive := Form_OnActive;
Self.OnCloseQuery := Form_OnCloseQuery;
Self.OnClose := Form_OnClose;
//Self.OnRotate := Form_OnRotate; // rotate not enabled now ... fixed portrait ... see also AndroidManifest.xml
App.SetTitleBar(True);
App.SetScreenStyle(Screen_Style_Normal);
// the mORMot
Model := CreateSampleModel; // from SampleData unit
Database := TSQLRestServerDB.Create(Model,App.Paths.DOWNLOADS+'/mORMot.db3');
TSQLRestServerDB(Database).CreateMissingTables;
Form_Splash := jForm_Splash.Create(Self);
end;
Procedure jForm_Main.Form_OnActive(Sender : TObject);
begin
Dbg('OnActive Event');
Form_Splash.Show;
end;
Procedure jForm_Main.Form_OnCloseQuery(Sender : TObject; Var CanClose : Boolean);
begin
Dbg('CanClose:Main');
CanClose := True;
if Assigned(Form_Splash.View) then Form_Splash.Visible := False;
end;
Procedure jForm_Main.Form_OnClose(Sender : TObject);
begin
Dbg('OnClose Event:Main');
Database.Free;
Model.Free;
Self.Free;
App.Finish;
end;
Procedure jForm_Main.Form_OnRotate(Sender : TObject; rotate : TScreen_Rotate; var rstRotate : TScreen_Rotate);
begin
MessageInput.Text := 'Rotating';
case rotate of
Screen_Rotate_PORTRAIT:MessageInput.Text := 'Rotating: Portrait';
Screen_Rotate_LANDSCAPE:MessageInput.Text := 'Rotating: Landscape';
end;
end;
Procedure jForm_Main.cbInput_OnClick(Sender : TObject);
begin
Case cbInput.Checked of
True : begin
App.setScreenStyle(Screen_Style_Full);
end;
False : begin
App.setScreenStyle(Screen_Style_Normal);
end;
end;
end;
Procedure jForm_Main.cbInput2_OnClick(Sender : TObject);
begin
App.SetTitleBar(cbInput2.Checked);
end;
Procedure jForm_Main.AddBtn_OnClick (Sender : TObject);
var Rec: TSQLSampleRecord;
begin
Rec := TSQLSampleRecord.Create;
try
// we use explicit StringToUTF8() for conversion below
// a real application should use TLanguageFile.StringToUTF8() in mORMoti18n
Rec.Name := StringToUTF8(NameInput.Text);
Rec.Question := StringToUTF8(MessageInput.Text);
if Database.Add(Rec,true)=0 then
ShowMessage('Error adding the data') else begin
NameInput.Text := '';
MessageInput.Text := '';
NameInput.SetFocus;
end;
finally
Rec.Free;
end;
end;
Procedure jForm_Main.FindBtn_OnClick (Sender : TObject);
var Rec: TSQLSampleRecord;
begin
Rec := TSQLSampleRecord.Create(Database,'Name=?',[StringToUTF8(NameInput.Text)]);
try
if Rec.ID=0 then
MessageInput.Text := 'Not found' else
MessageInput.Text := UTF8ToString(Rec.Question);
finally
Rec.Free;
end;
end;
end.

View File

@@ -0,0 +1,39 @@
/// it's a good practice to put all data definition into a stand-alone unit
// - this unit will be shared between client and server
unit SampleData;
interface
uses
SynCommons,
mORMot;
type
/// here we declare the class containing the data
// - it just has to inherits from TSQLRecord, and the published
// properties will be used for the ORM (and all SQL creation)
// - the beginning of the class name must be 'TSQL' for proper table naming
// in client/server environnment
TSQLSampleRecord = class(TSQLRecord)
private
fQuestion: RawUTF8;
fName: RawUTF8;
fTime: TModTime;
published
property Time: TModTime read fTime write fTime;
property Name: RawUTF8 read fName write fName;
property Question: RawUTF8 read fQuestion write fQuestion;
end;
/// an easy way to create a database model for client and server
function CreateSampleModel: TSQLModel;
implementation
function CreateSampleModel: TSQLModel;
begin
result := TSQLModel.Create([TSQLSampleRecord]);
end;
end.

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<General>
<Flags>
<SaveOnlyProjectUnits Value="True"/>
<MainUnitHasCreateFormStatements Value="False"/>
<MainUnitHasTitleStatement Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="mORMotDemoOnAndroid"/>
<UseAppBundle Value="False"/>
<ResourceType Value="res"/>
<Icon Value="-1"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<BuildNr Value="2986"/>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<Units Count="5">
<Unit0>
<Filename Value="mORMotOnAndroid.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="mORMotOnAndroid"/>
</Unit0>
<Unit1>
<Filename Value="Form_main.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="Form_Main"/>
</Unit1>
<Unit2>
<Filename Value="And_Controls/And_Jni_Bridge.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="And_Jni_Bridge"/>
</Unit2>
<Unit3>
<Filename Value="../src/Controls.java"/>
<IsPartOfProject Value="True"/>
</Unit3>
<Unit4>
<Filename Value="../src/App.java"/>
<IsPartOfProject Value="True"/>
</Unit4>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename ApplyConventions="False"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir);../mORMot"/>
<Libraries Value="C:/Users/Public/Documents/Embarcadero/Studio/15.0/PlatformSDKs/android-ndk-r9c/platforms/android-18/arch-arm/usr/lib/;C:/Users/Public/Documents/Embarcadero/Studio/15.0/PlatformSDKs/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.6/"/>
<OtherUnitFiles Value="And_Controls;../mORMot;../mORMot/SQLite3"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<SyntaxMode Value="Delphi"/>
<CStyleOperator Value="False"/>
<AllowLabel Value="False"/>
<CPPInline Value="False"/>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<TargetCPU Value="arm"/>
<TargetOS Value="android"/>
<Optimizations>
<OptimizationLevel Value="3"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="False"/>
<UseLineInfoUnit Value="False"/>
</Debugging>
<Options>
<ExecutableType Value="Library"/>
</Options>
</Linking>
<Other>
<Verbosity>
<ShowNotes Value="False"/>
<ShowHints Value="False"/>
<ShowGenInfo Value="False"/>
</Verbosity>
<WriteFPCLogo Value="False"/>
<CustomOptions Value="-MObjFPC -Scghi -CX
-Tandroid
-Parm
-O3
-XsdX
-vew
-FuAnd_Controls
-FUoutput
-XParm-linux-androideabi-
-o..\libs\armeabi-v7a\libmain.so"/>
<ExecuteBefore>
<CompileReasons Compile="False" Build="False" Run="False"/>
</ExecuteBefore>
<ExecuteAfter>
<ShowAllMessages Value="True"/>
<CompileReasons Compile="False" Run="False"/>
</ExecuteAfter>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@@ -0,0 +1,115 @@
//------------------------------------------------------------------------------
//
// Free Pascal for Android
//
//------------------------------------------------------------------------------
library mORMotOnAndroidTyphon;
{$mode delphi}
{$packrecords c}
uses
And_jni,And_jni_Bridge,
And_Controls_Types,And_Controls,
Form_Main;
//------------------------------------------------------------------------------
// Application Define
//
// XRef.
// App.java : package com.kredix;
// Controls.java : package com.kredix;
//
// AndroidManifest.xml : package = "com.kredix"
// uninstall.bat : adb.exe uninstall com.kredix
//------------------------------------------------------------------------------
Const
cAppName = 'com.mormot.mORMotDemoOnAndroid'; // ! Use your app name
cAppJ = 'com_mormot_Controls'; // ! Pascal Lib. Export name
// JNI - Java->Pas
function JNI_OnLoad (vm:PJavaVM;reserved:pointer):jint; cdecl; forward;
Procedure JNI_OnUnload (vm:PJavaVM;reserved:pointer); cdecl; forward;
//-----------------------------------------------------------------------------
// Java Interface
//-----------------------------------------------------------------------------
exports
// JNI
JNI_OnLoad name 'JNI_OnLoad',
JNI_OnUnload name 'JNI_OnUnload',
// App Event
Java_Event_pOnAppCreate name 'Java_' + cAppJ + '_pOnAppCreate' ,
Java_Event_pOnAppScreenStyle name 'Java_' + cAppJ + '_pOnAppScreenStyle' ,
Java_Event_pOnAppScreenOrientation name 'Java_' + cAppJ + '_pOnAppScreenOrientation' ,
Java_Event_pOnAppNewIntent name 'Java_' + cAppJ + '_pOnAppNewIntent' ,
Java_Event_pOnAppDestroy name 'Java_' + cAppJ + '_pOnAppDestroy' ,
Java_Event_pOnAppPause name 'Java_' + cAppJ + '_pOnAppPause' ,
Java_Event_pOnAppRestart name 'Java_' + cAppJ + '_pOnAppRestart' ,
Java_Event_pOnAppResume name 'Java_' + cAppJ + '_pOnAppResume' ,
Java_Event_pOnAppActive name 'Java_' + cAppJ + '_pOnAppActive' ,
Java_Event_pOnAppStop name 'Java_' + cAppJ + '_pOnAppStop' ,
Java_Event_pOnAppBackPressed name 'Java_' + cAppJ + '_pOnAppBackPressed' ,
Java_Event_pOnAppRotate name 'Java_' + cAppJ + '_pOnAppRotate' ,
Java_Event_pOnAppConfigurationChanged name 'Java_' + cAppJ + '_pOnAppConfigurationChanged',
Java_Event_pOnAppActivityResult name 'Java_' + cAppJ + '_pOnAppActivityResult' ,
// Control Event
Java_Event_pOnChange name 'Java_' + cAppJ + '_pOnChange',
Java_Event_pOnClick name 'Java_' + cAppJ + '_pOnClick' ,
Java_Event_pOnDraw name 'Java_' + cAppJ + '_pOnDraw' ,
Java_Event_pOnEnter name 'Java_' + cAppJ + '_pOnEnter' ,
Java_Event_pOnTimer name 'Java_' + cAppJ + '_pOnTimer' ,
Java_Event_pOnTouch name 'Java_' + cAppJ + '_pOnTouch' ,
// Form Event
Java_Event_pOnClose name 'Java_' + cAppJ + '_pOnClose' ,
// State Event
Java_Event_pOnGLViewState name 'Java_' + cAppJ + '_pOnGLViewState' ,
Java_Event_pOnWebViewState name 'Java_' + cAppJ + '_pOnWebViewState' ,
Java_Event_pOnAsyncTaskState name 'Java_' + cAppJ + '_pOnAsyncTaskState',
Java_Event_pOnHttpState name 'Java_' + cAppJ + '_pOnHttpState' ,
// Camera Preview Event
Java_Event_pOnCameraFrame name 'Java_' + cAppJ + '_pOnCameraFrame';
//-----------------------------------------------------------------------------
// Application StartUp
//-----------------------------------------------------------------------------
Procedure OnAppCreate;
begin
App.Form := jForm_Main.Create(nil);
App.Form.Show;
end;
//------------------------------------------------------------------------------
// JNI_OnLoad, Unload
//------------------------------------------------------------------------------
Function JNI_OnLoad(vm:PJavaVM;reserved:pointer):jint; cdecl;
begin
jLog('JNI_OnLoad');
Result := JNI_VERSION_1_6;
//
jAppInit(App, // App Object Create & Init
Vm, // Java VM
cAppName, // App Name
Screen_Style_Normal, // Screen Style [Normal,Full]
Screen_Orientation_Portrait, // Screen Orientation [Portrait,Landscape]
// Screen_Orientation_SENSOR,
cLogModeOn, // Log Mode (Default : On)
OnAppCreate); // App Create Event
end;
Procedure JNI_OnUnload(vm:PJavaVM;reserved:pointer); cdecl;
begin
jLog('JNI_OnUnload');
//
end;
end.

View File

@@ -0,0 +1,93 @@
//------------------------------------------------------------------------------
//
// Free Pascal for Android
//
//------------------------------------------------------------------------------
library main;
{$mode delphi}
{$packrecords c}
uses
And_jni,
And_Controls_Types,And_Controls,
Form_Main;
//------------------------------------------------------------------------------
// Application Define
//
// XRef.
// App.java : package com.kredix;
// Controls.java : package com.kredix;
//
// AndroidManifest.xml : package = "com.kredix"
// uninstall.bat : adb.exe uninstall com.kredix
//------------------------------------------------------------------------------
Const
cAppName = 'com.kredix'; // ! Use your app name
cAppJ = 'com_kredix_Controls'; // ! Pascal Lib. Export name
//-----------------------------------------------------------------------------
// Java Interface
//-----------------------------------------------------------------------------
exports
// JNI
JNI_OnLoad name 'JNI_OnLoad',
JNI_OnUnload name 'JNI_OnUnload',
// App Event
Java_Event_pOnAppCreate name 'Java_' + cAppJ + '_pOnAppCreate' ,
Java_Event_pOnAppScreenStyle name 'Java_' + cAppJ + '_pOnAppScreenStyle' ,
Java_Event_pOnAppScreenOrientation name 'Java_' + cAppJ + '_pOnAppScreenOrientation' ,
Java_Event_pOnAppNewIntent name 'Java_' + cAppJ + '_pOnAppNewIntent' ,
Java_Event_pOnAppDestroy name 'Java_' + cAppJ + '_pOnAppDestroy' ,
Java_Event_pOnAppPause name 'Java_' + cAppJ + '_pOnAppPause' ,
Java_Event_pOnAppRestart name 'Java_' + cAppJ + '_pOnAppRestart' ,
Java_Event_pOnAppResume name 'Java_' + cAppJ + '_pOnAppResume' ,
Java_Event_pOnAppActive name 'Java_' + cAppJ + '_pOnAppActive' ,
Java_Event_pOnAppStop name 'Java_' + cAppJ + '_pOnAppStop' ,
Java_Event_pOnAppBackPressed name 'Java_' + cAppJ + '_pOnAppBackPressed' ,
Java_Event_pOnAppRotate name 'Java_' + cAppJ + '_pOnAppRotate' ,
Java_Event_pOnAppConfigurationChanged name 'Java_' + cAppJ + '_pOnAppConfigurationChanged',
Java_Event_pOnAppActivityResult name 'Java_' + cAppJ + '_pOnAppActivityResult' ,
// Control Event
Java_Event_pOnChange name 'Java_' + cAppJ + '_pOnChange',
Java_Event_pOnClick name 'Java_' + cAppJ + '_pOnClick' ,
Java_Event_pOnDraw name 'Java_' + cAppJ + '_pOnDraw' ,
Java_Event_pOnEnter name 'Java_' + cAppJ + '_pOnEnter' ,
Java_Event_pOnTimer name 'Java_' + cAppJ + '_pOnTimer' ,
Java_Event_pOnTouch name 'Java_' + cAppJ + '_pOnTouch' ,
// Form Event
Java_Event_pOnClose name 'Java_' + cAppJ + '_pOnClose' ,
// State Event
Java_Event_pOnGLViewState name 'Java_' + cAppJ + '_pOnGLViewState' ,
Java_Event_pOnWebViewState name 'Java_' + cAppJ + '_pOnWebViewState' ,
Java_Event_pOnAsyncTaskState name 'Java_' + cAppJ + '_pOnAsyncTaskState',
Java_Event_pOnHttpState name 'Java_' + cAppJ + '_pOnHttpState' ,
// Camera Preview Event
Java_Event_pOnCameraFrame name 'Java_' + cAppJ + '_pOnCameraFrame';
//-----------------------------------------------------------------------------
// Application StartUp
//-----------------------------------------------------------------------------
Procedure OnAppCreate;
begin
App.Form := jForm_Main.Create(nil);
App.Form.Show;
end;
begin
Dbg('Lib Start');
jAppInit(App, // App Object Create & Init
cAppName, // App Name
Screen_Style_Normal, // Screen Style [Normal,Full]
Screen_Orientation_Portrait, // Screen Orientation [Portrait,Landscape]
cLogModeOn, // Log Mode (Default : On)
OnAppCreate); // App Create Event
end.