Difference between revisions of "Android Interface/Native Android GUI"
Sekelsenmat (talk | contribs) (New page: Go back to Android Interface) |
Sekelsenmat (talk | contribs) |
||
Line 1: | Line 1: | ||
Go back to [[Android Interface]] | Go back to [[Android Interface]] | ||
+ | |||
+ | ==Android API Hello World in Pascal== | ||
+ | |||
+ | Here is an example Pascal application written for Android. | ||
+ | |||
+ | <delphi> | ||
+ | program pascalnotes4android; | ||
+ | |||
+ | {$mode objfpc}{$H+} | ||
+ | |||
+ | uses | ||
+ | Classes, androidpipescomm, androidui, javalang; | ||
+ | |||
+ | {$R *.res} | ||
+ | |||
+ | var | ||
+ | layout: TAbsoluteLayout; | ||
+ | params: TAbsoluteLayout_LayoutParams; | ||
+ | tv: TTextView; | ||
+ | et: TTextView; | ||
+ | btn: TButton; | ||
+ | begin | ||
+ | // Here add any initialization. | ||
+ | // Any initialization code will be run inside Activity.onCreate, | ||
+ | // so keep it as short as possible! | ||
+ | // It should mostly contain GUI initialization | ||
+ | // User interface | ||
+ | |||
+ | // Prepares the UI of the program | ||
+ | layout := TAbsoluteLayout.Create; | ||
+ | |||
+ | tv := TTextView.Create; | ||
+ | tv.setText('The first Pascal Android application =)'); | ||
+ | params := TAbsoluteLayout_LayoutParams.Create(320, 300, 0, 120); | ||
+ | layout.addView(tv, params); | ||
+ | params.Free; | ||
+ | |||
+ | et := TEditText.Create; | ||
+ | et.setText('edit me please'); | ||
+ | params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 0); | ||
+ | layout.addView(et, params); | ||
+ | params.Free; | ||
+ | |||
+ | btn := TButton.Create; | ||
+ | btn.setText('Go!'); | ||
+ | { btn.setOnClickListener(buttonClickCallback);} | ||
+ | params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 60); | ||
+ | layout.addView(btn, params); | ||
+ | params.Free; | ||
+ | |||
+ | Activity.setContentView(layout); | ||
+ | |||
+ | // Now tell Java that the initialization has finished | ||
+ | myAndroidPipesComm := TAndroidPipesComm.Create; | ||
+ | myAndroidPipesComm.InitializationFinished(); | ||
+ | // Here you can add any other initialization, | ||
+ | // specially non-GUI code | ||
+ | |||
+ | // Now we block our execution waiting for callbacks from Java | ||
+ | myAndroidPipesComm.MessageLoop(); | ||
+ | end. | ||
+ | </delphi> | ||
+ | |||
+ | [[Image:Simple Android app.png]] | ||
+ | |||
+ | ===Compiling the example project in Linux=== | ||
+ | |||
+ | 1> Get a working arm-linux cross-compiler which generates ARMv5 eabi with softfloat (as many phones like HTC Wildfire have no FPU) | ||
+ | |||
+ | To do this one can download an unofficial build from here: | ||
+ | |||
+ | http://members.yline.com/~tom_at_work/fpc-2.4.2.UNOFFICIAL.arm-linux.tar . Compiled for ARMv5 eabi with softfloat. | ||
+ | |||
+ | Or build your own. There are instructions here: [[Setup_Cross_Compile_For_ARM]] | ||
+ | |||
+ | 2> Install the Android SDK. Instructions here: [[Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Using_the_Android_SDK]] | ||
+ | |||
+ | 3> Install ant, for example in Mandriva Linux: | ||
+ | |||
+ | urpmi ant | ||
+ | |||
+ | 4> Open the project PascalNotes4Android/pascalsrc/pascalnotes4android.lpi in Lazarus and build it's build mode Android | ||
+ | |||
+ | 5> Copy the generate executable | ||
+ | |||
+ | cp pascalsrc/pascalnotes4android libs/armeabi/libpascalnotes4android.so | ||
+ | |||
+ | if the directory libs/armeabi doesn't exist, create it | ||
+ | |||
+ | 6> Build the APK file in debug mode | ||
+ | |||
+ | ant debug | ||
+ | |||
+ | 7> Connect your phone and make sure you can connect to it via ADB. More info here: [[Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Recognition_of_devices_under_Linux]] | ||
+ | |||
+ | 8> Install the APK file in your phone via ADB or whatever other method you prefer: | ||
+ | |||
+ | ../android-sdk-linux_x86/tools/adb install bin/PascalNotes4Android-debug.apk | ||
+ | |||
+ | If the package is already installed you need need to do this instead: | ||
+ | |||
+ | ../android-sdk-linux_x86/tools/adb uninstall com.pascalnotes | ||
+ | ../android-sdk-linux_x86/tools/adb install bin/PascalNotes4Android-debug.apk |
Revision as of 14:40, 21 December 2010
Go back to Android Interface
Android API Hello World in Pascal
Here is an example Pascal application written for Android.
<delphi> program pascalnotes4android;
{$mode objfpc}{$H+}
uses
Classes, androidpipescomm, androidui, javalang;
{$R *.res}
var
layout: TAbsoluteLayout; params: TAbsoluteLayout_LayoutParams; tv: TTextView; et: TTextView; btn: TButton;
begin
// Here add any initialization. // Any initialization code will be run inside Activity.onCreate, // so keep it as short as possible! // It should mostly contain GUI initialization // User interface
// Prepares the UI of the program layout := TAbsoluteLayout.Create;
tv := TTextView.Create; tv.setText('The first Pascal Android application =)'); params := TAbsoluteLayout_LayoutParams.Create(320, 300, 0, 120); layout.addView(tv, params); params.Free;
et := TEditText.Create; et.setText('edit me please'); params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 0); layout.addView(et, params); params.Free;
btn := TButton.Create; btn.setText('Go!');
{ btn.setOnClickListener(buttonClickCallback);}
params := TAbsoluteLayout_LayoutParams.Create(320, 50, 0, 60); layout.addView(btn, params); params.Free;
Activity.setContentView(layout);
// Now tell Java that the initialization has finished myAndroidPipesComm := TAndroidPipesComm.Create; myAndroidPipesComm.InitializationFinished(); // Here you can add any other initialization, // specially non-GUI code
// Now we block our execution waiting for callbacks from Java myAndroidPipesComm.MessageLoop();
end. </delphi>
Compiling the example project in Linux
1> Get a working arm-linux cross-compiler which generates ARMv5 eabi with softfloat (as many phones like HTC Wildfire have no FPU)
To do this one can download an unofficial build from here:
http://members.yline.com/~tom_at_work/fpc-2.4.2.UNOFFICIAL.arm-linux.tar . Compiled for ARMv5 eabi with softfloat.
Or build your own. There are instructions here: Setup_Cross_Compile_For_ARM
2> Install the Android SDK. Instructions here: Android_Interface/Using_the_Android_SDK,_Emulator_and_Phones#Using_the_Android_SDK
3> Install ant, for example in Mandriva Linux:
urpmi ant
4> Open the project PascalNotes4Android/pascalsrc/pascalnotes4android.lpi in Lazarus and build it's build mode Android
5> Copy the generate executable
cp pascalsrc/pascalnotes4android libs/armeabi/libpascalnotes4android.so
if the directory libs/armeabi doesn't exist, create it
6> Build the APK file in debug mode
ant debug
7> Connect your phone and make sure you can connect to it via ADB. More info here: Android_Interface/Using_the_Android_SDK,_Emulator_and_Phones#Recognition_of_devices_under_Linux
8> Install the APK file in your phone via ADB or whatever other method you prefer:
../android-sdk-linux_x86/tools/adb install bin/PascalNotes4Android-debug.apk
If the package is already installed you need need to do this instead:
../android-sdk-linux_x86/tools/adb uninstall com.pascalnotes ../android-sdk-linux_x86/tools/adb install bin/PascalNotes4Android-debug.apk