Android铃声可通过手机和蓝牙耳机播放

时间:2020-07-13 19:32:45

标签: android sip voip ringtone ringtonemanager

我正在开发一个具有软件电话集成功能的应用程序,因此我试图在检测到来电时播放电话的默认铃声。我遇到的问题是,当我将某些AirPods连接到我的Pixel 3时,手机和AirPods会播放铃声。来自电话的声音由Ring音量控制,而通过AirPods发出的声音由Media音量控制。 AirPods用于电话和媒体音频的设置。

我尝试了2种单独的方法来实现,但是最终都得到相同的结果。首先,我尝试使用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()
        }
    }

这两种方法都产生相同的结果,因此我不确定从何而来。我想获得它,以便使用铃声音量通过连接的蓝牙设备播放铃声,类似于运营商呼叫的发出方式。

0 个答案:

没有答案