如何在API 21之后使用AudioTrack.setVolume处理音频通道音量

VMM*_*MMF 5 audio android smartphone speaker

我正试图在我的智能手机只有一个立体声声道(扬声器)上重现单声道wav文件.我曾经控制过这个

AudioTrack.setStereoVolume (float leftGain, float rightGain)

通过将其中一个增益设置为零.查看旧代码我得到了一个弃用的方法警告,在检查Android SDK文档后,我发现它现在由以下人员完成:

public int setVolume (float gain)

在API级别21中添加.此API优于setStereoVolume(float,float),因为它可以更优雅地缩小为单声道,并且可以扩展到立体声之外的多声道内容.

我的问题是:

  1. 我如何单独控制通道音量,以便在给定时间只有一个通道再现,因为我应该使用新版本的方法同时控制两个通道?
  2. 如果某个设备有立体声或单声道扬声器,有没有办法检查Android API?
  3. 还有另一种方法可以通过单个扬声器重现单声道音频吗?