Thursday, March 28, 2013

Превращаем Android-смартфон в автомобильный видеорегистратор


В начале марта запустил, наконец, на Play Store видеорегистратор, который вместе с партнерами разрабатывали еще с осени. В общем, никакой магии: работа с камерой, GPS, карты, медиаплеер, графопостроитель для статистики скорости. Ну и кастомный UI, который готовил профессиональный художник.

Технически наибольшую сложность представляет работа с камерой и сопровождающим ее MediaRecorder – Android SDK выдвигает своеобразные требования к их настройке, и, судя по всему, некоторые производители смартфонов трактуют их по-своему. Стабильности во включении записи видео на некоторых особо «чувствительных» аппаратах удалось добиться только экспериментальным путем, переставляя порядок установки свойств в MediaRecorder. Хотя и это не гарантирует 100% результат, в креш-репортах, которые мы собираем с помощью ACRA, иногда все еще проскакивают невразумительные коды ошибок инициализации.

Другая технически интересная деталь в этом приложении – запись видео в фоновом режиме. Формально запись видео в фоне ставит под угрозу приватность пользователя, и на странице поддержки Android даже голосуют за нее как за отдельную фичу – ввести соответствующий <uses-permission>. Пока же приходится делать костыль путем «сворачивания» SurfaceView с предпросмотром с камеры (что, вероятно, должно гарантировать осведомленность пользователя о ведущейся видеозаписи) в 1 точку на экране, помещенную в WindowManager . Такой трюк работает на Android 2.*, но в Android 4 он крешится без веских объяснений, потому здесь эту возможность мы пока отключили.