我正在使用Oboe lib播放声音。我需要知道声音播放的所有可能输出。
因此,为此,我正在使用这种方法
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
for (AudioDeviceInfo device : devices)
{
Log.i("Device type is : %s", String.valueOf(device.getType()));
}
以Samsung Note 9为例,我得到的结果为1 (TYPE_BUILTIN_EARPIECE)
,2 (TYPE_BUILTIN_SPEAKER)
,据我了解,没有其他方法可以播放声音,例如您可以使用或使用此输出通道{{ 1}}还是这个TYPE_BUILTIN_EARPIECE
,对不对?
为什么要问,因为我声称声音不会从正确的扬声器发出,但是据我所知,没有其他扬声器,我只有两个选择,就是这样。
然后,我发现使用的其他测试仪设备是Samsung S9 +,因此我检查了一般的输出选项。 Android在AudioDeviceInfo处有这样的信息,并且有所有可能的值:
TYPE_BUILTIN_SPEAKER
就是这样,没有其他声音输出方式可以播放音乐,只有public static final int TYPE_AUX_LINE = 19;
public static final int TYPE_BLUETOOTH_A2DP = 8;
public static final int TYPE_BLUETOOTH_SCO = 7;
public static final int TYPE_BUILTIN_EARPIECE = 1;
public static final int TYPE_BUILTIN_MIC = 15;
public static final int TYPE_BUILTIN_SPEAKER = 2;
public static final int TYPE_BUS = 21;
public static final int TYPE_DOCK = 13;
public static final int TYPE_FM = 14;
public static final int TYPE_FM_TUNER = 16;
public static final int TYPE_HDMI = 9;
public static final int TYPE_HDMI_ARC = 10;
public static final int TYPE_HEARING_AID = 23;
public static final int TYPE_IP = 20;
public static final int TYPE_LINE_ANALOG = 5;
public static final int TYPE_LINE_DIGITAL = 6;
public static final int TYPE_TELEPHONY = 18;
public static final int TYPE_TV_TUNER = 17;
public static final int TYPE_UNKNOWN = 0;
public static final int TYPE_USB_ACCESSORY = 12;
public static final int TYPE_USB_DEVICE = 11;
public static final int TYPE_USB_HEADSET = 22;
public static final int TYPE_WIRED_HEADPHONES = 4;
public static final int TYPE_WIRED_HEADSET = 3;
,TYPE_BUILTIN_EARPIECE
这两个选项,但是无论如何,当您尝试收听播放时,听起来好像不是从正确的频道或类似的内容,我不知道如何确切解释。
所以,最终的问题是-android设备中是否还有其他声音输出通道,如果没有,那么可能的问题是什么,为什么听起来好像有问题?