В моем приложении Voip есть поддержка Bluetooth-гарнитур и автомобильных интерфейсов Bluetooth.
Как правильно сигнализировать о входящем (voip) вызове, чтобы входящий номер отображался на дисплее автомобиля?
Приложение использует pjsip, все работает нормально, даже аудио через Bluetooth.
При обнаружении входящего вызова открывается соединение Bluetooth и (возможно, здесь начинается моя ошибка) открывается аудиопоток для воспроизведения мелодии звонка (для параметра mode
установлено значение MODE_RINGTONE
в этом случае).
public void startBluetoothAudio(int mode) {
try {
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null) {
audioManager.setMode(AudioManager.MODE_NORMAL);
if (isSystemBluetoothEnabled()) {
appRedirected = true;
audioManager.setBluetoothScoOn(true);
audioManager.startBluetoothSco();
}
audioManager.setMode(mode);
}
} catch (Exception e) {
Uclog.error("Exception caught starting bluetooth audio.", e);
appRedirected = false;
}
}
Что тогда происходит:
Автомобиль мгновенно показывает это как текущий вызов (время идет отсчет), и кнопки «принять / отклонить» не появляются. только кнопка "зависания".
Когда я нажимаю трубку, звонок фактически устанавливается тогда. повторное нажатие на кнопку Hangup корректно завершает вызов.
Моя ошибка должна быть в сигнализации о входящем звонке. Как я могу сообщить гарнитуре, что звонок звонит, чтобы мультимедийные кнопки гарнитуры реагировали правильно?
Совершенно очевидно, что я здесь упускаю что-то важное, так как в настоящее время не знаю, как отправить входящий номер, чтобы он отображался на мониторе автомобиля.
Любая помощь с благодарностью!
Если вам нужно узнать больше или задать дополнительные вопросы, просто спросите!
Спасибо, Гри