Работа с сетью android studio


Android: Сетевая поддержка

Полный текст статьи и исходники программы доступны только зарегистрированным участникам сайта.

Стоимость регистрации - символические 335 рублей.

Для регистрации сначала необходимо пополнить Яндекс.Кошелек - 410011383280263 на указанную сумму (или Webmoney-кошелек R390884954122 или QIWI - 9055113963 (кошелек, не на счёт телефона!)), а затем прислать письмо на адрес [email protected] с указанием, на какой кошелек вы делали оплату и реквизиты, по которым можно вас определить (не прикрепляйте к письму картинки или файлы). Учитывайте комиссию при переводах.

Не присылайте в письме мои номера кошельков - поверьте, я их знаю и без вас.

В ответном письме вы получите учётные данные для чтения статей из закрытой зоны за второй курс.

Доступ к третьему курсу обучения доступен только после оплаты второго курса и составляет 335 руб.

Доступ к чётвертому курсу обучения доступен после оплаты третьего курса и составляет 335 руб. и т.д.

При оплате сразу всех курсов одновременно (2-8) цена составит 2300 руб.

Доступ даётся как минимум на один год. Для тех, кто оплатил третий и другие курсы, сроки доступа увеличиваются.

Также возможен приём на PayPal (только для зарубежных пользователей). Обратите внимание, что в этом случае стоимость одного курса составляет 7$.

2-й курс/Закрытая зона

Метки: ConnectivityManager, getBackgroundDataSetting(), java.net.InetAddress, android.net.TrafficStats

Быстрый стартНастройка разрешений для работы с сетьюКак проверить подключение к ИнтернетуПроверка доступности сервераЧтение пользовательских настроек, отвечающих за передачу данных в фоновом режимеПолучить IP-адрес хостаМетод getAllNetworkInfo()Поддержка LTEПодсчёт трафикаАдреса на устройстве

Быстрый старт

Как ни странно, но телефоны все дальше и дальше отдаляются от своей основной задачи - просто позвонить. Теперь устройство используется как платформа для сетевых игр, посещения сайтов, общения по Skype, ICQ и т.д. И поэтому телефону требуется обеспечить сетевую поддержку.

Мобильные устройства подключаются к Интернету при помощи 3G, Wi-Fi (в редких случаях и по кабелю), используя стандартные протоколы HTTP, HTTPS, TCP/IP, сокеты.

Основные моменты, на которые должен обратить внимание разработчик при реализации сетевой поддержки - обеспечение конфиденциальности, учет потребления заряда батареи, проверка доступности сети.

Android предоставляет разработчику все необходимые библиотеки для работы с сетью. Android использует для работы с сетью стандартные библиотеки Java , а также ряд своих библиотек.

В таблице приведены некоторые пакеты, относящиеся к сетевым возможностям, которые присутствуют в SDK Android:

java.netСодержит классы, связанные с сетевыми функциями, в том числе сокеты потоков и датаграмм, протокол IP, а также общие средства для работы с HTTP. Это многоцелевой ресурс для работы с сетями.
java.ioПакет не относится непосредственно к сетям. Его классы используются сокетами и соединениями, содержащимися в других пакетах Java. Они используются также для обмена с локальными файлами (что часто происходит при взаимодействии с сетью).
java.nioСодержит классы, которые служат буфером для определенных типов данных. Удобен для организации сетевой связи между двумя конечными точками средствами Java.
org.apache.*Набор пакетов, которые обеспечивают точный контроль и функции для HTTP-коммуникаций на основе Apache - популярного веб-сервера с открытым исходным кодом.
android.netСодержит дополнительные сокеты доступа к сети в дополнение к основным классам java.net.*. Этот пакет включает в себя класс URI, который часто используется в разработке приложений Android, не связанных с сетью.
android.net.httpСодержит классы для работы с сертификатами SSL.
android.net.wifiСодержит классы для реализации всех аспектов WiFi (802.11 Wireless Ethernet) на платформе Android.

Важно, чтобы ваше приложение:

Для настройки сетевой поддержки устройств используется приложение Настройки (Settings), в котором можно настроить различные режимы (Режим полета, Wi-Fi, Мобильная сеть). Также там можно посмотреть сведения о беспроводной сети, ее типе (CDMA, EDGE, GSM), уровень сигнала, состояние подключения к сотовой сети, состояние роуминга и др.

Вы вошли на сайт, как гость.Необходимо зарегистрироваться, чтобы прочитать статью

Реклама

developer.alexanderklimov.ru

Самые частые ошибки начинающих Android разработчиков

Android воистину фантастическая платформа для разработчика. Судите сами: исходный код android открыт, все инструменты разработки бесплатны, вы можете использовать их на любой операционной системе, Android хорошо документирован, процесс распространения и продажи приложений очень прост и хорошо описан. С момента выхода на рынок в 2008 году Android проделал большой путь. Сегодня вы можете пользоваться различными IDE для написания своих программ, но с недавнего времени единственной поддерживаемой Google средой является Android Studio, которая в свою очередь базируется на IntelliJ IDE. Android Studio делает многое для упрощения жизни разработчика, однако даже очень продвинутая IDE не способна заменить программисту голову, и в нашем коде по прежнему встречаются баги. В этой статье будут указаны наиболее характерные ошибки Android разработчиков. Конечно, наиболее часто они встречаются в коде новичков, однако и опытные программисты иногда встречаются с этими граблями.

Использование интерфейсных решений, характерных для iOS

Android и iOS активно конкурируют на рынке мобильных операционных систем. Многие разработчики пришли в Android из мира Apple. Не удивительно, что оказавшись в новой среде они пытаются использовать свой предыдущий опыт. Android и iOS имеют много общего, однако некоторые интерфейсные решения для них сильно отличается. Поэтому прежде чем начать разрабатывать Android приложения было бы неплохо ознакомиться с "Android design guidelines". Это поможет Вам понять экосистему Android, и вы не напугаете своих пользователей "нелогичным" интерфейсом.

Неиспользование интентов

Интенты - это одна из ключевых идей системы Android. С их помощью можно запросить данные или выполнение действий от других компонентов системы. Причем, вы можете обратиться как к частям собственной программы, так и к внешнему приложению. Современные программы многофункциональны, и вместо того, чтобы повторно изобретать велосипед и интегрировать его в свое приложение, можно через Android обратиться к другим, специально заточенным под решение требуемой задачи приложениям. Например, если вам нужно выбрать контакт пользователя, то длинный путь состоит в обращении к базе данных телефона, выгрузке этих данных в ListView, реализации логики выбора контакта в ListView. Опытный разработчик вряд ли будет городить все это, а с помощью Intent обратиться к книге контактов Android. Существует огромное количество задач, которые могут быть решены с помощью интентов: получение картинок и видео с камеры, проигрывание видео, установка напоминаний и будильника и многое другое. Просто и красиво.

Неиспользование fragments

В стародавние времена, еще до Honeycomb, Android приложения строились только на базе активити и сервисов. Это доставляло массу неудобств при написании программ, которые должны были работать как при альбомной, так и при книжной ориентации устройства. Ночи, проведенные за отладкой и адаптацией макетов не редко заканчивались убитыми об стену устройствами, а ремонт планшетов и телефонов не самое дешевое дело. Внесение в API концепции фрагментов существенно улучшило ситуацию. Фрагмент - это мини активити, которая может быть встроена в обычную активити. Причем можно встроить в активити сразу несколько фрагментов. Это позволяет писать более элегантный код, отрабатывающий изменение ориентации устройства.

Разработка для текущей версии Android

Пожалуй самой обсуждаемой в среде программистов проблемой Android OS является ее фрагментация. На рынке одновременно присутствует большое количество устройств, работающих под различными версиями операционной системы. Каждая версия имеет собственный API. Начинающие разработчики очень часто ориентируются на последнюю версию операционной системы, отсекая тем самым огромный кусок рынка. Опытные программисты ориентируются на более старые версии и используют для обратной совместимости "Android Support Library". На самом деле, нет никакой реальной необходимости писать под очень старые устройства. Например, ориентация на Ice Cream Sandwich позволяет покрыть 95% находящихся на рынке устройств.

Разработка для одного или двух экранов

Фрагментация проявляется и в том, что при разработке приложений программист вынужден учитывать, что его приложение будет запускаться на устройствах с различным разрешением и размером экранов. Попыткой решения этой проблемы было привязывание всех размеров к dp и sp. Тем не менее, при написании Android приложения разработчик должен постоянно переключаться между различными типами экранов, чтобы удостовериться, что его программа нормально отображается. Новички обычно забывают про это и тестируют свой софт на одном-двух телефонах. Это неправильно.

Блокирование основного (UI) потока

При запуске любого приложения Android создает поток выполнения, называемый главным потоком или UI потоком. В этом потоке обрабатываются события щелчка по экрану, рисование и обновление экрана. По умолчанию весь код выполняется именно в этом потоке. Это может вызвать проблему - если у вас выполняется какая-нибудь долгая операция внутри UI потока, то приложение будет "подвисать". Особенно это актуально для приложений, взаимодействующих с сетью. В новых версиях Android работу с сетью запрещено осуществлять из основного потока, но остается целый ряд потенциально "тяжелых" задач, которые могут подвесить ваше приложение. Примером таких задач служат загрузка изображений, чтение/запись в файл или базу данных, сложные вычисления. Выходом может стать помещение этих задач в отдельные потоки. Приведенный ниже код иллюстрирует загрузку изображения и отображение ее в ImageView. Опытные разработчики никогда не позволяют своим приложениям подвисать. Если вам не знакома эта тема, рекомендую почитать об AsyncTask и использовании ProgressBar.

Пренебрежение документацией

Android Developer website - очень хороший ресурс, содержащий массу полезной информации для Android разработчиков. Документация, уроки, спецификации, обзор лучших решений - все это можно найти на Android Developer website. Если Вы всерьез собираетесь заняться программированием под Android - этот сайт должен быть у Вас в закладках. Начинающим разработчикам можно также рекомендовать StackOverflow - online сообщество, где можно задать вопрос и получить на него квалифицированный ответ. Начинающий программист с почти стопроцентной вероятностью найдет здесь ответ на мучающий его вопрос.

Глубокая иерархия в макетах экранов

При разработке макетов экранов своих программ (layouts) начинающие разработчики почему-то полагают, что использование базовых layout структур автоматически гарантирует создание эффективных и оптимизированных макетов. На самом деле, каждый виджет и layout, добавленный в приложение увеличивает время отрисовки экрана. В частности, использование параметра layout_weight - довольно дорогое в плане затрат времени удовольствие. Гораздо эффективнее использовать RelativeLayout и выстраивать виджеты по отношению друг к другу. С другой стороны, использование вложенных друг в друга layout-ов тоже очень накладно с точки зрения расхода времени.

Неправильное использование картинок

Графика является одним из самых больших кусков современных приложений. Прежде чем попасть на экран картинка должна быть загружена в память. Новички часто сталкиваются с OutOfMemoryError, когда пытаются загрузить коллекцию изображений. Например, загрузка картинки 2448x3264 ARGB_8888 потребует 4 * 2448 * 3264 байт памяти (около 30 Мб). Если вы потом собираетесь использовать эту картинку для отображения через ImageView размером 200x200, то на самом деле вам нужно всего 4*200*200 байт (около 160Кб). Довольно расточительно тратить 32Мб, когда действительно используется только 160Кб. При загрузке изображений опытные разработчики используют Bitmap.createScaledBitmap(). Кроме того, не стоит загружать картинки в основном потоке.

Мобильное приложение не маленький проект

Эту ошибку делают все, кто впервые сталкивается с мобильной разработкой. Новички считают мобильные приложения простыми программами, для написания которых хватит выходных. Это заблуждение очень далеко от реальности. Разработка android программ ничем не отличается от написания любого другого софта. Вам также понадобится разрабатывать спецификации, планировать свое время, наладить багтрекинг и серьезно готовиться к релизу.

Заключение

Разработка для Android очень увлекательное занятие (или тяжелая работа, кому как нравится). Рассмотренные ошибки это лишь небольшой список граблей, которые затаились в ожидании неопытного android разработчика. Наверняка вы тоже сталкивались с ошибками, не попавшими в этот список. Поделитесь опытом.

Источник: Top rookie Android developer mistakes Александр Ледков17 сентября 2015

Please enable JavaScript to view the comments powered by Disqus.

www.mobilab.ru

Пишем Hello World на Android. Работаем в Android Studio

В этой статье мы напишем первое свое приложение на Android. Писать классический Hello world или правильнее будет написать Hello Android мы будем в современной среде разработки Android Studio.

Первые шаги: установка и настройка

Для начала нам нужно установить Android Studio и настроить среду разработки. Обратите внимание, у вас на компьютере должна уже быть предустановлена JDK 6 или поздняя версия (как скачать и установить JDK). Приступайте к установке Android только после того, как вы пройдете все шаги установки JDK, описанные по ссылке.

Если у вас стоит Windows, то для установки требует всего-лишь запустить скачанный файл .exe файл и следовать простым инструкциям мастера установки. Если вы работаете на компьютере с Mac OS X, то вам нужно смонтировать образ диска. Для этого сделайте двойной щелчок и перетащите Android Studio в папку Applications.

Запуск Android Studio и создание проекта

Теперь мы готовы к созданию первого приложения для Android с помощью IDE Android Studio. При запуске Android Studio в первый раз будет представлен экран приветствия, предлагая вам несколько вариантов для начала работы:

На экране приветствия видны варианты импорта проекта из системы контроля версий, Eclipse ADT, проекта Gradle или из готовых примеров кода, которые предоставляются вместе с Android. В случае выбора любого из вариантов импорта, Android Studio сама добавит необходимые файлы и настроит конфигурацию проекта для вас. Из этого списка выберите пункт Start a new Android Studio project.

Далее нас просят ввести Название приложения (Application name) и Домен (Company Domain), который потом будет реверсирован в имя пакета. Вводим названия и нажимаем кнопку Next.

Далее нам нужно выбрать минимальную версию Android, для которого будет доступно наше приложение. Если вы не можете точно определить нужную вам версию, то Android Studio может подсказать вам с помощью такого вот графика:

Из всех доступных вариантов я бы предпочел пока выбирать Android 4.0 (API 15):

Жмем Next и попадаем на следующий экран, где нам будет представлен список возможных вариантов Hello world проектов с некоторыми уже настроенными компонентами. Нам нужен пункт Empty Activity:

Нажимаем Next и в следующем экране Finish ничего при этом не меняя.

После нажатия на кнопку Finish, у вас должно появиться маленькое окно с информацией о ходе генерации проекта:

Это может занять довольно много времени, но не больше 1-2 минуты. После этого появится готовый проект Hello world, который можно запускать:

Создание эмулятора Android устройства

Нам нужно создать эмулятор какого-то устройства, чтобы протестировать только что сгенерированный проект. Для этого идем в AVD Manager и создаем новый девайс:

Как только новый эмулятор будет создан, нажимайте треугольник Run в столбце Actions:

После запуска эмулятора, в Android Studio нужно нажать на кнопку Run:

и выбрать з выпадающего списка только что запущенный эмулятор:

И смотрим в Android эмулятор:

Все, вы написали Hello world на Android и запустили его на эмуляторе. Точно также можно было бы запустить проект и на реальном устройстве, однако об этом мы поговорим в следующих уроках. Следите за обновлениями рубрики Программирование под Android.

Больше полезных статей!

javadevblog.com

Общая информация об отладке в Android Studio

Статья проплачена кошками - всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Студия позволяет отлаживать приложения на эмуляторе и на реальных устройствах. Вы можете просматривать системный журнал логов, устанавливать точки останова, проверять значения переменных и вычислять выражения во время работы, делать скриншоты и видеозаписи.

Когда вы разрабатываете приложение, то студия собирает отладочную версию программы, соединяется с устройством/эмулятором, устанавливает и запускает её.

Обычно для запуска приложения вы используете значок с зелёным треугольником Run (Shift+F10) на панели инструментов. Для отладки следует нажимать соседнюю кнопку Debug (Shift+F9) с изображением жучка .

Остальные действия будут идентичными - вам надо выбрать устройство, на котором будет происходить отладка.

Android Studio откроет окно Debug. Можно открыть его вручную через кнопку 5: Debug в нижней части среды разработки. Окно показывает потоки и переменные в вкладке Debugger, статус устройства в вкладке Console и системные логи в вкладке Logcat.

Если приложение уже запущено, то необязательно его перезапускать для работы в отладочном режиме. Вы можете нажать на кнопку Attach debugger to Android proccess , которая идёт сразу после кнопку с жучком.

В вкладке Logcat вы видите системные сообщения, включая сообщения от вашей программы, если вы использовали их своём коде. Для записи логов используется класс Log. Подробнее о нём в отдельной статье.

Логи можно просматривать также через панель Android DDMS (Dalvik Debug Monitor Server) - запускается через кнопку 5: Android в нижней части студии. В Android DDMS вы можете просматривать логи только нужного процесса, если нажмёте на кнопку Only Show Logcat from Selected Process .

Точки останова (Breakpoints)

Точки останова позволяет приостановить выполнение программы на нужной строчке кода, проверить значение переменных, запустить выражение и продолжать выполнение кода строчка за строчкой. Позволяет выявить ошибки, которые не удаётся вычислить простым просмотром кода.

Откройте свой исходник, определите строку кода, в которой хотите поставить точку останова и щёлкните по ней. Строка окрасится в жёлтый цвет. Щёлкните в левой части редактора кода в серой области. В этом месте появится красный кружок (повторный щелчок уберёт его), а строка примет розовый цвет. Точку останова можно ставить не только для исполняемого оператора, но и на комментарии.

Запустите приложение в отладочном режиме. Когда выполнение программы дойдёт до установленной точки останова, то студия прекратит дальнейшее выполнение приложения, кружок станет ещё более красным и строка будет выделена. И затем вы можете попытаться выявить причину ошибки.

Для просмотра всех точек останова и их настроек щёлкните на кнопке View Breakpoints в левой части панели Debug . Появится отдельное диалоговое окно.

После того, как вы установили точки останова, щёлкните кнопку Rerun для повторного запуска программы. Когда выполнение кода дойдёт до установленной точки останова, студия выполнит паузу и подсветить строку кода. Панель Debug позволит проверить переменную и выполнить код шаг за шагом.

Для проверки переменных раскройте список в панели Variables. Если панель не видна, то щёлкните кнопку Restore Variables

Для вычисления выражения в текущей точки щёлкните кнопку Evaluate Expression

Для перехода на следующую строку кода без выполнения щёлкните кнопку Step Over .

Для перехода на первую строку кода внутри метода щёлкните кнопку Step Into .

Для перехода на следующую строку за пределами текущего метода щёлкните кнопку Step Out .

Чтобы продолжить работу приложения в нормальном режиме, нажмите кнопку Resume Program .

Отслеживание потребления памяти

Студия позволяет также отслеживать потребления памяти объектами и показывает, какие классы и потоки используют объекты.

Запустите студия в отладочном режиме, щёлкните 6: Android, чтобы открыть панель Android DDMS. Выберите вкладку Devices | logcat, выберите ваше устройство из выпадающего списка, выберите вашу программу по имени пакета из списка запущенных программ.

Щёлкните кнопку Start Allocation Tracking . Начинайте пользоваться программой.

Повторно нажмите на предыдущую кнопку Stop Allocation Tracking. Студия покажет объекты, выделенные системой для работы.

Android Device Monitor

Для анализа потребления памяти, сетевого трафика, поведения приложения при входящих звонках можно использовать графический инструмент Android Device Monitor. Щёлкните кнопку Monitor на панели инструментов. Android Device Monitor откроется в новом окне. Опытные программисты увидят знакомое окно, когда работали с Eclipse.

Скриншоты и видео

Вы можете делать скриншоты и видео работающего приложения.

Запустите приложение и откройте панель 6: Android. Щёлкните кнопку Screen Capture в левой части панели.

По такому же принципу можно сделать видеозапись через кнопку

Реклама

developer.alexanderklimov.ru

Ускоряем Gradle Build в Android Studio: 9 способов увеличить скорость сборки

В этой статье мы рассмотрим систему сборки Android проектов Gradle. Также узнаем почему она такая медленная и рассмотрим 9 способов ускорить сборку Gradle проекта в Android Studio. 

Что такое Gradle?

Gradle — это система сборки проектов. Она является следующим шагом в эволюции инструментов сборки на основе виртуальной Java машины (JVM). Gradle вобрал в себя лучшие идеи существующих инструментов (Ant и Maven), а также добавил больше гибкости и свободы в конфигурации сборки.

Кроме преимуществ новый подход несет и новые проблемы: даже самый простой Gradle вызов происходит довольно медленно. На ноутбуке среднего класса запуск простой задачи с выводом списка доступных задач проекта занимает не меньше 10 секунд. Официальная IDE для разработки Android приложений — Android Studio и в ней используется Gradle.

Android проекты становятся все более сложными, набирает популярность модульный подход разработки, поэтому производительность в новых реалиях имеет решающее значение. Увеличение скорости сборки проекта всего на несколько секунд дает хороший прирост в производительности.

Как увеличить скорость сборки проекта

Ниже я собрал методы, которые использую при сборке Gradle проекта:

1. Убедитесь, что вы всегда используете последнюю версию Gradle.

Как правило, с каждым новым обновлением существует значительное улучшение производительности. Если вовремя ставить новые версии и обновления, которые Android Studio предлагает сразу после загрузки, то проблем с устаревшей версией Gradle быть не должно.

2. Постарайтесь свести к минимуму использование модулей

Иногда приходится форкнуть какую-то библиотеку, чтобы кое-что подправить или изменить под свои нужды. Избегайте таких ситуаций, так как сборка модуля занимает в ~4 раза больше времени, чем  любая jar или aar зависимость. Это происходит потому, что модуль каждый раз должен быть перестроен с нуля.

3. Включите автономную работу Gradle

Поставить галочку возле пункта автономной работы можно по пути: Preferences => Build, Execution, Deployment => Build Tools => Gradle. Это не позволит Gradle получить доступ к сети во время сборки и заставит его работать с зависимостями проекта в своем кэше.

Обратите внимание, что эта функция корректно работает только тогда, когда все зависимости уже успешно загружены и сохранены в кэше. Если вам нужно изменить или добавить новую зависимость в файлике build.gradle, то придется отключить опцию автономной работы — иначе «сборка завалится».

4. Используйте Gradle Daemon

Откройте файл gradle.properties в корне вашего проекта и добавьте следующую строчку кода:

org.gradle.daemon=true

Это позволяет сэкономить время, нужное для старта Gradle, так как он становится фоновым процессом. Следует отметить, что после добавление этой опции Gradle будет потреблять еще больше оперативной памяти при сборке проекта.

5. Используйте распараллеливание процесса сборки

org.gradle.parallel=true

Эта строчка позволяет выполнять компиляцию нескольких модулей одновременно. Обратите внимание, что это даст прирост производительности только в случае, если у вас сложный проект со множеством модулей.

6. Оптимизируйте конфигурацию проекта перед сборкой

Добавьте опцию org.gradle.configureondemand=true и Gradle сможет проверять изменения на уровне проекта и повторно использовать конфигурацию.

Gradle настраивает каждый проект перед выполнением задач независимо от того, действительно ли нужна она для конкретной сборки. Режим «Конфигурация по требованию» изменяет стандартное поведение. Как и в параллельном режиме, эта опция будет иметь наибольший эффект в проектах с множеством модулей.

7. Настройте параметры компиляции проекта

Замените стандартные настройки использования памяти на следующие:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Это позволит Java-компилятору использовать до 2Гб (параметр -Xmx2048m) доступной оперативной памяти. Разумеется, делать это можно только в случае, если у вас есть объем доступной памяти больше, чем 2 Гб.

8. Избегайте динамических зависимостей

Пример: compile 'com.android.support:design:+'

Вот этот плюсик (+) в конце говорит нам о том, что используется динамическая зависимость.

Динамические зависимости замедляют сборку, так как поиск последней версии происходит при каждом билде. Для повышения эффективности нам необходимо четко зафиксировать версию.

9. Используйте только нужные зависимости

Всегда добавляйте в проект максимально точно определенную зависимость. Например, нам в проекте нужны только карты от Google. Вместо того, чтобы писать так:

compile 'com.google.android.gms:play-services:10.0.1'

следует всегда писать так:

compile 'com.google.android.gms:play-services-maps:10.0.1'.

Надеюсь, эти способы оптимизации процесса сборки сэкономят вам парочку часов разработки 🙂

А какие способы ускорить Gradle используете вы в своих проектах?

Подписывайтесь на новые статьи по разработке под Android и программированию на Java!

Больше полезных статей!

javadevblog.com


Смотрите также