Что это
Инструменты, чтобы написать часть Android-приложения на C++. Нужны там, где важны время и точность: звук, видео, работа с оборудованием.
Как используем
В OshaPlay на C++ через NDK написаны поток звука на USB-ЦАП с кольцевым буфером и собственный ресемплер с искажениями ниже −130 дБ.
Где это нужно бизнесу
- Приложение работает с оборудованием напрямую, и задержки в миллисекунды ломают результат.
- Нужна обработка сигнала с точностью, которую сложно получить в обычном коде приложения.
Как мы это используем
В OshaPlay на C++ через NDK написаны поток звука на USB-ЦАП с кольцевым буфером и собственный многофазный ресемплер с искажениями ниже −130 дБ для частот 88,2 и 176,4 кГц. Звук уходит изохронными передачами через USB Host API, а частота следует за треком. Интерфейс и логика при этом на Kotlin.
Типичные проблемы
- Проверка на реальном железе. Прямой вывод в эмуляторе проверен только для случая «ЦАПа нет», а работа с настоящим донглом видна по отчётам с телефона.
- Поддерживается не всё. Прямой вывод умеет ЦАП по UAC2 с адаптивной или синхронной передачей; асинхронные ЦАПы и UAC1 пока играют через систему.
Когда это не нужно
Для обычного приложения — каталог, форма, кабинет — C++ не нужен: Kotlin справляется и проще в поддержке.