如何知道Android设备上声音的所有输出?

时间:2020-04-08 14:23:55

标签: android

我正在使用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设备中是否还有其他声音输出通道,如果没有,那么可能的问题是什么,为什么听起来好像有问题?

0 个答案:

没有答案