Как правильно сигнализировать о входящем звонке на Bluetooth? - PullRequest
0 голосов
/ 06 сентября 2018

В моем приложении 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 корректно завершает вызов.

Моя ошибка должна быть в сигнализации о входящем звонке. Как я могу сообщить гарнитуре, что звонок звонит, чтобы мультимедийные кнопки гарнитуры реагировали правильно?

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

Любая помощь с благодарностью!

Если вам нужно узнать больше или задать дополнительные вопросы, просто спросите!

Спасибо, Гри

...