Sign in Join
Wiki copytemporary

Android Programming/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Android Programming/ru

OldNewLine
1+Смотрите также [[Custom Drawn Interface/Android]]
2+
3+Общие знания о программировании под Android могут очень помочь в разработке интерфейса Lazarus для Android.
4+
5+## Как...
6+
7+### Построить NDK (Android Native Development Kit) OpenGL
8+
9+Просто выполните следующие действия:
10+
11+**Шаг 1** - Скачайте и установите Android NDK, Android SDK и Ant. Больше информации тут: [[Android Interface/Using the Android SDK, Emulator and Phones/ru|Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones/ru]]
12+
13+**Шаг 2** - Установите pre-compiled FPC cross-compiler. Инструкции здесь: [[Android Interface|Android_Interface#Using_the_pre-compiled_compiler]]
14+
15+**Шаг 3** - Загрузите последнюю версию lazarus-ccr sourceforge code:
16+
17+`svn co `[`https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr`](https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr)` lazarus-ccr`
18+
19+или если вы думаете что это слишком много, вы можете скачать только каталог lazarus-ccr/bindings/android-ndk
20+
21+**Шаг 4** - Постройте Pascal Library
22+
23+Откройте проект lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi
24+
25+Откройте пункт меню Project-\>Project Options-\>Paths и где написано "Libraries -Fl" вы должны увидеть следующее значение:
26+
27+`/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib`
28+
29+Измените его на правильный путь, который указывает на библиотеку NDK с минимальной необходимой версией Android API Level
30+
31+Теперь постройте проект используя Lazarus.
32+
33+**Шаг 5** - Настройка среды сборки
34+
35+Откройте файл opengltest/local.properties и в строке:
36+
37+`sdk.dir=/home/felipe/Programas/android-sdk-linux`
38+
39+Измените этот путь на местоположение SDK
40+
41+**Шаг 6** - Постройка APK
42+
43+Откройте консоль и введите следущие команды:
44+
45+`cd lazarus-ccr/bindings/ndk/examples/opengltest/android`\
46+`ant debug`
47+
48+Файл APK будет помещен в opengltest/android/bin/
49+
50+**Шаг 7** - Установка APK
51+
52+Если на этом шаге вы получите сообщение об ошибке прав доступа, читайте: [[Android Interface/Using the Android SDK, Emulator and Phones|Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Recognition_of_devices_under_Linux]]
53+
54+Команда, чтобы установить APK на телефоне:
55+
56+`cd opengltest/android`\
57+`~/Programas/android-sdk-linux/platform-tools/adb install bin/OpenGLNDKTest-debug.apk `\
58+`2395 KB/s (107299 bytes in 0.043s)`\
59+`       pkg: /data/local/tmp/OpenGLNDKTest-debug.apk`\
60+`Success`
61+
62+Если вы получили сообщение об ошибке, что APK уже установлен, вы можете установить его с помощью команды:
63+
64+`~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.opengltest`
65+
66+После можно запустить *adb logcat* чтобы увидеть журнал, в то время как вы запустите его в телефон через недавно добавленную иконку:
67+
68+`~/Programas/android-sdk-linux/platform-tools/adb logcat`
69+
70+### Получить параметры экрана
71+
72+Вначале нужно заполнить TDisplayMetrics:
73+
74+``` pascal
75+uses androidutil;
76+
77+var
78+ MyDisplayMetrics: TDisplayMetrics;
79+ Str: string;
80+ //
81+ lHeight, lWidth: Integer;
82+ xdpi, ydpi, lScreenSize: Single;
83+begin
84+ // ..
85+ // Objects
86+
87+ MyDisplayMetrics := TDisplayMetrics.Create;
88+ Activity.getWindowManager().getDefaultDisplay().getMetrics(MyDisplayMetrics);
89+```
90+
91+После вы можете получить информацию о дисплее из TDisplayMetrics:
92+
93+``` pascal
94+ lHeight := MyDisplayMetrics.heightPixels();
95+ lWidth := MyDisplayMetrics.widthPixels();
96+ xdpi := MyDisplayMetrics.xdpi();
97+ ydpi := MyDisplayMetrics.ydpi();
98+ lScreenSize := sqrt(sqr(lHeight / ydpi) + sqr(lWidth / xdpi));
99+ ldensity := MyDisplayMetrics.density();
100+ ldensityDpi := MyDisplayMetrics.densityDpi();
101+ scaledDensity := MyDisplayMetrics.scaledDensity();
102+```
103+
104+Обратите внимание, что многие устройства врут о xdpi и ydpi, поэтому не стоит доверять lScreenSize, рассчитанному выше. Смартфоны могут сообщить о размере экрана 10 дюймов, хотя их настоящий размер может быть около 4.
105+
106+## Подробная информация об устройствах с Android
107+
108+Поскольку существует так много Android устройств, эта информация может быть полезно для отслеживания информации о них. Смотрите также в википедии [Сравнение устройств с Android](http://ru.wikipedia.org/wiki/Сравнение_устройств_с_Android) и подробную информацию о процессорах в [Android#System_Requirements](https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements).
109+
110+### Смартфоны
111+
112+| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
113+|----|----|----|----|----|----|----|
114+| HTC | Wildfire | HTC Wildfire | armv6 | 2.1=\>2.2 | Да\|\|- | |
115+| Sony Erricson | Xperia X10 | X10i | armv7 | 1.6=\>2.1 | Нет\|\|- | |
116+
117+### Планшеты
118+
119+| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
120+|----|----|----|----|----|----|----|
121+| Toshiba | Folio 100 Tablet | TOSHIBA_FOLIO_AND_A | armv7 | 2.2 | Yes\|\|- | |
122+
123+### Списки устройств сгруппированные по процессорам (ARMv6 vs ARMv7)
124+
125+**Список устройств на ARMv7:**
126+
127+- Advent Vega (P10AN01)
128+- Dell Streak, Streak 7
129+- HTC Desire
130+- HTC Desire Z (T-Mobile G2)
131+- HTC Desire HD
132+- HTC Droid Incredible
133+- HTC EVO 4G, EVO Shift 4G
134+- HTC Glacier (T-Mobile myTouch 4G)
135+- HTC Inspire 4G
136+- HTC Nexus One
137+- HTC Thunderbolt 4G
138+- Huawei Ideos S7
139+- LG Optimus Z
140+- Motorola Atrix 4G
141+- Motorola Bravo
142+- Motorola Cliq 2 - untested
143+- Motorola Defy
144+- Motorola Droid 2, Droid 2 Global
145+- Motorola Droid Pro (Motorola PRO)
146+- Motorola Droid X
147+- Motorola Xoom
148+- POV Mobii Tegra Tablet
149+- Samsung Continuum (i400)
150+- Samsung Galaxy S (i9000, Captivate, Fascinate, Vibrant, Epic 4G)
151+- Samsung Galaxy Tab
152+- Sharp IS03
153+- Sony Ericsson Xperia X10
154+- Toshiba AS100
155+- Viewsonic gTablet
156+- Acer Liquid E
157+- Acer Liquid (Liquid A1)
158+- Archos 101 Internet Tablet
159+- Motorola Charm
160+- Motorola Droid (Milestone)
161+- Samsung Galaxy S 4G
162+- Samsung Nexus S
163+
164+**Список устройств на ARMv6:**
165+
166+- Android SDK emulator
167+- Asus Garmin nuvifone A50 (T-Mobile Garminfone)
168+- Augen GENTouch 78 Tablet
169+- Coby Kyros Internet Tablet (MID7015)
170+- Geeksphone One, Geeksphone Zero
171+- HTC Aria
172+- HTC ChaCha
173+- HTC Dream (T-Mobile G1, Android Dev Phone 1)
174+- HTC Droid Eris
175+- HTC Espresso (T-Mobile myTouch 3G Slide)
176+- HTC Hero (T-Mobile G2 Touch)
177+- HTC Legend
178+- HTC Magic (T-Mobile myTouch 3G, T-Mobile G1 Touch)
179+- HTC Salsa
180+- HTC Tattoo
181+- HTC Wildfire
182+- Huawei Ascend
183+- Huawei Ideos U8150-B (T-Mobile Comet)
184+- Huawei U8110 (T-Mobile Pulse Mini)
185+- Huawei U8230
186+- LG Ally (Apex) (LG VS740)
187+- LG GW620 (Eve, InTouch Max, LinkMe)
188+- LG Optimus, Optimus M, Optimus T, Optimus S, Optimus V
189+- LG Vortex
190+- LG P500
191+- MAG iMiTO iM7
192+- vMAG iMiTO iM7S
193+- Motorola Backflip
194+- Motorola Citrus
195+- Motorola Cliq (MB200)
196+- Motorola Dext
197+- Motorola Devour
198+- Motorola i1
199+- Motorola Spice XT300
200+- Motorola Quench XT5 XT502
201+- Pandigital Novel
202+- Samsung GT-S5570 Galaxy Mini
203+- Samsung i5500 Galaxy 5 (Corby)
204+- Samsung i5700 Galaxy Portal (Spica)
205+- Samsung i5800 Galaxy 3
206+- Samsung i7500 Galaxy
207+- Samsung Intercept
208+- Samsung M900 Moment
209+- Samsung S5830 Galaxy Ace
210+- Samsung Transform
211+- Sanyo ZIO M6000
212+- Sony Ericsson Xperia X8
213+- Sony Ericsson Xperia X10 Mini
214+- Sony Ericsson Xperia X10 Mini Pro
215+- Superpad 10.2" Tablet PC
216+- Viewsonic ViewPad 7 Tablet
217+- Velocity Micro T103 Cruz tablet
218+- Vodafone 845
219+- ZTE Blade
220+
221+### Воспроизведение Аудио и Видео на телефонах
222+
223+Каждый телефон поставляется со своим набором кодеков, поэтому на разных телефонах родной Media Player может воспроизводить разные форматы. Ниже приведена таблица, показывающая, какие форматы воспроизводит Media Player на каждом телефоне:
224+
225+| **Телефон** | **Android** | **webm - VP8** | **m4v - H.264** | **ogv - Theora** | **mp4 - H.264** | **mov - H.264** | **avi - RLE** | **mpg - MPEG-1** | **wmv - WM9** | **3gp - MPEG-4** |
226+|----|----|----|----|----|----|----|----|----|----|----|
227+| Emulator | 1.6 | x | x | x | x | x | x | x | x | OK |
228+| Emulator | 2.1 | x | x | x | x | x | x | x | x | OK |
229+| Nexus One | 2.2 | x | OK | x | OK | x | x | x | x | OK |
230+| HTC Desire | 1.6 | x | OK | x | OK | x | x | x | OK | OK |
231+| Toshiba Folio 100 | 2.2 | x | OK | x | OK | x | x | x | OK | OK |
232+| Xperia X10 | 2.1 | x | OK | x | x | x | x | x | OK | OK |
233+| Xperia X8 | 2.2 | x | OK | x | x | x | x | x | x | OK |
234+| HTC Wildfire | 2.1 | x | OK | x | x | x | x | x | x | OK |
235+| HTC Desire HD | 2.2 | x | OK | x | OK | x | x | x | x | OK |
236+| Galaxy Tab | 2.2 | x | OK | x | x | x | x | x | x | OK |
237+| myPhone A210 | 1.6 | x | OK | x | x | x | x | x | x | OK |
238+| Motorola Milestone | 2.1 | x | OK | x | x | x | x | x | OK | ? |
239+| Milestone 2 | 2.2 | x | OK | x | x | x | x | x | только звук | OK |
240+
241+## Файловая система Android
242+
243+Рекомендуется использовать getApplicationContext().getFilesDir() чтобы получить путь к каталогу для хранения данных приложения. В HTC Wildfire эта функция возвращает /data/data/\<package name\>
244+
245+Библиотеки приложения находятся в /data/data/\<package\>/lib
246+
247+В папке /data/data/\<package name\> есть разрешение на чтение и запись, можно создавать новые файлы и даже запускать их.
248+
249+## Создание нового Java Приложения для Android
250+
251+Эта информация может быть полезна для реализации LCL-CustomDrawn-Android
252+
253+Общие инструкции здесь: [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
254+
255+### Показать / Скрыть виртуальную клавиатуру
256+
257+Чтобы показать:
258+
259+``` java
260+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
261+ imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
262+```
263+
264+и чтобы спрятать клавиатуру:
265+
266+``` java
267+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
268+ imm.hideSoftInputFromWindow(singleedittext.getWindowToken(),0);
269+```
270+
271+## Ссылки
272+
273+- [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
274+- [Show or Hide soft keyboard on opening a dialog or activity in android](http://android-codes-examples.blogspot.com/2011/11/show-or-hide-soft-keyboard-on-opening.html)
275+
276+---
277+*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](/wiki-contact).*
278+Category: Android/ru
279+Category: Custom Drawn/ru
280+Category: Russian

Back to history