我一直在处理一个VoIP应用程序(通常是在扬声器模式下操作)。我面临的问题是,在不同型号的智能手机上,录音的行为是完全不同的。
让我再加上一张图片,然后解释一下:
大多数android智能手机都有两个麦克风。一个在top,一个在底部。当我开始捕捉音频时,有些手机从顶部麦克风捕捉音频,而另一些则从底部麦克风捕捉音频。还有一些手机是,可以从两个麦克风、上捕捉音频。
我所面临的问题是当我把手机放在桌子上,屏幕边朝上的时候,音频质量和声音的衰减。一些手机从底层麦克风捕捉,这提供了良好的质量,而另一些从顶部麦克风捕获,这会引起问题。
希望你们能理解这个场景。下面是我需要你帮助的事情
我试过在相同的设备上使用Whatsapp,它能很好地捕捉音频,但在我的情况下没有发生。
谢谢。
发布于 2022-10-26 11:55:53
因此,在对Stackoverflow进行研究并得到一些有价值的答案之后,我们发现了一些有价值的答案。我终于成功地设置了所需的麦克风来捕获输入音频。这个问题How to select physical microphone and audio recording path in Android帮助我获得了想要的信息。
我运行以下代码:
val audioDeviceInfo = audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)
var audioInfo :AudioDeviceInfo? = null
for (dev in audioDeviceInfo) {
if(dev.address == "bottom"){
Log.d("TAGAudioInfo", dev.id.toString())
audioInfo = dev
}
}
那么这个代码是做什么的呢?
此代码获取当前连接到android手机上的所有输入音频设备。返回的列表包括内置设备和外部设备,如麦克风。现在重要的是AudioDeviceInfo
address
属性。这个属性告诉我们输入设备的物理位置。
对于麦克风,有两个主地址。
那么,在得到这些信息之后,接下来怎么办?
下一步是将此麦克风设置为捕获音频的首选设备。麦克风的设置很容易做到以下几点:
audioRecord.setPreferredDevice(audioInfo);
要进行交叉验证,您可以使用Google上的OboeTester应用程序,该应用程序允许您选择任何源来捕获音频。
因此,通过这种方式,我解决了从想要的麦克风中获取音频的问题。
此外,请注意,这是不同的制造商的设备制造商。即使在选择了bottom
麦克风之后,一些设备仍然使用这两种麦克风来捕获音频。但这并不影响我,因为我的主要目的是从底部的麦克风捕捉音频是解决的。
https://stackoverflow.com/questions/74135716
复制相似问题