多屏时,未接入hdmi默认speaker音频输出,检测到接入hdmi时切换到hdmi音频输出。此时有个问题,如果接入hdmi的屏没有speaker会就导致没有声音输出了,所以需要默认hdmi和speaker同时出声。
- /frameworks/base/services/core/java/com/android/server/WiredAccessoryManager.java
private List<UEventInfo> makeObservedUEventList() {
...
// Monitor HDMI
// add start
/*
uei = new UEventInfo(NAME_HDMI_AUDIO, BIT_HDMI_AUDIO, 0, 0);
if (uei.checkSwitchExists()) {
retVal.add(uei);
} else {
uei = new UEventInfo(NAME_HDMI, BIT_HDMI_AUDIO, 0, 0);
if (uei.checkSwitchExists()) {
retVal.add(uei);
} else {
Slog.w(TAG, "This kernel does not have HDMI audio support");
}
}*/
// add end
}
@Override
public Pair<Integer, Integer> parseState(ExtconInfo extconInfo, String status) {
...
// add start
//updateBit(maskAndState, BIT_HDMI_AUDIO, status,"HDMI") ;
// add end
}
- hardware/rockchip/audio/tinyalsa_hal/audio_hw.c
static int start_output_stream(struct stream_out *out)
{
...
#if SUPPORT_MULTIAUDIO
out->device &= ~(AUDIO_DEVICE_OUT_AUX_DIGITAL | AUDIO_DEVICE_OUT_SPDIF);
#endif
// add start
if (1/*out->device & AUDIO_DEVICE_OUT_AUX_DIGITAL*/) {
// add end
audio_devices_t route_device = out->device & AUDIO_DEVICE_OUT_AUX_DIGITAL;
route_pcm_card_open(adev->dev_out[SND_OUT_SOUND_CARD_HDMI].card, getRouteFromDevice(route_device));
}