Обновить
128K+

Android *

Пишем под самую популярную мобильную ОС

146,94
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Формат публикации

31 метод эффективного программирования под Android

Время на прочтение5 мин
Охват и читатели24K
Данная статья является переводом очень хорошего топика с форума Stack Overflow. Так как английский язык не является для меня родным, то какие-либо непонятные мне места я просто пропускал, что бы не разгневать тех, кто его действительно знает. Статья содержит список советов и рекомендаций для начинающих разработчиков под Android.

Читать дальше →

Про поддержку «USB Mass Storage» в Ice Cream Sandwich

Время на прочтение5 мин
Охват и читатели77K
Из ранних обзоров девайсов (а именно Galaxy Nexus) на новой версии Андроида 4.0 (он же ICS, он же «мороженный бутерброд») выяснилось, что они не поддерживают такую замечательную фишку, как USB Mass Storage, т.е. использование телефона как флешки, без дополнительных ухищрений. Пользователи андроид-аппаратов, вплоть до версии 3.0 «Honeycomb» (а, как оказалось, изменения произошли именно в этой версии) знают, что чтобы перекинуть файлы на телефон или с него, достаточно было просто воткнуть его в компьютер без связи с тем какая операционная система или софт на нем установлены. Логично, что новости об исчезновении этой опции в новых версиях не вызвали энтузиазма среди пользователей андроида, и даже заставили многих задуматься о наличии некой проблемы или недоработки. К счастью, один их инженеров Google Дан Морилл (Dan Morrill) в комментариях к гневному посту в reddit, прояснил ситуацию, подробно объяснив о том, что, собственно произошло, и почему. По моему это очень любопытно, так что ниже перевожу перевод его комментариев.

Читать дальше →

LG GT540: Увеличение размера раздела /data за счет /system

Время на прочтение2 мин
Охват и читатели27K

Вступление


Пользователи андроид-смартфона LG GT540 знают, что официальная прошивка 2.1 перегружена предустановленным софтом, который в массе своей не нужен и бесполезен. Изначально мы имеем два раздела: /system (245 МБайт) и /data (138,5 МБайт). Весь предустановленный софт находится в /system.

Задачи и цели


Задача: удалить весь ненужный хлам из system и изменить размер этого раздела в пользу data.
Профит: получаем намного больше пространства на внутренней памяти, для инсталляции большего числа приложений, чем если бы мы могли это сделать ранее.

Сейчас у меня такая картина: /system 180Мбайт и /data 203.5Мбайт (и это не предел совершенства)


Читать дальше →

Печать файлов с Android-устройств через интернет

Время на прочтение4 мин
Охват и читатели119K
Понадобилось более активно использовать телефон (HTC Desire) и планшет (сейчас Asus Transformer, но подумываю о замене на Lenovo Thinkpad — очень хочется нормальный стилус и полноразмерный USB) в работе, потенциально — как замена ноутбуку (когда это возможно).
Для этого понадобилось реализовать возможность печати с андроида на домашний и рабочий принтеры. Попутно захотелось просто печатать с любых моих компьютеров на любые мои принтеры — и домашний, и рабочие. Если не изображать костыли вида почтового робота, который печатает все, что ему присылают, то очевидное решение — облачная печать (cloud printing).



Читать дальше →

Пишем функцию сохранения картинок на SD-карту

Время на прочтение4 мин
Охват и читатели28K
В процессе написания приложения для андроида у меня возникла задача сохранять произвольное изображение в файл на флешке. В этой статье я опишу, как я решил эту проблему, какие трудности встретились мне в процессе, и как они были решены. Хотелось бы отдельно отметить, что я .NET программист, судьба занесла меня в Java-мир только из-за необходимости создания небольших по размеру (поэтому monodroid сразу нет) и довольно простых с точки зрения интерфейса андроид-приложений. Это означает, что я тоже только учусь, а значит буду рад любым советом и замечаниям профессионалов.

Читать дальше →

Пробуем AndEngine и physicsbox2d

Время на прочтение5 мин
Охват и читатели6.1K
В этой заметке я хочу рассказать о существовании такого расширения для AndEngine как physics2box.
AndEngine — это бесплатный движок для игр под Andtoid, один из наиболее популярных. Для него существует ряд расширений, одно из них — physicsbox2d. Эта библиотека позволяет создавать физику в игровом мире.

Про AndEngine на Хабре уже отлично написал stepango . Я с удовольствием воспользовался его трудами, и, заодно, прикрутил physicsbox2d. Это оказалось довольно просто.

Я не берусь рассказать обо всех, или даже о какой-то части возможностей этих двух инструментов, а только подскажу интересующимся, с чего начать. А начать вот с чего:
Читать дальше →

Поставщики содержимого. Взаимодействие с контактами

Время на прочтение4 мин
Охват и читатели5.2K
image
Доброго времени суток, уважаемые Хабровчане!

Как все вы знаете — Android это потенциально развивающаяся и конкуретноспособная операционная система. Разработчиков под эту систему с каждым днем ставновится все больше и больше. Хоть я и начинающий разработчик под Android, я не буду рассказывать вам, как установить Eclipse и ADT под него.

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

Читать дальше →

Шаблоны проектирования при разработке под Android. Часть 4 — Сохранение данных. Domain Model, Repository, Singleton и BDD

Время на прочтение10 мин
Охват и читатели15K
Сразу хочу сказать, что в статье я не буду описывать как надо работать с Data Provider-ом. Это можно найти и в документации и в многочисленных статьях в интернете.
Здесь я расскажу про шаблоны проектирования Domain Model, Singleton, Repository, про подход Behavior Driven Development (BDD) и как я их использовал в своей программе.

Шаблон Domain Model используется в тех случаях когда разработка ведется от предметной области, в таких случаях есть понятная предметная область и ее термины просто воплощаются в байтах.

Например, в моей программе предметная область состоит из данных расписания, заданного в виде нескольких будильников, для будильника можно задать дни недели и время, а также признак «будильник включен». Так же есть несколько алгоритмов, например получить будильник, который сработает следующим и дату и время его срабатывания. Поскольку будильник может дремать, получается что у одного будильника есть несколько срабатываний с разными действиями: первое срабатывание, дремание, и последнее дремание, когда кнопка дремать уже не доступна. Поэтому есть еще алгоритм поучения ближайшего абсолютного времени и действия.
Так же есть алгоритмы для создания нового будильника и редактирования/удаления существующих.

То есть в моей предметной области есть данные в виде нескольких будильников и несколько алгоритмов, которые реализуют логику предметной области.

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

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

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

Такой подход называется Behavior Driven Development. Его достоинство в том, что я могу тестировать модель в терминах предметной области, то есть в модульных тестах я имитирую обычное поведение пользователя. Благодаря тому, что это реализовано через механизм модульных тестов, я перед каждым релизом могу эти тесты прогнать и быть уверенным, что моя программа программа нормально отрабатывает основные действия пользователя.

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

Выпущены исходники Android 4.0

Время на прочтение1 мин
Охват и читатели4.5K
Случилось то, чего все давно ждали — стали публично доступны исходники ОС Android 4.0.1 Ice Cream Sandwich. Об этом совсем недавно стало известно из Google Groups. Получить исходники можно следуя инструкции на сайте Android Open Source Project.

Android — новый Windows

Время на прочтение3 мин
Охват и читатели5.9K
Накануне выхода аж четвертой (если считать только целочисленные) версии операционной системы для мобильных устройств от корпорации добра, я, наконец то собрался и приобрел себе андроидофон. Он пополнил зоопарк из iOS и Windows Mobile 6 (так что мне есть с чем сравнить). Сразу же после покупки (как, в общем- то и перед ней) началось освоение особенностей gingerbread'а, традиционное чтение форумов и faq'ов, и, вместе со знаниями об особенностях, слабостях и программном обеспечении, росло и усиливалось чувство дежавю.
Читать дальше →

PhoneGap — решение проблем в первом приложении

Время на прочтение4 мин
Охват и читатели16K
PhoneGap — HTML5 платформа для разработки приложений под 7 существующих мобильных платформ. На днях они обновились до версии 1.2.0 и переехали под крыло Апачи. Адрес репозитория также обновился. На сайте в документации замечательная пошаговая инструкция для создания первого приложения, так что на вводной части больше не будем останавливаться, об этом уже писали. Мелкие проблемы начинаются, когда немножко выходишь за рамки стандартных возможностей платформы, но все решаемо.

Постановка задачи


Захотел я сделать нидерландско-русский словарь под Андроид за неимением приличного на рынке. Мне попался словарь отсканированный с хорошего бумажного. Процесс извлечения информации с картинок заслуживает отдельной статьи. Поэтому пропустим эту часть. В качестве первого этапа сделал словарь в виде html странички. По инструкции по созданию «hello world» сделал приложение и оно успешно запустилось. Дальше надо было обработать напильником и довести до ума детали.
ручная работа - резьба по дереву

WIMM One: наручный Android мини-компьютер

Время на прочтение1 мин
Охват и читатели10K
Компания WIMM представила комплект разработчика «WIMM One Developer Kit» для своего устройства WIMM One — мини-компьютера, который работает под управлением модифицированной ОС Android от Google.
Мини-компьютер можно носить как часы, для этого в комплекте есть ремешок.
Достаточно интересное устройство, применения которого будут ограничиваться только вашей фантазией.
Более полная информация под катом.

image

Читать дальше →

Тебя арестовали? Для этого есть Android-приложение

Время на прочтение1 мин
Охват и читатели3.3K


Бруклинский программист Джейсон ван Анден сделал замечательное Android-приложение, незаменимое для всех граждан, кому грозит арест. Программа I'm Getting Arrested позволяет за пару секунд разослать SMS всем, кого вы указали в списке: жене, друзьям, начальнику на работе и адвокату. Текст сообщения и список номеров лучше указать заранее. По отзывам пользователей из России, на номера с префиксом +7 сообщения тоже нормально отправляются.
Читать дальше →

Ближайшие события

Самиздат — библиотека в кармане. Версия 2.0.0 Beta

Время на прочтение1 мин
Охват и читатели6.8K
Добрый день всем!

Наконец то нашлось немного времени и полностью переписана бесплатная программа «Самиздат» для чтения произведений с моего любимого портала http://samlib.ru/. Программа работает с телефонами Андроид. Beta версия доступна по ссылке или воспользуйтесь QR кодом:

image image

image

Работающий Pull to refresh

Время на прочтение3 мин
Охват и читатели13K
Это рассказ о том, как получилась работающая реализация Pull to refresh под Android. Совсем не будет примеров кода. Немного картинок и в конце статьи ссылка на архив проекта.

Недавно встала необходимость встроить в текущее приложение Pull to refresh. Это сейчас модно, пользователи привыкли, и для твиттер-клиентов уже стало стандартом. Поиск готовых решений в сети вывел на единственный вариант — open-source проект Johan Nilsson android-pulltorefresh на Github.



Читать дальше →

Реализация режима энергосбережения DEEP IDLE в ядре Linux

Время на прочтение2 мин
Охват и читатели4.5K
Разработчик, который зарегистрирован на форуме xda-developers.com под ником Ezekeel, попытался разобраться, почему его Nexus S слишком быстро съедает заряд аккумулятора в режиме ожидания. В техническом руководстве устройства указано, что устройство поддерживает режимы работы NORMAL, IDLE, DEEP IDLE, STOP, DEEP-STOP и SLEEP. Но беглое изучение ядра Linux показало, что в операционной системе имеется только поддержка IDLE. В этом режиме отключается лишь процессор, а остальные модули продолжают потреблять энергию. Ezekeel решил исправить этот недостаток.
Читать дальше →

HTC Edge — первый четырёхядерный смартфон

Время на прочтение1 мин
Охват и читатели3.7K
Встречайте, HTC Edge — новый флагман от HTC — первый четырехядерный смартфон в компании. Да и скорее всего во всем мире.

image
Читать дальше →

Aibolit для android

Время на прочтение4 мин
Охват и читатели2.8K
Как же утомителен процесс инициализации UI при разработке android-приложений. Раз за разом приходится писать горы шаблонного кода: findViewbyId, setOnClickListener, getResources().getDrawable, … Возникает естественное желание переложить эту работу на плечи AOP. Беглый поиск готовых решений, адаптированных под android, навел разве что на RoboGuice, о котором уже упоминалось на хабре. Однако библиотека имеет значительный размер (~0.5 mb), что для многих приложений недопустимо много, и к тому же требует наследования ваших классов application и activity от RoboApplication и RoboActivity, чего не всегда хочется делать. Потому и появился Aibolit, легкая (~40kb), простая в использовании и функциональная библиотека, использующая dependency injection для инициализации UI на android.

Читать дальше →

Android Market вскоре получит возможность оплаты с помощью PayPal

Время на прочтение1 мин
Охват и читатели1.1K


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

Недавно засветившийся и уже начавший появляться на некоторых устройствах Android Market 3.3.11 в своём коде содержит упоминания PayPal. В файле .apk нового магазина приложений Android Market замечен ряд строк, указывающих на платёжную систему. Таким образом, появление возможности оплаты при помощи PayPal может уже скоро стать реальностью.

Сейчас некоторые пользователи имеют возможность покупать Android-приложения с помощью системы Checkout, которая рассматривается в качестве конкурента PayPal. В то же время Google заключает партнёрские соглашения с операторами об использовании их счетов в оплате приложений, так что поддержка PayPal является разумным шагом, который призван повысить доходы разработчиков и самой Google.

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

Источник: softpedia.com

Генерация версии android приложения из ревизии subversion и git

Время на прочтение6 мин
Охват и читатели4.1K
Когда пользователи сталкиваются с проблемами — всегда хочется точно знать какой именно версией ПО они пользуются. При использовании системы контроля версий и автоматической нумерации версий ПО, такую информацию можно предоставить пользователям, а в случае необходимости просто попросить продиктовать строку.

О том, как можно пронумеровать свой android проект написано здесь и здесь. В обоих статьях рассмотрен пример получения версии проекта с помощью 'svn info', причём в первой статье автор жалуется на отсутствие SvnAnt, а во второй статье автор замечает проблему, связанную с использованием 'svn info'. Проблема связана с тем, что 'svn info' выдаёт неточные сведения о ревизии рабочей копии.

Далее рассмотрен пример решения этой проблемы достаточно простым способом.
UPD: добавлен скрипт для git.
Читать дальше →