» Программирование Android

Разбор приложения для Android на примере игры Судоку

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

Что нужно знать, прежде чем приступить к разработке программ для Android? Android – это по-своему уникальная операционная система со своими особенностями, и есть некоторые трудности, с которыми разработчику так или иначе придется столкнуться: во-первых, для установки приложения нужно в несколько раз больше места, чем его оригинальный размер; во-вторых, если свободного места на встроенном флэш-накопителе становится мало, то скорость работы с файлами заметно снижается; в-третьих, каждый запущенный процесс использует занимает в оперативной памяти некоторое место, зачастую от 16-24 Мегабайт.

Также в обязательном порядке нужно усвоить основные принципы разработки эффективных Android-приложений. Это подробно описано в книгах Д. Блоха «Effective Java» и И. Салмре «.Net Compact Framework». Мы же приведем некоторые ключевые принципы, итак:

-всегда нужно стремиться экономить системные ресурсы;

-постоянно нужно поддерживать обратную связь с пользователем, выдавать реакцию на его действия в режиме реального времени;

-основной акцент должен быть поставлен на производительность приложения, потому оптимизировать её надо сразу, и никогда не откладывать на потом;

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

-нужно стараться не создавать лишних объектов;

-методы очень рекомендуется делать статичными;

-желателен прямой доступ к полям, а не через методы посредники;

-для констант нужно использовать static final;

-если достаточно просто переменной целого типа, то не стоит использовать enum.

Теперь несколько слов об особенностях самой операционной системы Android. Как известно, Android в основе имеет Linux. Между самим приложением и ядром, его исполняющим, лежит «слой» API и библиотек на нативном коде. Приложение же выполняется на виртуальной машине (Dalvik VM).

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

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

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

Разберемся с процессом запуска новой игры. Пользователь начинает новую игру, нажав на кнопку «New Game». Обработчик нажатия – медот класса Sudoku, onClick. После этого вызывается метод openNewGameDialog – он показывает диалог выбора уровня сложности, после чего запускает игру с выбранным значением. Диалог строится при помощи упомянутого класса AlertDialog:

Несколько слов о музыке. Для её воспроизведения используется класс MediaPlayer. Музыка для приложения добавляется в ресурсы. Для этого копируем необходимые аудиофайлы в форматах WAV, MP3, AAC, AMR, WMA, MIDI, OGG в директорию res/raw. Для начала, создаем экземпляр класса MediaPlayer:

            mp = MediaPlayer.create(context, resource);

Context – обычно класс, который производит инициализацию запуска музыки, а resource – идентификатор ресурса с музыкой. Для того, чтобы управлять воспроизведением, используются методы start, stop, release.

В нашей игре воспроизведение музыки происходит в главном меню, запуском из класса Sudoku, а также в игровом процессе – запуском из класса Game. Для того, чтобы управлять воспроизведением, создан класс Music, который содержит в себе статический экземпляр MediaPlayer. Это даёт возможность ограничить себя от создания отдельного проекта для запуска аудиоресурса.

В классах Game и Sudoku переопределены методы onResume и onPause – музыка при старте Activity запускается, и останавливается при его деактивации.

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

Макс Кузменцов
2013-07-24 20:18:55
С Хабра новость, Господа! ФУУУУУУУУУУУУУУУУУУУУУУу
Павел Немков
2014-07-08 18:10:41
Я вообще давно хотела попробовать сделать своё приложение на андроид. Языков программирования, к сожалению, я не знаю. Пробовала делать на unity 3d, с помощью исходников, но ничего так и не вышло. Недавно видела в инете программы, с помощью которых можно сделать нормальные приложения и без знания этих языков. К примеру, нашла программы «App maker» — зарубежный софт, но стоит он по 3000, а то и 6000 рублей. Нашла ещё их программы на сайте http://appmk.esy.es/ . Не сочтите за рекламу, но, может кто-то уже прибегал к их услагам? Буду рада ответу.