Взгляд разработчика на фрагментацию Android

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

Ползунок громкости

Основная и самая большая проблема Android кроется глубже, чем просто «большое количество девайсов и сборок ОС». Разработка простого музыкального приложения для «зеленого робота» может стать ночным кошмаром разработчика — и все благодаря фрагментации платформы, в которой даже ползунки изменения громкости фрагментированы. Почему? Потому что Google не озаботилась сделать единый для всех устройств механизм изменения громкости звука.

Журналист сайта Evolver.fm Элиот ван Бускирк (Eliot van Buskirk) побеседовал с разработчиком одного очень популярного музыкального приложения для Android, и тот высказал свои мысли как о регуляторах громкости, так и безнадежности Android в целом. Вот, что он говорит по основному пункту своих недовольств — управлении громкостью. Соглашаться с этим или нет — решать вам.

● ОС Android предлагает только один API, с помощью которого можно реализовать управление громкостью воспроизводимых звуков. Проблема заключается в том, что остро стоит потребность хотя бы в двух API для этих целей: управления общей системной громкостью и громкостью воспроизводимого медиаконтента. Наличие только одного API означает для разработчика то, что ему придется собственноручно «дописывать» недостающие, но необходимые программные компоненты. К сожалению, каждый делает это по-своему, и нет никакой возможности отследить взаимосвязь, не сравнив оные у каждого устройства. Что еще хуже — Samsung. Корейцы используют совершенно неэффективный метод управления уровнем громкости, что в итоге приводит к «аудиохаосу».

● Что касается воспроизведения аудио в реальном времени, то и здесь Android чрезвычайно неэффективен. Операционная система добавляет приблизительно 7 секунд задержки, «железо» еще около 5 секунд, в итоге мы получаем около 12-13 секунд задержки. Нам удалось снизить задержку примерно до половины секунды, что мы считаем весьма неплохим результатом на данный момент. Стоит отметить, что iPhone не обладает какой-либо ощутимой задержкой.

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

С того момента, как в Google решили не использовать отдельные API для управления громкостью системы и воспроизводимого медиа, производители Android-устройств представили сотни разных альтернативных видений того, как это должно быть реализовано. А эта задержка! Для аудиопотока в реальном времени все, на что могут надеяться разработчики, это уменьшение общей задержки до 500 миллисекунд. Но заметьте, достичь этого вы сможете только после часов оптимизации. Без оптимизации готовьтесь к 13-секундной задержке.

фрагментированный энди

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