Sign in Join
Wiki copytemporary

Android Programming/ru: what changed

Revision 2 to 3. 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-```
17+```text
1818svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr lazarus-ccr
1919```
2020
2121или если вы думаете что это слишком много, вы можете скачать только каталог lazarus-ccr/bindings/android-ndk
2222
2323**Шаг 4** - Постройте Pascal Library
2424
2525Откройте проект lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi
2626
2727Откройте пункт меню Project-\>Project Options-\>Paths и где написано "Libraries -Fl" вы должны увидеть следующее значение:
2828
29-```
29+```text
3030/home/felipe/Programas/android-ndk-r5/platforms/android-9/arch-arm/usr/lib
3131```
3232
3333Измените его на правильный путь, который указывает на библиотеку NDK с минимальной необходимой версией Android API Level
3434
3535Теперь постройте проект используя Lazarus.
3636
3737**Шаг 5** - Настройка среды сборки
3838
3939Откройте файл opengltest/local.properties и в строке:
4040
41-```
41+```text
4242sdk.dir=/home/felipe/Programas/android-sdk-linux
4343```
4444
4545Измените этот путь на местоположение SDK
4646
4747**Шаг 6** - Постройка APK
4848
4949Откройте консоль и введите следущие команды:
5050
51-```
51+```text
5252cd lazarus-ccr/bindings/ndk/examples/opengltest/android
5353ant debug
5454```
5555
5656Файл APK будет помещен в opengltest/android/bin/
5757
5858**Шаг 7** - Установка APK
5959
6060Если на этом шаге вы получите сообщение об ошибке прав доступа, читайте: [[Android Interface/Using the Android SDK, Emulator and Phones|Android_Interface/Using_the_Android_SDK%2C_Emulator_and_Phones#Recognition_of_devices_under_Linux]]
6161
6262Команда, чтобы установить APK на телефоне:
6363
64-```
64+```text
6565cd opengltest/android
6666~/Programas/android-sdk-linux/platform-tools/adb install bin/OpenGLNDKTest-debug.apk
67672395 KB/s (107299 bytes in 0.043s)
6868 pkg: /data/local/tmp/OpenGLNDKTest-debug.apk
6969Success
7070```
7171
7272Если вы получили сообщение об ошибке, что APK уже установлен, вы можете установить его с помощью команды:
7373
74-```
74+```text
7575~/Programas/android-sdk-linux/platform-tools/adb uninstall com.pascal.opengltest
7676```
7777
7878После можно запустить *adb logcat* чтобы увидеть журнал, в то время как вы запустите его в телефон через недавно добавленную иконку:
7979
80-```
80+```text
8181~/Programas/android-sdk-linux/platform-tools/adb logcat
8282```
8383
8484### Получить параметры экрана
8585
8686Вначале нужно заполнить TDisplayMetrics:
8787
8888``` pascal
8989uses androidutil;
9090
9191var
9292 MyDisplayMetrics: TDisplayMetrics;
9393 Str: string;
9494 //
9595 lHeight, lWidth: Integer;
9696 xdpi, ydpi, lScreenSize: Single;
9797begin
9898 // ..
9999 // Objects
100100
101101 MyDisplayMetrics := TDisplayMetrics.Create;
102102 Activity.getWindowManager().getDefaultDisplay().getMetrics(MyDisplayMetrics);
103103```
104104
105105После вы можете получить информацию о дисплее из TDisplayMetrics:
106106
107107``` pascal
108108 lHeight := MyDisplayMetrics.heightPixels();
109109 lWidth := MyDisplayMetrics.widthPixels();
110110 xdpi := MyDisplayMetrics.xdpi();
111111 ydpi := MyDisplayMetrics.ydpi();
112112 lScreenSize := sqrt(sqr(lHeight / ydpi) + sqr(lWidth / xdpi));
113113 ldensity := MyDisplayMetrics.density();
114114 ldensityDpi := MyDisplayMetrics.densityDpi();
115115 scaledDensity := MyDisplayMetrics.scaledDensity();
116116```
117117
118118Обратите внимание, что многие устройства врут о xdpi и ydpi, поэтому не стоит доверять lScreenSize, рассчитанному выше. Смартфоны могут сообщить о размере экрана 10 дюймов, хотя их настоящий размер может быть около 4.
119119
120120## Подробная информация об устройствах с Android
121121
122122Поскольку существует так много Android устройств, эта информация может быть полезно для отслеживания информации о них. Смотрите также в википедии [Сравнение устройств с Android](http://ru.wikipedia.org/wiki/Сравнение_устройств_с_Android) и подробную информацию о процессорах в [Android#System_Requirements](https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements).
123123
124124### Смартфоны
125125
126126| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
127127|----|----|----|----|----|----|----|
128128| HTC | Wildfire | HTC Wildfire | armv6 | 2.1=\>2.2 | Да\|\|- | |
129129| Sony Erricson | Xperia X10 | X10i | armv7 | 1.6=\>2.1 | Нет\|\|- | |
130130
131131### Планшеты
132132
133133| **Производитель** | **Модель** | **Android API Name (Build.Model)** | **Процессор** | **Версия Android** | **Мультитач** | **Комментарий** |
134134|----|----|----|----|----|----|----|
135135| Toshiba | Folio 100 Tablet | TOSHIBA_FOLIO_AND_A | armv7 | 2.2 | Yes\|\|- | |
136136
137137### Списки устройств сгруппированные по процессорам (ARMv6 vs ARMv7)
138138
139139**Список устройств на ARMv7:**
140140
141141- Advent Vega (P10AN01)
142142- Dell Streak, Streak 7
143143- HTC Desire
144144- HTC Desire Z (T-Mobile G2)
145145- HTC Desire HD
146146- HTC Droid Incredible
147147- HTC EVO 4G, EVO Shift 4G
148148- HTC Glacier (T-Mobile myTouch 4G)
149149- HTC Inspire 4G
150150- HTC Nexus One
151151- HTC Thunderbolt 4G
152152- Huawei Ideos S7
153153- LG Optimus Z
154154- Motorola Atrix 4G
155155- Motorola Bravo
156156- Motorola Cliq 2 - untested
157157- Motorola Defy
158158- Motorola Droid 2, Droid 2 Global
159159- Motorola Droid Pro (Motorola PRO)
160160- Motorola Droid X
161161- Motorola Xoom
162162- POV Mobii Tegra Tablet
163163- Samsung Continuum (i400)
164164- Samsung Galaxy S (i9000, Captivate, Fascinate, Vibrant, Epic 4G)
165165- Samsung Galaxy Tab
166166- Sharp IS03
167167- Sony Ericsson Xperia X10
168168- Toshiba AS100
169169- Viewsonic gTablet
170170- Acer Liquid E
171171- Acer Liquid (Liquid A1)
172172- Archos 101 Internet Tablet
173173- Motorola Charm
174174- Motorola Droid (Milestone)
175175- Samsung Galaxy S 4G
176176- Samsung Nexus S
177177
178178**Список устройств на ARMv6:**
179179
180180- Android SDK emulator
181181- Asus Garmin nuvifone A50 (T-Mobile Garminfone)
182182- Augen GENTouch 78 Tablet
183183- Coby Kyros Internet Tablet (MID7015)
184184- Geeksphone One, Geeksphone Zero
185185- HTC Aria
186186- HTC ChaCha
187187- HTC Dream (T-Mobile G1, Android Dev Phone 1)
188188- HTC Droid Eris
189189- HTC Espresso (T-Mobile myTouch 3G Slide)
190190- HTC Hero (T-Mobile G2 Touch)
191191- HTC Legend
192192- HTC Magic (T-Mobile myTouch 3G, T-Mobile G1 Touch)
193193- HTC Salsa
194194- HTC Tattoo
195195- HTC Wildfire
196196- Huawei Ascend
197197- Huawei Ideos U8150-B (T-Mobile Comet)
198198- Huawei U8110 (T-Mobile Pulse Mini)
199199- Huawei U8230
200200- LG Ally (Apex) (LG VS740)
201201- LG GW620 (Eve, InTouch Max, LinkMe)
202202- LG Optimus, Optimus M, Optimus T, Optimus S, Optimus V
203203- LG Vortex
204204- LG P500
205205- MAG iMiTO iM7
206206- vMAG iMiTO iM7S
207207- Motorola Backflip
208208- Motorola Citrus
209209- Motorola Cliq (MB200)
210210- Motorola Dext
211211- Motorola Devour
212212- Motorola i1
213213- Motorola Spice XT300
214214- Motorola Quench XT5 XT502
215215- Pandigital Novel
216216- Samsung GT-S5570 Galaxy Mini
217217- Samsung i5500 Galaxy 5 (Corby)
218218- Samsung i5700 Galaxy Portal (Spica)
219219- Samsung i5800 Galaxy 3
220220- Samsung i7500 Galaxy
221221- Samsung Intercept
222222- Samsung M900 Moment
223223- Samsung S5830 Galaxy Ace
224224- Samsung Transform
225225- Sanyo ZIO M6000
226226- Sony Ericsson Xperia X8
227227- Sony Ericsson Xperia X10 Mini
228228- Sony Ericsson Xperia X10 Mini Pro
229229- Superpad 10.2" Tablet PC
230230- Viewsonic ViewPad 7 Tablet
231231- Velocity Micro T103 Cruz tablet
232232- Vodafone 845
233233- ZTE Blade
234234
235235### Воспроизведение Аудио и Видео на телефонах
236236
237237Каждый телефон поставляется со своим набором кодеков, поэтому на разных телефонах родной Media Player может воспроизводить разные форматы. Ниже приведена таблица, показывающая, какие форматы воспроизводит Media Player на каждом телефоне:
238238
239239| **Телефон** | **Android** | **webm - VP8** | **m4v - H.264** | **ogv - Theora** | **mp4 - H.264** | **mov - H.264** | **avi - RLE** | **mpg - MPEG-1** | **wmv - WM9** | **3gp - MPEG-4** |
240240|----|----|----|----|----|----|----|----|----|----|----|
241241| Emulator | 1.6 | x | x | x | x | x | x | x | x | OK |
242242| Emulator | 2.1 | x | x | x | x | x | x | x | x | OK |
243243| Nexus One | 2.2 | x | OK | x | OK | x | x | x | x | OK |
244244| HTC Desire | 1.6 | x | OK | x | OK | x | x | x | OK | OK |
245245| Toshiba Folio 100 | 2.2 | x | OK | x | OK | x | x | x | OK | OK |
246246| Xperia X10 | 2.1 | x | OK | x | x | x | x | x | OK | OK |
247247| Xperia X8 | 2.2 | x | OK | x | x | x | x | x | x | OK |
248248| HTC Wildfire | 2.1 | x | OK | x | x | x | x | x | x | OK |
249249| HTC Desire HD | 2.2 | x | OK | x | OK | x | x | x | x | OK |
250250| Galaxy Tab | 2.2 | x | OK | x | x | x | x | x | x | OK |
251251| myPhone A210 | 1.6 | x | OK | x | x | x | x | x | x | OK |
252252| Motorola Milestone | 2.1 | x | OK | x | x | x | x | x | OK | ? |
253253| Milestone 2 | 2.2 | x | OK | x | x | x | x | x | только звук | OK |
254254
255255## Файловая система Android
256256
257257Рекомендуется использовать getApplicationContext().getFilesDir() чтобы получить путь к каталогу для хранения данных приложения. В HTC Wildfire эта функция возвращает /data/data/\<package name\>
258258
259259Библиотеки приложения находятся в /data/data/\<package\>/lib
260260
261261В папке /data/data/\<package name\> есть разрешение на чтение и запись, можно создавать новые файлы и даже запускать их.
262262
263263## Создание нового Java Приложения для Android
264264
265265Эта информация может быть полезна для реализации LCL-CustomDrawn-Android
266266
267267Общие инструкции здесь: [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
268268
269269### Показать / Скрыть виртуальную клавиатуру
270270
271271Чтобы показать:
272272
273273``` java
274274 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
275275 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
276276```
277277
278278и чтобы спрятать клавиатуру:
279279
280280``` java
281281 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
282282 imm.hideSoftInputFromWindow(singleedittext.getWindowToken(),0);
283283```
284284
285285## Ссылки
286286
287287- [Managing Projects from the Command Line](http://developer.android.com/tools/projects/projects-cmdline.html)
288288- [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)
289289
290290---
291291*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).*
292292Category: Android/ru
293293Category: Custom Drawn/ru
294294Category: Russian

Back to history