Android Programming/ru

From Free Pascal wiki
Revision as of 07:32, 6 February 2012 by Kverde (talk | contribs) (New page: ==How to...== ===Build the NDK OpenGL example=== Just follow these steps: '''Step 1''' - Download and install the Android NDK, Android SDK and Ant. More information here: [[Android_Inte...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

How to...

Build the NDK OpenGL example

Just follow these steps:

Step 1 - Download and install the Android NDK, Android SDK and Ant. More information here: Android_Interface/Using_the_Android_SDK,_Emulator_and_Phones

Step 2 - Install the pre-compiled FPC cross-compiler. Instructions here: Android_Interface#Using_the_pre-compiled_compiler

Step 3 - Download the latest lazarus-ccr sourceforge code:

svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr lazarus-ccr

or if you think it is too big you can download just the folder lazarus-ccr/bindings/android-ndk

Step 4 - Building the Pascal Library

Open the project lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi

Go to Project->Project Options->Paths and where is written "Libraries -Fl" you should see this value:

/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib

Change it to the correct path in your system which points to the NDK and to the library folder for your minimal required Android API Level

Now build the project using Lazarus.

Step 5 - Configuring the build environment

Open the file opengltest/local.properties and in this line:

sdk.dir=/home/felipe/Programas/android-sdk-linux

Change this to point to your SDK location

Step 6 - Buildings the APK

Open a terminal and type these commands:

cd lazarus-ccr/bindings/ndk/examples/opengltest/android ant debug

The APK file will be placed in opengltest/android/bin/

Step 7 - Install the APK

In this step if you get error messages about permissions read: Android_Interface/Using_the_Android_SDK,_Emulator_and_Phones#Recognition_of_devices_under_Linux

The command to install our APK in the phone is:

cd opengltest/android
~/Programas/android-sdk-linux/platform-tools/adb install bin/OpenGLNDKTest-debug.apk 
2395 KB/s (107299 bytes in 0.043s)
       pkg: /data/local/tmp/OpenGLNDKTest-debug.apk
Success

If you get an error message that it is already installed you can install with this command:

~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.opengltest

And then you can run adb logcat to see what the log says while you start it in the phone via its newly added icon:

~/Programas/android-sdk-linux/platform-tools/adb logcat

Read the screen metrics

First fill a TDisplayMetrics with the correct info:

<delphi> uses androidutil;

var

 MyDisplayMetrics: TDisplayMetrics;
 Str: string;
 //
 lHeight, lWidth: Integer;
 xdpi, ydpi, lScreenSize: Single;

begin

 // ..
 // Objects
 MyDisplayMetrics := TDisplayMetrics.Create;
 Activity.getWindowManager().getDefaultDisplay().getMetrics(MyDisplayMetrics);

</delphi>

And then you can read it from the TDisplayMetrics:

<delphi>

 lHeight := MyDisplayMetrics.heightPixels();
 lWidth := MyDisplayMetrics.widthPixels();
 xdpi := MyDisplayMetrics.xdpi();
 ydpi := MyDisplayMetrics.ydpi();
 lScreenSize := sqrt(sqr(lHeight / ydpi) + sqr(lWidth / xdpi));
 ldensity := MyDisplayMetrics.density();
 ldensityDpi := MyDisplayMetrics.densityDpi();
 scaledDensity := MyDisplayMetrics.scaledDensity();

</delphi>

Note that lots of devices lie about the xdpi and ydpi, so don't trust the lScreenSize calculated above. Smartphones might report even 10 inches of screen size, while the correct is around 4.