Ещё 10 минут сна

«Верите ли вы в фей? Скорей скажите, что верите. Если верите, хлопните в ладоши!»

Джеймс Мэттью Барри, автор сказки «Питер Пэн»

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

Принцип работы в следующем. Начинаю проигрывать мелодию будильника и одновременно с этим стартую аудиозапись с микрофона. Если мы получаем с микрофона достаточно большую амплитуду, которую мы считаем хлопком, то будильник переводится в режим snooze. Но было две проблемы, которые мешали работать такому алгоритму работать правильно.

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

Вторая причина ложных срабатываний — это эхо. Звук, который проигрывает мобильник, подмешивается к звуку окружающей среды и в таком виде поступает на вход микрофона. Перспектива собственноручно компенсировать эхо меня совершенно не привлекала, хотя такая возможность тоже есть в Android SDK. Я подобрал пару параметров для AudioManager, которые позволили мне снизить влияние эха.

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

Скачать мой будильник | Скачать исходники

Запись опубликована в рубрике Uncategorized с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *