将两个立体声通道组合成单声道?

an0*_*00b 5 audio android

我梳理了AudioManager,找不到任何API或设置来从立体声切换到单声道(两个声道的信号都是两个立体声声道的总和).

完全可以在Android中实现这一点吗?

Jas*_*ank 3

AudioManager 类中有一个方法setParameters可以做到这一点。不幸的是,API 并不太清楚它的作用:

public void setParameters (String keyValuePairs)
Run Code Online (Sandbox Code Playgroud)

为音频硬件设置可变数量的参数值。

参数

keyValuePairs参数键值对列表,格式为:key1=value1;key2=value2;...

如果我们查看 AudioManager.java 中该方法的源代码:

/**
 * Sets a variable number of parameter values to audio hardware.
 *
 * @param keyValuePairs list of parameters key value pairs in the form:
 *    key1=value1;key2=value2;...
 *
 */
public void setParameters(String keyValuePairs) {
    AudioSystem.setParameters(keyValuePairs);
}
Run Code Online (Sandbox Code Playgroud)

查看 AudioSystem.java:

/*
 * Sets a group generic audio configuration parameters. The use of these parameters
 * are platform dependant, see libaudio
 *
 * param keyValuePairs  list of parameters key value pairs in the form:
 *    key1=value1;key2=value2;...
 */
public static native int setParameters(String keyValuePairs);
Run Code Online (Sandbox Code Playgroud)

那里没有太多信息。看起来这些参数可能是特定于硬件的,我什至不确定这些参数是否能达到您想要的效果。

您是想在整个系统范围内进行设置还是仅在一个应用程序中进行设置?我假设是系统范围内的,但如果情况并非如此,我想事情会更容易。