Android воспроизведение звонка с телефона и Bluetooth-гарнитуры - PullRequest
1 голос
/ 13 июля 2020

Я работаю над приложением с интеграцией софтфона, поэтому я пытаюсь воспроизвести мелодию звонка телефона по умолчанию при обнаружении входящего вызова. Проблема, с которой я столкнулся, заключается в том, что когда я подключаю несколько AirPods к своему Pixel 3, рингтон воспроизводится через телефон и AirPods. Звук, исходящий из телефона, регулируется громкостью звонка, а звук, поступающий через AirPods, регулируется громкостью мультимедиа. AirPods настроены для телефонных звонков и мультимедийного звука.

Я пробовал два разных подхода к этому, но оба в итоге дали одинаковый результат. Сначала я попытался использовать экземпляр MediaPlayer и установить для AudioAttributes значение AudioAttributes.USAGE_NOTIFICATION_RINGTONE:

    val uri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE)
    val mp = MediaPlayer().also {
        it.setAudioAttributes(AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
            .build())
        it.setDataSource(this, uri)
        it.prepare()
    }

    findViewById<AppCompatButton>(R.id.start).also { button ->
        button.setOnClickListener {
            mp.isLooping = true
            mp.start()
        }
    }

    findViewById<AppCompatButton>(R.id.stop).also { button ->
        button.setOnClickListener {
            mp.stop()
        }
    }

Я также попытался использовать метод RingtoneManager.getRinger ():

    val uri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE)
    val ringer = RingtoneManager.getRingtone(this, uri)

    findViewById<AppCompatButton>(R.id.start).also { button ->
        button.setOnClickListener {
            ringer.play()
        }
    }

    findViewById<AppCompatButton>(R.id.stop).also { button ->
        button.setOnClickListener {
            ringer.stop()
        }
    }

Оба из этих подходов дает тот же результат, поэтому я не уверен, где отсюда go. Я бы хотел, чтобы звонок воспроизводился через подключенное устройство Bluetooth с использованием громкости звонка, аналогично тому, как происходит звонок оператора связи.

...