Окончателното ръководство за разработка на Android 1-во издание
"Android Development Authority Guide" се фокусира върху насоките за практически практически умения и докато следва строгостта на технологичната система за научноизследователска и развойна информация, то е оборудвано с подробни скрийншотове на сценарии за разработка в линкове, които са склонни към грешки и не са лесни за разбиране; И да представят важни точки от знания и умения за развитие на читателите под формата на "научаване на още един трик", "разширено учене", "skill dial" и др. Що се отнася до обяснението на примерите за програми, те са главно включени в главата за същността на знанието на Android разработката, която предоставя добро ръководство за читателите да съчетаят учене и практика.
Скрийншот на документа:
Част 1 Подготовка Глава 1 Първа среща с истинското лице на Лушан - Въведение в Android Development 2 1.1 Основни концепции на Android 2 1.1.1 Въведение в Android 2 1.1.2 Android версия 4 1.1.3 Архитектура на системата Android 5 1.1.4 Android Application Framework 6 1.2 Въведение в JIL Widget 7 1.3 Резюме 8 Глава 2 Ако искате да свършите добра работа, първо трябва да усъвършенствате инструментите си – изграждането и използването на Android средата за разработка 9 2.1 Инсталиране на комплекти и инструменти за разработка 9 2.1.1 Какво е необходимо за разработване на Android програми 9 2.1.2 Инсталиране на JDK и конфигуриране на Java Development Environment 10 2.1.3 ЗатъмнениеИнсталацията с Синизация 11 2.1.4 Инсталиране на Android SDK 12 2.1.5 Инсталиране на Eclipse плъгина ADT 13 2.2 Реален опит – Писане на първата Android програма (Random Drawing Pie) 15 2.2.1 Създаване на Android Project 15 2.2.2 Стартиране на Android програми в емулатори 17 2.2.3 Оформление на интерфейсните контроли 19 2.2.4 Писане на код 20 2.2.5 Процедура за отстраняване на грешки 23 2.2.6 Стартиране и отстраняване на грешки на програми на мобилни телефони 28 2.3 Грешки, които могат да възникнат в проекта за миграция 29 2.4 Инструмент за разработка, който не изисква нито един ред код: AppInventor 31 2.4.1 Въведение в AppInventor 31 2.4.2 Изтегляне и инсталиране на AppIntentor 31 2.4.3 Проектиране на интерфейса чрез плъзгане на контролите 33 2.4.4 Сглоби код 34 като пъзел 2.5 Резюме 37 Основи на част 2 Глава 3 Пътешествие от хиляда мили започва с една стъпка - Основи на Android програмирането 40 3.1 Android Application Framework 40 3.1.1 Структура на директорията на Android проекти 40 3.1.2 AndroidManifest.xml файлСтруктурата на 42 3.2 Ресурси в Android приложения 44 3.3 Компоненти на приложението за Android 44 3.3.1 Активност (Android Forms) 45 3.3.2 Услуга 45 3.3.3 Излъчващ приемник 45 3.3.4 Доставчик на съдържание 46 3.4 Дизайн на потребителския интерфейс на Android програмите 46 3.4.1 Ръчно конфигуриране на XML файлове за оформление 46 3.4.2 Вграденият визуален UI дизайнер 47 на ADT 3.4.3 Проектиране на UI оформление с DroidDraw 47 3.5 Резюме 48 Глава 4 Моят потребителски интерфейс - Основи на развитието на потребителски интерфейс 49 4.1 Как да използвате Activity 49 4.1.1 Създаване на дейност 49 4.1.2 Конфигуриране на дейност 50 4.1.3 Показване на други дейности (намерения и дейности) 52 4.2 Жизнен цикъл на дейността 55 4.3 Предаване на данни между различни дейности 60 4.3.1 Използване на намерения за предаване на данни 60 4.3.2 Предаване на данни чрез статични променливи 62 4.3.3 Използване на клипборда за прехвърляне на данни 63 4.3.4 Предаване на данни чрез глобални обекти 65 4.3.5 Връщане на данните към предишната Дейност 67 4.4 View 68 4.4.1 Въведение в Views 68 4.4.2 Дефиниране на изгледи чрез XML файлове за оформление 69 4.4.3 Контролен изглед 70 в код 4.5 Layout 72 4.5.1 FrameLayout 72 4.5.2 Линейна схема 75 4.5.3 RelativeLayout 79 4.5.4 TableLayout 81 4.5.5 AbsoluteLayout 82 4.5.6 Повторно използване на XML файлове за оформление 82 4.5.7 Оптимизиране на XML файлове за оформление 85 4.5.8 Гледанеapk файлРазположение през 86 4.6 Резюме 87 Глава 5 Добър старт в ученето - Подробно обяснение на Widgets 88 5.1 Парсиране на общи XML атрибути 88 5.1.1 Android:id атрибут 88 5.1.2 Ширина (Android:layout_width) и височина (Android:layout_height) 88 за контроли 5.1.3 Android:layout_margin атрибут 89 5.1.4 Android:padding атрибут 89 5.1.5 Android: layout_weight атрибут 90 5.1.6 Android:layout_gravity и андроид:гравитационни атрибути 90 5.1.7 Android:Visibility атрибут 91 5.1.8 Android:Background Attribute 91 5.1.9 Специфициране на метода на събитието Click (android:onClick Property) 92 5.1.10 Свойства на Control Focus (android:focusable и android:focusable-InTouchMode) 92 5.2 TextView (Контроли за показване на текст) 93 5.2.1 Показване на богат текст (URL, текст с различни размери, шрифтове, цветове) 93 5.2.2 Показване на изображения и текст на емоджита в TextView 97 5.2.3 Кликнете върху линка, за да изскочите Дейност 100 5.2.4 Добавяне на фон към определен текст 103 5.2.5 TextView с рамка 106 5.2.6 Задайте разстоянието между линиите 110 5.2.7 Добавяне на елипсис (...) 111 след незавършен текст 5.2.8 Реализиране на ефекта Marquee с TextView 113 5.2.9 Превъртане на текст в TextView вертикално 114 5.3 РедактиранеТекст 115 5.3.1 Въвеждане на изразно изображение като QQ 115 5.3.2 Въвеждане на конкретен символ 117 в EditText 5.3.3 AutoCompleteText-View (Контрол за Auto-CompleteText-View) 118 5.4 Бутон и контрол с отметка 120 5.4.1 Бутон (Нормално управление на бутона) 120 Бутон 5.4.2 за смесване на графика и текст 122 5.4.3 ImageButton 124 5.4.4 РадиоБутон 124 5.4.5 ToggleButton 125 5.4.6 ЧекБокс (Контрол на чекбокс) 126 5.5 ImageView (Контрол за показване на изображения) 128 5.5.1 Основно използване на ImageView Control 128 5.5.2 Показване на изображения на определени зони 129 5.5.3 Мащабиране и въртене на изображения 132 5.6 Контрол на време и дати 133 5.6.1 DatePicker (Контрол за въвеждане на дати) 133 5.6.2 TimePicker (Контрол за въвеждане на време) 134 5.6.3 DatePicker, TimePicker и TextView синхронно показват дата и час 134 5.6.4 AnalogClock и DigitalClock (контроли за показване на часовника) 136 5.7 Контроли на лентата за напредък 137 5.7.1 ПрогресБар 137 5.7.2 SeekBar 139 5.7.3 Задаване на цвета и фона на ProgressBar и SeekBar 140 5.7.4 РейтингБар 143 5.8 Контроли на списъка 145 5.8.1 ListView (Нормален контрол на списъка) 145 5.8.2 Добавяне на отметки и бутони за опции към ListView List Items 147 5.8.3 Добавяне, изтриване и модифициране на елементи от списъка 149 5.8.4 Промяна на цвета на фона на елементите от списъка 153 5.8.5 СписъкАктивност 154 5.8.6 ExpandableListView 155 5.8.7 Спинър (Контрол на падащото меню) 157 5.9 Контроли на скроловете 160 5.9.1 ScrollView (Вертикален контрол на превъртането) 160 5.9.2 Хоризонтален ScrollView 161 5.9.3 Вертикални и хоризонтални превъртаеми изгледи 162 5.9.4 Галерия 163 5.10 ImageSwitcher 164 5.11 GridView 166 5.12 TabHost (Контрол на тагове) 168 5.13 ПрегледСтабка 169 5.14 Резюме 171 Глава 6 Приятелски менюта - Въведение в менюто и примери 172 6.1 Основно използване на менютата 172 6.1.1 Създаване на меню с опции 172 6.1.2 Меню с опции с изображения 173 6.1.3 Асоциирана дейност 173 6.1.4 Кликнете върху менюто за действие на отговора 174 6.1.5 Динамично меню за добавяне, модифициране и изтриване на опции 175 6.1.6 Подменю 176 с бутони за отметки и опции 6.1.7 Контекстно меню 178 6.1.8 Събития в менюто 179 6.1.9 Зареждане на меню 180 от ресурсите на менюто 6.2 Ефекти на менюто 181 6.2.1 Персонализиране на менюто 181 6.2.2 Симулиране на UC уеб ефекти меню 184 6.2.3 Значка за бърз контакт и меню за контакти 189 6.3 Резюме 192 Глава 7 Приятелско взаимодействие - Информационни напомняния (Диалогови прозорци, тостове и известия) 193 7.1 Основно използване на диалогови прозорци 193 7.1.1 Диалогов прозорец 193 с 2 бутона (Потвърждаване/Отмяна). 7.1.2 Диалогов прозорец 195 с 3 бутона (Override/Ignore/Cancel). 7.1.3 Диалогов прозорец за прост списък 196 7.1.4 Радиосписък Диалогов прозорец 198 7.1.5 Диалогов прозорец 199 за множествен избор на списък 7.1.6 Диалогов прозорец за напредък 201 7.1.7 Диалогов прозорец за вход 205 7.1.8 Използване на Activity Hosting Dialog 207 7.2 Разширени приложения на диалогови прозорци 209 7.2.1 Предотвратяване на натискане на бутон за затваряне на диалогов прозорец 209 7.2.2 Промяна на позицията на дисплея на диалоговия прозорец 213 7.2.3 Вмъкване на изображения в диалогов бутон и текст на съдържанието 215 7.2.4 Промяна на прозрачността на диалоговия прозорец 216 7.3 Тост 217 7.3.1 Основна употреба на Toast 217 7.3.2 Тост 218, който никога не затваря 7.3.3 Използване на PopupWindow за симулиране на Toast Prompt Infobox 221 7.4 Уведомление 221 7.4.1 Показване на информация за известие в лентата за статус 222 7.4.2 Изчистване на Уведомление 224 7.4.3 Постоянно уведомление 225 7.4.4 Персонализиране на известията 226 7.5 Резюме 227 Глава 8 Мобилно информационно хранилище - Съхранение на данни 228 8.1 Четене и записване на двойки ключ-стойност: SharedPreferences 228 8.1.1 Основна употреба на SharedPreferences 228 8.1.2 Местоположение на съхранение и формат на данните 229 8.1.3 Достъп до сложни типове данни 230 8.1.4 Задаване на разрешения за достъп до файлове с данни 233 8.1.5 Activity:PreferenceActivity 234 може да се запази 8.2 Файлово съхранение 238 8.2.1 openFileOutput и openFileInput методи 238 8.2.2 Четене и записване на файлове в SD карта 239 8.2.3 Принцип на четенето на XML файлове от SAX Engine 241 8.2.4 Конвертиране на XML файлове в Java обекти 242 8.2.5 Компресия на файлове (Jar, Zip) 245 8.3 SQLite база данни 249 8.3.1 SQLite инструменти за управление на бази данни 249 8.3.2 SQLiteOpenHelper клас и база данни за автоматично надграждане 251 8.3.3 Свързване на данни с SimpleCursorAdapter клас 252 8.3.4 Управление на базата данни на SD карта 255 8.3.5 Публикуване на бази данни с приложения 256 8.3.6 База данни в паметта 257 8.4 Резюме 258 Глава 9 Прозорци в Android - Дейност 259 9.1 Призоваване на дейност 259 в други програми 9.1.1 Директно набиране 259 9.1.2 Предаване на телефонния номер към dial-up програмата 259 9.1.3 Извикване на програмата за набиране 260 9.1.4 Сърфиране в интернет 261 9.1.5 Предаване на имейл адрес 261 към имейл клиент 9.1.6 Изпращане на имейл 261 9.1.7 Контакти за гледане 262 9.1.8 Показване на интерфейса за системни настройки (настройка на основния интерфейс,wifiИнтерфейс за настройки) 263 9.1.9 Стартиране на програмата за обработка на аудио 264 9.2 Действие за персонализация на дейността 264 9.3 Разширени приложения на дейност 266 9.3.1 Група дейности 266 9.3.2 Персонализация на прозрачен Windows 268 9.3.3 Анимационни ефекти за превключване между дейности 269 9.4 Резюме 270 Глава 10 Глобални събития - Излъчване 271 10.1 Какво е Broadcasting 271? 10.2 Приемна система излъчва 272 10.2.1 SMS Прихващане 272 10.2.2 Регистрация на приемника за излъчване с код 274 10.2.3 Приоритет на излъчващия приемник 275 10.2.4 Входящи и изходящи повиквания Прихващане 276 10.2.5 Заснемане на хибернация на екрана и пробуждане 280 10.2.6 Автоматична работа 281 при стартиране 10.2.7 Показва текущото ниво на батерията на мобилния телефон 282 10.3 Изпращане на излъчвания 284 10.4 Потвърждение, че приемникът за излъчване е регистриран на 285 10.5 Резюме 286 Глава 11 Източници на данни между приложенията - Доставчик на съдържание 287 11.1 Ролята на доставчика на съдържание 287 11.2 Получаване на системни данни 288 11.2.1 Контактна информация за четене 288 11.2.2 Гледане Получен SMS 290 11.3 Персонализиране на доставчик на съдържание 291 11.3.1 Запитване на информация за града 291 11.3.2 Добавяне на достъп до доставчик на съдържание 297 11.4 Резюме 298 Глава 12 Всичко за потребителя - Основи на услугите и примери 299 12.1 Основи на службата 299 12.1.1 Жизнен цикъл на службата 299 12.1.2 Обвързваща дейност и услуга 302 12.1.3 Стартираща услуга 305 при стартиране 12.1.4 Определяне дали дадена услуга е регистрирана по 306 12.1.5 Определяне дали дадена услуга е започнала 307 12.2 Междупроцесен достъп (AIDL услуга) 308 12.2.1 Какво е услуга AILDL 308? 12.2.2 Стъпки за създаване на AIDL Service 308 12.2.3 Създаване на AIDEL Services 308 12.2.4 AITL услуги за доставка на сложни данни 312 12.2.5 AIDL и автоматично затваряне 317 12.3 Резюме 319 Глава 13 Добра работа с приложни мостове: Мрежи и комуникации 320 13.1 WebView Control 320 13.1.1 Сърфинг в уеб с WebView Control 320 13.1.2 Зареждане на HTML код с WebView Control 322 13.2 Достъп до HTTP ресурси 324 13.2.1 Подаване на HTTP GET и HTTP POST заявки 324 13.2.2 HttpURLКonnection клас 326 13.2.3 Качване на файлове 327 13.3 Клиентски сокет 330 13.3.1 Свързване със сървъра 331 13.3.2 Сканирай сървъра за отворен порт 331 13.3.3 Изпращане и получаване на данни 333 13.3.4 Получаване на IP адреса, присвоен на мобилния телефон чрез безжичния маршрут 334 13.3.5 Опция за настройка на гнездото 335 13.4 Сървърен сокет 339 13.4.1 Реализация на мобилен телефонен сървър 339 13.4.2 Използване на сокети за комуникация между приложения 340 13.5 Bluetooth комуникация 342 13.5.1 Въведение в Bluetooth 342 13.5.2 Включване и изключване на Bluetooth устройства 343 13.5.3 Търсене на Bluetooth устройства 344 13.5.4 Bluetooth предаване на данни 346 13.6 Резюме 351 Глава 14 Охладете приложението си - Мултимедийно развитие 352 14.1 Мюзик 352 14.1.1 Свирене на музика 352 14.1.2 Запис 353 14.2 Видео 354 14.2.1 Възпроизвеждане на видео чрез VideoView 354 14.2.2 Възпроизвеждане на видео чрез SurfaceView 355 14.2.3 Запис на видео 357 14.3 Камера 357 14.3.1 Извикване на функцията на камерата на системата 358 14.3.2 Персонализирана фото функция 359 14.4 Мелодии 364 14.5 Резюме 366 Глава 15 2D разработка на игри 367 15.1 Рисуване на платното на играта 367 15.1.1 Реализиране на анимационни ефекти върху изглед 367 15.1.2 Реализиране на анимационни ефекти в SurfaceView 371 15.2 Основи на рисуване на графика 374 15.2.1 Рисуване на пиксели 374 15.2.2 Рисуване на прави линии 374 15.2.3 Кръгове за рисуване 375 15.2.4 Арка за рисуване 375 15.2.5 Текст за рисуване 376 15.2.6 Рисуване на различни фигури 376 15.3 Напреднали техники за обработка на изображения 380 15.3.1 Рисуване на битмапи 380 15.3.2 Прозрачност на изображенията 382 15.3.3 Въртящи се изображения 383 15.3.4 Път 384 15.3.5 Ефекти на шейдър рендериране 388 15.4 Анимация на кадри 392 15.4.1 АнимацияРисуема и кадрова анимация 392 15.4.2 Пускане на анимация на Gif 394 15.5 Тийнейджърска анимация 397 15.5.1 Движеща се анимация за тийнейджъри 397 15.5.2 Скалиране на тийнейджъри 399 15.5.3 Въртяща се тийнейджърска анимация 402 15.5.4 Транспарентна анимация за тийнейджъри 403 15.6 Резюме 404 Глава 16 Интересни Android приложения 405 16.1 Сензор 405 16.1.1 Как да използвате сензор 405 16.1.2 Акселерометър 409 16.1.3 Гравитация 409 16.1.4 Светлинен сензор 410 16.1.5 Жироскоп 411 16.1.6 Ориентация 411 16.1.7 Други сензори 412 16.2 Техники за вход и изход 413 16.2.1 Разпознаване на реч 413 16.2.2 Въвеждане чрез жест 415 16.2.3 Четене на реч (TTS) 417 16.3 Google Maps 419 16.4 GPS позициониране 423 16.5 Малки неща на масата 425 16.5.1 AppWidget 425 16.5.2 Къси пътища 431 16.5.3 Папка за реално време 433 16.6 Нанасяй още по-красиво - Live Wallpaper 435 16.7 Резюме 441 Част 3 Разширена глава Глава 17 HTML5 и мобилна уеб разработка 444 17.1 Въведение в HTML5 444 17.2 HTML5 Демонстрация на чудесни ефекти 445 17.3 HTML5 приложение в Android 447 17.4 HTML5 Canvas 448 17.4.1 Преглед на платното 448 17.4.2 Открийте дали браузърът поддържа Canvas 449 17.4.3 Използване на Canvas 450 в уеб страници 17.4.4 Използване на път 452 17.4.5 Поставяне на линията Стил 453 17.4.6 Задаване на пълнеж тип 453 17.4.7 Запълване на правоъгълна площ 454 17.4.8 Използване на градиент 454 17.4.9 Обекти от разтягане на платно 455 17.4.10 Рисуване на текст върху платно 456 17.4.11 Използване на сенки 457 17.5 Отстраняване на грешки в JavaScript 458 17.6 Резюме 459 Глава 18 Разработка на входни методи 460 18.1 Въведение в Android Input Methods 460 18.2 Метод на контролен вход 461 18.3 Практика на въвеждащ метод 462 18.3.1 Стъпка 463 за реализиране на входния метод 18.3.2 Програми за писане на въвеждащи методи 463 18.3.3 Жизнен цикъл на услугите за входни методи 466 18.3.4 Предварително въведете текст 467 18.3.5 Настройки на метода на въвеждане 467 18.4 Резюме 468 Глава 19 Основи на разработката на Android OpenGL ES 469 19.1 Въведение в OpenGL 469 19.2 Какво е OpenGL ES 469? 19.3 Полигони 470 19.4 Цвят 474 19.5 Въртящ се триъгълник 475 19.6 Въртящ се куб 477 19.7 Резюме 478 Глава 20 OpenGL ES Cool Effects 479 20.1 Поддържане на баланса Въртящ се текст 479 20.2 Android Robot 482 се люлее наляво и надясно 20.3 Заплетен въртящ се куб 485 20.4 Въртящ се куб с прозрачен фон 486 20.5 Докоснете въртящия се куб 487 20.6 Комбинирани ротационни ефекти на 2D и 3D 489 20.7 Въртящо се триизмерно небе 491 20.8 Резюме 493 Глава 21 Android NDK програмиране 494 21.1 Въведение в Android NDK 494 21.2 Инсталиране, конфигуриране и тестване на средата за разработка на NDK 495 21.2.1 Системни и софтуерни изисквания 495 21.2.2 Изтеглете и инсталирайте Android NDK 495 21.2.3 Изтегляне и инсталиране на Cygwin 495 21.2.4 Конфигуриране на средата за разработка на Android NDK 498 21.3 Първа програма на NDK: Hello World 499 21.3.1 Писане и обаждане на NDK програми 499 21.3.2 Компилиране на NDK програми 501 чрез метод на команден ред 21.3.3 Интегриране на Android NDK 502 в Eclipse 21.4 Триъгълници с променящи се фонове (NDK за OpenGL ES) 504 21.5 Реализиране на постоянно променящи се 3D ефекти чрез NDK OpenGL ES API 507 21.6 Извикване на аудио API 510 с NDK 21.7 Местна активност 511 21.8 Android NDK конфигурационен файл 513 21.8.1 Android NDK дефинирани променливи 513 21.8.2 Android NDK дефинирани функции 514 21.8.3 Променливи, описващи модули 515 21.8.4 Конфигуриране Application.mk Файл 516 21.9 Резюме 516 Глава 22 Разработка, водена от тестове (TDD) 517 22.1 Тестова рамка на JUnit 517 22.2 Тестова дейност 517 22.3 Доставчик на тестово съдържание 521 22.4 Тестова услуга 523 22.5 Тестове на Common клас 523 22.6 Резюме 525 Част 4 Изчерпателни примери Глава 23 Изчерпателен случай за Android 1 - Bluetooth Chat 528 23.1 Bluetooth чат основен интерфейс 528 23.2 ДОБАВЯНЕ НА МЕНЮ С ОПЦИИ 530 23.3 Търсене и свързване с Bluetooth устройства 530 23.4 Правене на устройството откриваемо от други Bluetooth устройства 533 23.5 Изпращане и получаване на чат съобщения 533 23.6 Резюме 537 Глава 24 Изчерпателен случай за Android 2 - Кацане на Луната (Игра) 538 24.1 Как да играете играта 538 24.2 Реализиране на игровия интерфейс 539 24.3 Задайте трудността на играта 540 24.4 Начало на игра 541 24.5 Управление на кораба Спитфайър 544 24.6 Управление на кораба за промяна на посоката на полет 544 24.7 Определи дали космическият апарат е успешно кацнал 545 24.8 Резюме 546 Глава 25 Изчерпателен случай за Android 3 - Пълен метод за въвеждане с клавиатура (приложение) 547 25.1 Инсталиране на входния метод 547 25.2 Инициализация на входен метод 548 25.3 Реагиране на клавиатурни действия 549 25.4 Показване на различни меки клавиатури въз основа на свойствата на EditText Control 551 25.5 Резюме 553 Глава 26 Изчерпателен случай за Android 4 - Snake (игра) 554 26.1 Геймплей 554 26.2 Дизайн на основния интерфейс на играта 555 26.3 Контролиране на движението на змията 557 26.4 Резюме 560 Глава 27 Изчерпателен случай за Android 5 - Sina Weibo клиент (приложение) 561 27.1 Въведение в Sina Weibo 561 27.1.1 Sina Weibo клиент 561 27.1.2 Sina Weibo отваря API 563 27.2 Използване на Sina Weibo за разработване на API 563 27.3 Създаване и конфигуриране на Sina Weibo клиентския проект 564 27.4 Влезте в Sina Weibo 564 27.5 Функционален бутон 567 27.6 Weibo 569 показва "Моят дом" 27.7 Коментари в Weibo 572 27.8 Ретуитване на Weibo 573 27.9 Писане на Weibo 574 27.10 Резюме 576 Глава 28 Изчерпателен случай за Android 6 - Усмихнато лицеГледай го отново и отново(Игра) 577 28.1 Геймплей 577 28.2 Подготовка на изображения 578 28.3 Реализиране на основния интерфейс 578 28.4 Случайно генериране на изображения за непрекъснато гледане 580 28.5 Изчезване след избор на две идентични изображения 580 28.6 Ограничаване на игровото време с таймери 581 28.7 Резюме 582
размер на документа; 53.2MB Забележка: Този документ е за тези, които трябва да научат Android разработка.
Изтеглете адреса;
Връзки: Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|