|
|
Line 1: |
Line 1: |
− | ==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%2C_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%2C_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.
| |