You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Linphone SDK获取Android音频设备的常规名称

Android端Linphone SDK获取可读音频设备名称方案

你当前的问题是Android端通过driverName拿到的是音频驱动标识(如AAudio、Audio),而非iOS端那样的设备友好名称(如Speaker)。原因是Linphone在Android和iOS上对driverName的实现逻辑不同:iOS端该字段直接返回设备名称,而Android端返回的是底层驱动类型。

解决方案1:使用name属性(推荐)

Linphone的LinphoneAudioDevice类提供了name字段,在Android端会返回设备的友好名称(如"Speaker"、"Earpiece"、"Bluetooth Headset"等),替换代码中的driverName即可:

val devices = core.audioDevices
val devicesMap: Map<Int, String> = devices.associateBy({ it.type.ordinal }, { it.name })

解决方案2:自定义类型映射(按需使用)

如果name返回的内容仍不符合需求,可以根据设备的type枚举值手动映射为你需要的名称:

val devices = core.audioDevices
val devicesMap: Map<Int, String> = devices.associateBy(
    keySelector = { it.type.ordinal },
    valueTransform = { device ->
        when (device.type) {
            LinphoneAudioDevice.Type.Earpiece -> "听筒"
            LinphoneAudioDevice.Type.Speaker -> "扬声器"
            LinphoneAudioDevice.Type.Bluetooth -> "蓝牙耳机"
            LinphoneAudioDevice.Type.Microphone -> "内置麦克风"
            // 其他设备类型可根据需求补充
            else -> device.name ?: device.driverName
        }
    }
)

说明

Android端的driverName用于标识底层音频驱动框架(如AAudio、OpenSL ES),并非面向用户的设备名称;而name字段才是Linphone为Android端提供的设备友好名称,和iOS端driverName的行为对齐。

内容的提问来源于stack exchange,提问作者steind.VY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:37:12