← Архив

Тег

java

Записей: 48

Будни юнитишника: сохраняйте глобальные ссылки на JNI объекты

Когда вы получили IntPtr на нативный Android объект, то GC может в какой-то момент почистить её (скорей всего, после выхода из локального скопа). Из-за того, что я одну ссылка не сохранил, дебажил код много часов, чтоб причину крашей найти.

Ещё хуже то, что стектрейс при краше никак не помогает.

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

Android P: новые возможности для работы с текстом

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

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

Unity3d: плагин для Android push notifications

Android-push

В Unity3d есть классы для работы с пушами под iOS. Но нет стандартных средств сделать тоже самое и под Android. Приходится писать свой плагин на Java, который затем можно закинуть в Plugins/Android и делать native вызовы к нему. Если вас интересует, как создать свой плагин (в частности, плагин для отправки локальных пушей), заходим под кат.

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

Быстрая установка Java на Linux

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

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

Android: решение проблемы с крашами при проверке лицензии на 5.0

Представьте себе компанию, у которой есть какое-то SDK для абстрактного устройства. После обновления прошивки этих устройств до последней версии начинают крашится некоторые приложения. Эта компания знает о проблеме, но не обновляет sdk для исправления оной. Да, речь про Google. Уже не первый раз сталкиваюсь с такой проблемой, когда их сорсы допиливать приходится =/

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

Android: новый экспериментальный инструмент Jack and Jill

Jack and Jill
Типичный процесс сборки с помощью Jack and Jill

Google работает над новым набором инструментов для разработки под Android, который позволит сократить время сборки проекта, а так же уменьшить зависимости между другими инструментами. Были представлены Jack (Java Android Compiler Kit) and Jill (Jack Intermediate Library Linker) - два новых инструмента.

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

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

Что нового в Android 5.0 Lollipop

ResizableImageView

Android 5.0 Lollipop - крупнейшее обновление Android на сегодняшний день, включающее новый визуальный стиль, повышение производительности, и многое другое. Новый концепт Android 5.0 Lollipop будет применяться для смартфонов и планшетов, а также будет основной особенностью Android Wear.

Навигационные кнопки на экране были упрощены до базовых треугольника, круга и квадрата. Минимализм во все поля ~^__^~

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

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

Android: Overscroll Listview

ResizableImageView

Возникла необходимость overscroll'а у ListView. Сделать так, чтобы работало на 2.3+, оказалось не так-то просто =/

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

Компонент работает на Android устройствах с 2.3+

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

Android: доступ к скрытым директориям и SQLite базе в File Explorer в DDMS

Очень хочется именно в Eclipse просмотреть какие-то файлы на устройстве или содержание таблиц базы данных. Просматривать файлы на самом телефоне не вариант. Так как же отобразить скрытые (и системные) директории в File Explorer в DDMS?

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

Android: ResizableImageView - растянуть изображение на всю ширину

ResizableImageView

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

Если делать с помощью стандартных MATCH_PARENT или WRAP_CONTENT, то ничего путного не выйдет. Что же делать?

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

Android: прикрепить MediaController к VideoView, чтобы не слетало позиционирование

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

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

Android: FlowLayout с автоматическим переносом элементов

Swen Vincke

Порой необходимо создавать элементы динамически, или же размер элементов может сильно варьироваться. Как же тогда организовать перенос элементов на другую строку? Ни LinearLayout, ни RelativeLayout этого не позволяют.

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

Android In-app purchasing: платное отключение рекламы в своём приложении

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

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

Basic Authentication в HttpClient, HttpPost, HttpGet в Java

Понадобилось для одной задачи получать данные из сервиса в сети. Но там была необходима аутентификация. Пару часов провозился пытаясь с хэдерами разобраться. Оказалось всё как обычно: есть уже готовые механизмы для этого.

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

Android: послать GET/POST запрос с помощью AsyncTask

Чтобы в приложении выполнять тяжелые задачи можно вводить отдельный поток и использовать Handler для обратной связи и обновления экрана. Для решения подобных задач сделали отдельный класс – AsyncTask. Т.е. его цель – это выполнение тяжелых задач и передача в UI-поток результатов работы. При этом нам не надо задумываться о создании Handler и нового потока. Для отправки запросов вроде как тоже рекомендуется использовать AsyncTask.

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

Android NDK: работа с OpenAL и постепенная подгрузка WAV

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

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

Основы Android NDK: работа с OpenAL и форматами WAV, OGG

Для порта игры пришлось работать с OpenAL. Можно конечно было выкинуть весь C++ код и переписать всю работу со звуков на Java, но это не интересно. Решил поделиться опытом и показать как на Android работать с OpenAL и форматами WAV, OGG.

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

Основы Android NDK: работа с C/C++ кодом

Android NDK path

Использование нативного кода, написанного на C или С++ — это тема, которую многие разработчики не затрагивают вовсе. Но порой использование C++ в приложениях намного упрощает/ускоряет разработку. В этой статье будут рассмотрены основные принципы работы с native кодом.

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

libGDX: Часть 7.1. Использование AdMob

AdMob в своей игре

Ради интереса решил посмотреть сколько в принципе можно заработать на рекламе в не очень раскрученном приложении. Как раз дописывал Lode Runner'а, в него и запихнул. Решил показать, как добавить в свои игры на LibGDX рекламу.

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

libGDX: Часть 6.2. Использование фильтров в Box2D

Box2D Filter

В прошлой статье рассматривалась работа с ContactListener. Вот только примеры, которые я использовал, были не совсем верно выбраны. В Box2D есть намного более удобные средства для фильтрации столкновений, а именно - фильтры. О них и напишу в этот раз.

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

libGDX: Часть 6. Работа с Box2D

Box2D Test

Прошлые статьи в целом были вводными. Но только при помощи них уже можно написать свою игру. Правда в этом случае придётся всю физику самому продумывать. Для написания многих типов игр идеально бы подошёл встроенный в LibGDX движок - Box2D. О нём и пойдёт речь в этой статье.

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

libGDX: Sprite и поворот

Попросили для Bomberman'a сделать возможность управлять стрелками, а не джоем. При чём, хотели возможность самим задавать положение всех 4-х стрелок. Вместо того, что бы рисовать все 4, тем самым забивая лишними битами атлас, решил всего одну стрелку сделать, а потом просто поворачивать. Довольно забавно ведут себя методы по повороту спрайта.

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

libGDX: Часть 2.1. Архитектура игры на основе scene2d

Та архитектура, что я привёл довольно хороша, но избыточна. Зачем изобретать велосипед? В действительности в libGDX есть пакет scene2d, который позволяет на его основе создать хорошую архитектуру.

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

libGDX: Часть 4. Спрайты, Текстуры, Регионы, Атлас

Часть 3. Пример.

При написании игры больше всего времени тратится именно на работу с графикой. В этой статье рассмотрим как работать с графикой (текстурами, регионами и т.д.) в libGDX. Помимо описания принципов основных дам пару советов об оптимизации рендеринга.

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

libGDX: Часть 3. Обзор модулей

libGDX - Диаграмма модулей

Статья, по сути, являтся переводом официальной документации. Может что-то будет отличаться. libGDX включает в себя несколько модулей, предоставляющих определённые возможности при разработке. Думаю, очевидно, какие модули должны присутствовать в такого рода библиотеке.

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

libGDX: Часть 2. Архитектура игры

После рассмотрения жизненного цикла игры сразу стоит рассмотреть архитектуру (каркас). Вообще Роллингс и Моррис (Rollings and Dave Morris) в своей книге "Game Architecture and Design" подробно описывают создание игр с точки зрения архитектуры. В своё время я правда не особо проникся этой книгой, но вам может понравится. Я же опишу архитектуру, которую стараюсь использовать сам.

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

libGDX: Часть 1. Жизненный цикл игры

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

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

libGDX: Введение

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

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

Bomberman v1.2: добавлена анимация взрыва

Bomberman

Реализовал анимацию взрыва. Оказалось всё довольно-таки не просто. Обойтись одним объектом не получалось никак. Да и ещё сложность была в том, что анимация взрыва по краям и в центре разная. Но, обо всё по порядку.

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

Bomberman v1.1

Доработал слегка управление, слегка анимацию оптимизировал. Контролы будут снизу справа (установка бомбы, взрыв и т.д). Для управления пока тачем. Если нажали левее перса, то идёт влево, если выше, то вверх и т.д. Если есть клава, то двигаться можно стрелками, а бомбу устанавливать пробелом.

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

libgdx: переключение между экранами

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

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

Android: использование Audio в libgdx

Озвучку движения игрока сделал. Слегка пришлось повозиться, правда (: Обычно я эмулятор использовал только для игр, но они, как выяснилось, позволяют дебажить игры и вытаскивать из них ресурсы =D

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