Sign in Join
Wiki copytemporary

Android Programming/ru: what changed

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

OldNewLine
11Смотрите также [[Custom Drawn Interface/Android]]
22
33Общие знания о программировании под Android могут очень помочь в разработке интерфейса Lazarus для Android.
44
55## Как...
66
77### Построить NDK (Android Native Development Kit) OpenGL
88
99Просто выполните следующие действия:
1010
1111**Шаг 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]]
1212
1313**Шаг 2** - Установите pre-compiled FPC cross-compiler. Инструкции здесь: [[Android Interface|Android_Interface#Using_the_pre-compiled_compiler]]
1414
1515**Шаг 3** - Загрузите последнюю версию lazarus-ccr sourceforge code:
1616
17-`svn co `[`https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr`](https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr)` lazarus-ccr`
17+```
18+svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr lazarus-ccr
19+```
1820
1921или если вы думаете что это слишком много, вы можете скачать только каталог lazarus-ccr/bindings/android-ndk
2022
2123**Шаг 4** - Постройте Pascal Library
2224
2325Откройте проект lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi
2426
2527Откройте пункт меню Project-\>Project Options-\>Paths и где написано "Libraries -Fl" вы должны увидеть следующее значение:
2628
27-`/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib`
29+```
30+/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib
31+```
2832
2933Измените его на правильный путь, который указывает на библиотеку NDK с минимальной необходимой версией Android API Level
3034
3135Теперь постройте проект используя Lazarus.
3236
3337**Шаг 5** - Настройка среды сборки
3438
3539Откройте файл opengltest/local.properties и в строке:
3640
37-`sdk.dir=/home/felipe/Programas/android-sdk-linux`
41+```
42+sdk.dir=/home/felipe/Programas/android-sdk-linux
43+```
3844
3945Измените этот путь на местоположение SDK
4046
4147**Шаг 6** - Постройка APK
4248
4349Откройте консоль и введите следущие команды:
4450
45-`cd lazarus-ccr/bindings/ndk/examples/opengltest/android`\
46-`ant debug`
51+```
52+cd lazarus-ccr/bindings/ndk/examples/opengltest/android
53+ant debug
54+```
4755
4856Файл APK будет помещен в opengltest/android/bin/
4957
5058**Шаг 7** - Установка APK
5159
5260Если на этом шаге вы получите сообщение об ошибке прав доступа, читайте: [[Android Interface/Using the Android SDK, Emulator and Phones|Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Recognition_of_devices_under_Linux]]
5361
5462Команда, чтобы установить APK на телефоне:
5563
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`
64+```
65+cd opengltest/android
66+~/Programas/android-sdk-linux/platform-tools/adb install bin/OpenGLNDKTest-debug.apk
67+2395 KB/s (107299 bytes in 0.043s)
68+ pkg: /data/local/tmp/OpenGLNDKTest-debug.apk
69+Success
70+```
6171
6272Если вы получили сообщение об ошибке, что APK уже установлен, вы можете установить его с помощью команды:
6373
64-`~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.opengltest`
74+```
75+~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.opengltest
76+```
6577
6678После можно запустить *adb logcat* чтобы увидеть журнал, в то время как вы запустите его в телефон через недавно добавленную иконку:
6779
68-`~/Programas/android-sdk-linux/platform-tools/adb logcat`
80+```
81+~/Programas/android-sdk-linux/platform-tools/adb logcat
82+```
6983
7084### Получить параметры экрана
7185
7286Вначале нужно заполнить TDisplayMetrics:
7387
7488``` pascal
7589uses androidutil;
7690
7791var
7892 MyDisplayMetrics: TDisplayMetrics;
7993 Str: string;
8094 //
8195 lHeight, lWidth: Integer;
8296 xdpi, ydpi, lScreenSize: Single;
8397begin
8498 // ..
8599 // Objects
86100
87101 MyDisplayMetrics := TDisplayMetrics.Create;
88102 Activity.getWindowManager().getDefaultDisplay().getMetrics(MyDisplayMetrics);
89103```
90104
91105После вы можете получить информацию о дисплее из TDisplayMetrics:
92106
93107``` pascal
94108 lHeight := MyDisplayMetrics.heightPixels();
95109 lWidth := MyDisplayMetrics.widthPixels();
96110 xdpi := MyDisplayMetrics.xdpi();
97111 ydpi := MyDisplayMetrics.ydpi();
98112 lScreenSize := sqrt(sqr(lHeight / ydpi) + sqr(lWidth / xdpi));
99113 ldensity := MyDisplayMetrics.density();
100114 ldensityDpi := MyDisplayMetrics.densityDpi();
101115 scaledDensity := MyDisplayMetrics.scaledDensity();
102116```
103117
104118Обратите внимание, что многие устройства врут о xdpi и ydpi, поэтому не стоит доверять lScreenSize, рассчитанному выше. Смартфоны могут сообщить о размере экрана 10 дюймов, хотя их настоящий размер может быть около 4.
105119
106120## Подробная информация об устройствах с Android
107121
108122Поскольку существует так много Android устройств, эта информация может быть полезно для отслеживания информации о них. Смотрите также в википедии [Сравнение устройств с Android](http://ru.wikipedia.org/wiki/Сравнение_устройств_с_Android) и подробную информацию о процессорах в [Android#System_Requirements](https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements).
109123
110124### Смартфоны
111125
112126| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
113127|----|----|----|----|----|----|----|
114128| HTC | Wildfire | HTC Wildfire | armv6 | 2.1=\>2.2 | Да\|\|- | |
115129| Sony Erricson | Xperia X10 | X10i | armv7 | 1.6=\>2.1 | Нет\|\|- | |
116130
117131### Планшеты
118132
119133| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
120134|----|----|----|----|----|----|----|
121135| Toshiba | Folio 100 Tablet | TOSHIBA_FOLIO_AND_A | armv7 | 2.2 | Yes\|\|- | |
122136
123137### Списки устройств сгруппированные по процессорам (ARMv6 vs ARMv7)
124138
125139**Список устройств на ARMv7:**
126140
127141- Advent Vega (P10AN01)
128142- Dell Streak, Streak 7
129143- HTC Desire
130144- HTC Desire Z (T-Mobile G2)
131145- HTC Desire HD
132146- HTC Droid Incredible
133147- HTC EVO 4G, EVO Shift 4G
134148- HTC Glacier (T-Mobile myTouch 4G)
135149- HTC Inspire 4G
136150- HTC Nexus One
137151- HTC Thunderbolt 4G
138152- Huawei Ideos S7
139153- LG Optimus Z
140154- Motorola Atrix 4G
141155- Motorola Bravo
142156- Motorola Cliq 2 - untested
143157- Motorola Defy
144158- Motorola Droid 2, Droid 2 Global
145159- Motorola Droid Pro (Motorola PRO)
146160- Motorola Droid X
147161- Motorola Xoom
148162- POV Mobii Tegra Tablet
149163- Samsung Continuum (i400)
150164- Samsung Galaxy S (i9000, Captivate, Fascinate, Vibrant, Epic 4G)
151165- Samsung Galaxy Tab
152166- Sharp IS03
153167- Sony Ericsson Xperia X10
154168- Toshiba AS100
155169- Viewsonic gTablet
156170- Acer Liquid E
157171- Acer Liquid (Liquid A1)
158172- Archos 101 Internet Tablet
159173- Motorola Charm
160174- Motorola Droid (Milestone)
161175- Samsung Galaxy S 4G
162176- Samsung Nexus S
163177
164178**Список устройств на ARMv6:**
165179
166180- Android SDK emulator
167181- Asus Garmin nuvifone A50 (T-Mobile Garminfone)
168182- Augen GENTouch 78 Tablet
169183- Coby Kyros Internet Tablet (MID7015)
170184- Geeksphone One, Geeksphone Zero
171185- HTC Aria
172186- HTC ChaCha
173187- HTC Dream (T-Mobile G1, Android Dev Phone 1)
174188- HTC Droid Eris
175189- HTC Espresso (T-Mobile myTouch 3G Slide)
176190- HTC Hero (T-Mobile G2 Touch)
177191- HTC Legend
178192- HTC Magic (T-Mobile myTouch 3G, T-Mobile G1 Touch)
179193- HTC Salsa
180194- HTC Tattoo
181195- HTC Wildfire
182196- Huawei Ascend
183197- Huawei Ideos U8150-B (T-Mobile Comet)
184198- Huawei U8110 (T-Mobile Pulse Mini)
185199- Huawei U8230
186200- LG Ally (Apex) (LG VS740)
187201- LG GW620 (Eve, InTouch Max, LinkMe)
188202- LG Optimus, Optimus M, Optimus T, Optimus S, Optimus V
189203- LG Vortex
190204- LG P500
191205- MAG iMiTO iM7
192206- vMAG iMiTO iM7S
193207- Motorola Backflip
194208- Motorola Citrus
195209- Motorola Cliq (MB200)
196210- Motorola Dext
197211- Motorola Devour
198212- Motorola i1
199213- Motorola Spice XT300
200214- Motorola Quench XT5 XT502
201215- Pandigital Novel
202216- Samsung GT-S5570 Galaxy Mini
203217- Samsung i5500 Galaxy 5 (Corby)
204218- Samsung i5700 Galaxy Portal (Spica)
205219- Samsung i5800 Galaxy 3
206220- Samsung i7500 Galaxy
207221- Samsung Intercept
208222- Samsung M900 Moment
209223- Samsung S5830 Galaxy Ace
210224- Samsung Transform
211225- Sanyo ZIO M6000
212226- Sony Ericsson Xperia X8
213227- Sony Ericsson Xperia X10 Mini
214228- Sony Ericsson Xperia X10 Mini Pro
215229- Superpad 10.2" Tablet PC
216230- Viewsonic ViewPad 7 Tablet
217231- Velocity Micro T103 Cruz tablet
218232- Vodafone 845
219233- ZTE Blade
220234
221235### Воспроизведение Аудио и Видео на телефонах
222236
223237Каждый телефон поставляется со своим набором кодеков, поэтому на разных телефонах родной Media Player может воспроизводить разные форматы. Ниже приведена таблица, показывающая, какие форматы воспроизводит Media Player на каждом телефоне:
224238
225239| **Телефон** | **Android** | **webm - VP8** | **m4v - H.264** | **ogv - Theora** | **mp4 - H.264** | **mov - H.264** | **avi - RLE** | **mpg - MPEG-1** | **wmv - WM9** | **3gp - MPEG-4** |
226240|----|----|----|----|----|----|----|----|----|----|----|
227241| Emulator | 1.6 | x | x | x | x | x | x | x | x | OK |
228242| Emulator | 2.1 | x | x | x | x | x | x | x | x | OK |
229243| Nexus One | 2.2 | x | OK | x | OK | x | x | x | x | OK |
230244| HTC Desire | 1.6 | x | OK | x | OK | x | x | x | OK | OK |
231245| Toshiba Folio 100 | 2.2 | x | OK | x | OK | x | x | x | OK | OK |
232246| Xperia X10 | 2.1 | x | OK | x | x | x | x | x | OK | OK |
233247| Xperia X8 | 2.2 | x | OK | x | x | x | x | x | x | OK |
234248| HTC Wildfire | 2.1 | x | OK | x | x | x | x | x | x | OK |
235249| HTC Desire HD | 2.2 | x | OK | x | OK | x | x | x | x | OK |
236250| Galaxy Tab | 2.2 | x | OK | x | x | x | x | x | x | OK |
237251| myPhone A210 | 1.6 | x | OK | x | x | x | x | x | x | OK |
238252| Motorola Milestone | 2.1 | x | OK | x | x | x | x | x | OK | ? |
239253| Milestone 2 | 2.2 | x | OK | x | x | x | x | x | только звук | OK |
240254
241255## Файловая система Android
242256
243257Рекомендуется использовать getApplicationContext().getFilesDir() чтобы получить путь к каталогу для хранения данных приложения. В HTC Wildfire эта функция возвращает /data/data/\<package name\>
244258
245259Библиотеки приложения находятся в /data/data/\<package\>/lib
246260
247261В папке /data/data/\<package name\> есть разрешение на чтение и запись, можно создавать новые файлы и даже запускать их.
248262
249263## Создание нового Java Приложения для Android
250264
251265Эта информация может быть полезна для реализации LCL-CustomDrawn-Android
252266
253267Общие инструкции здесь: [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
254268
255269### Показать / Скрыть виртуальную клавиатуру
256270
257271Чтобы показать:
258272
259273``` java
260274 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
261275 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
262276```
263277
264278и чтобы спрятать клавиатуру:
265279
266280``` java
267281 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
268282 imm.hideSoftInputFromWindow(singleedittext.getWindowToken(),0);
269283```
270284
271285## Ссылки
272286
273287- [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
274288- [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)
275289
276290---
277291*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).*
278292Category: Android/ru
279293Category: Custom Drawn/ru
280294Category: Russian

Back to history