Sign in Join
Wiki copytemporary

Android Programming/ru

한국어 · English · Русский · 中文(中国) · 日本語

Смотрите также Custom Drawn Interface/Android

Общие знания о программировании под Android могут очень помочь в разработке интерфейса Lazarus для Android.

Как...

Построить NDK (Android Native Development Kit) OpenGL

Просто выполните следующие действия:

Шаг 1 - Скачайте и установите Android NDK, Android SDK и Ant. Больше информации тут: Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones/ru

Шаг 2 - Установите pre-compiled FPC cross-compiler. Инструкции здесь: Android_Interface#Using_the_pre-compiled_compiler

Шаг 3 - Загрузите последнюю версию lazarus-ccr sourceforge code:

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

или если вы думаете что это слишком много, вы можете скачать только каталог lazarus-ccr/bindings/android-ndk

Шаг 4 - Постройте Pascal Library

Откройте проект lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi

Откройте пункт меню Project->Project Options->Paths и где написано "Libraries -Fl" вы должны увидеть следующее значение:

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

Измените его на правильный путь, который указывает на библиотеку NDK с минимальной необходимой версией Android API Level

Теперь постройте проект используя Lazarus.

Шаг 5 - Настройка среды сборки

Откройте файл opengltest/local.properties и в строке:

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

Измените этот путь на местоположение SDK

Шаг 6 - Постройка APK

Откройте консоль и введите следущие команды:

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

Файл APK будет помещен в opengltest/android/bin/

Шаг 7 - Установка APK

Если на этом шаге вы получите сообщение об ошибке прав доступа, читайте: Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Recognition_of_devices_under_Linux

Команда, чтобы установить APK на телефоне:

text
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

Если вы получили сообщение об ошибке, что APK уже установлен, вы можете установить его с помощью команды:

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

После можно запустить adb logcat чтобы увидеть журнал, в то время как вы запустите его в телефон через недавно добавленную иконку:

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

Получить параметры экрана

Вначале нужно заполнить TDisplayMetrics:

pascal
uses androidutil;

var
  MyDisplayMetrics: TDisplayMetrics;
  Str: string;
  //
  lHeight, lWidth: Integer;
  xdpi, ydpi, lScreenSize: Single;
begin
  // ..
  // Objects

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

После вы можете получить информацию о дисплее из TDisplayMetrics:

pascal
  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();

Обратите внимание, что многие устройства врут о xdpi и ydpi, поэтому не стоит доверять lScreenSize, рассчитанному выше. Смартфоны могут сообщить о размере экрана 10 дюймов, хотя их настоящий размер может быть около 4.

Подробная информация об устройствах с Android

Поскольку существует так много Android устройств, эта информация может быть полезно для отслеживания информации о них. Смотрите также в википедии Сравнение устройств с Android и подробную информацию о процессорах в Android#System_Requirements.

Смартфоны

Производитель Модель Android API Name (Build.Model) Процессор Версия Android Мультитач Комментарий
HTC Wildfire HTC Wildfire armv6 2.1=>2.2 Да||-
Sony Erricson Xperia X10 X10i armv7 1.6=>2.1 Нет||-

Планшеты

Производитель Модель Android API Name (Build.Model) Процессор Версия Android Мультитач Комментарий
Toshiba Folio 100 Tablet TOSHIBA_FOLIO_AND_A armv7 2.2 Yes||-

Списки устройств сгруппированные по процессорам (ARMv6 vs ARMv7)

Список устройств на ARMv7:

Список устройств на ARMv6:

Воспроизведение Аудио и Видео на телефонах

Каждый телефон поставляется со своим набором кодеков, поэтому на разных телефонах родной Media Player может воспроизводить разные форматы. Ниже приведена таблица, показывающая, какие форматы воспроизводит Media Player на каждом телефоне:

Телефон Android webm - VP8 m4v - H.264 ogv - Theora mp4 - H.264 mov - H.264 avi - RLE mpg - MPEG-1 wmv - WM9 3gp - MPEG-4
Emulator 1.6 x x x x x x x x OK
Emulator 2.1 x x x x x x x x OK
Nexus One 2.2 x OK x OK x x x x OK
HTC Desire 1.6 x OK x OK x x x OK OK
Toshiba Folio 100 2.2 x OK x OK x x x OK OK
Xperia X10 2.1 x OK x x x x x OK OK
Xperia X8 2.2 x OK x x x x x x OK
HTC Wildfire 2.1 x OK x x x x x x OK
HTC Desire HD 2.2 x OK x OK x x x x OK
Galaxy Tab 2.2 x OK x x x x x x OK
myPhone A210 1.6 x OK x x x x x x OK
Motorola Milestone 2.1 x OK x x x x x OK ?
Milestone 2 2.2 x OK x x x x x только звук OK

Файловая система Android

Рекомендуется использовать getApplicationContext().getFilesDir() чтобы получить путь к каталогу для хранения данных приложения. В HTC Wildfire эта функция возвращает /data/data/<package name>

Библиотеки приложения находятся в /data/data/<package>/lib

В папке /data/data/<package name> есть разрешение на чтение и запись, можно создавать новые файлы и даже запускать их.

Создание нового Java Приложения для Android

Эта информация может быть полезна для реализации LCL-CustomDrawn-Android

Общие инструкции здесь: Managing Projects from the Command Line

Показать / Скрыть виртуальную клавиатуру

Чтобы показать:

java
 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

и чтобы спрятать клавиатуру:

java
 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.hideSoftInputFromWindow(singleedittext.getWindowToken(),0);

Ссылки


From the Free Pascal wiki, page "Android Programming/ru", as it stood on 2020-02-09 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.