在 AudiomtkPolicyManager.cpp中添加如下代码, 搜索//add start,添加两个地方.
audio_devices_t AudioMTKPolicyManager::getDeviceForStrategy(routing_strategy strategy,
bool fROMCache)
#ifdef MTK_AUDIO
case STRATEGY_PROPRIETARY_ANLG_V2:
case STRATEGY_PROPRIETARY_ANLG:{
...
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem:
EVICE_OUT_SPEAKER;
}
// device is DEVICE_OUT_SPEAKER if we come from case STRATEGY_SONIFICATION, 0 otherwise
//add start
if(device2 == AudioSystem::DEVICE_OUT_SPEAKER){
ALOGD("xwxwxwxw device2 == mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER");
device2 |=AudioSystem::DEVICE_OUT_WIRED_HEADSET;
}
//add end
device |= device2;
if (device == 0) {
ALOGE("getDeviceForStrategy() speaker device not found");
}
break;
}
#endif
case STRATEGY_PROPRIETARY_DGTL_V2:
case STRATEGY_PROPRIETARY_DGTL: {
.......
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;
}
// device is DEVICE_OUT_SPEAKER if we come from case STRATEGY_SONIFICATION or
// STRATEGY_ENFORCED_AUDIBLE, 0 otherwise
ALOGD(" getDeviceForStrategy() strategy %d, device %x device2 %x mDeviceForStrategy[strategy] %x+++",
strategy, device,device2,mDeviceForStrategy[strategy]);
//add start
if(device2 == AudioSystem::DEVICE_OUT_SPEAKER){
ALOGD("device2 == mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER");
device2 |=AudioSystem::DEVICE_OUT_WIRED_HEADSET;
}
//add end
ALOGD(" getDeviceForStrategy() strategy %d, device %x device2 %x ******", strategy, device,device2);
device |= device2;
ALOGD("getDeviceForStrategy() strategy %d, device %x device2 %x ----", strategy, device,device2);
if (device) break;
device = mDefaultOutputDevice;
if (device == 0) {
ALOGE("getDeviceForStrategy() no device found for STRATEGY_MEDIA");
}
}
break;
audio_devices_t AudioMTKPolicyManager::getDeviceForStrategy(routing_strategy strategy,
bool fROMCache)
#ifdef MTK_AUDIO
case STRATEGY_PROPRIETARY_ANLG_V2:
case STRATEGY_PROPRIETARY_ANLG:{
...
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem:
![](https://i-blog.csdnimg.cn/blog_migrate/406435787e15e1e7e84ea026cba28e11.gif)
}
// device is DEVICE_OUT_SPEAKER if we come from case STRATEGY_SONIFICATION, 0 otherwise
//add start
if(device2 == AudioSystem::DEVICE_OUT_SPEAKER){
ALOGD("xwxwxwxw device2 == mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER");
device2 |=AudioSystem::DEVICE_OUT_WIRED_HEADSET;
}
//add end
device |= device2;
if (device == 0) {
ALOGE("getDeviceForStrategy() speaker device not found");
}
break;
}
#endif
case STRATEGY_PROPRIETARY_DGTL_V2:
case STRATEGY_PROPRIETARY_DGTL: {
.......
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;
}
// device is DEVICE_OUT_SPEAKER if we come from case STRATEGY_SONIFICATION or
// STRATEGY_ENFORCED_AUDIBLE, 0 otherwise
ALOGD(" getDeviceForStrategy() strategy %d, device %x device2 %x mDeviceForStrategy[strategy] %x+++",
strategy, device,device2,mDeviceForStrategy[strategy]);
//add start
if(device2 == AudioSystem::DEVICE_OUT_SPEAKER){
ALOGD("device2 == mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER");
device2 |=AudioSystem::DEVICE_OUT_WIRED_HEADSET;
}
//add end
ALOGD(" getDeviceForStrategy() strategy %d, device %x device2 %x ******", strategy, device,device2);
device |= device2;
ALOGD("getDeviceForStrategy() strategy %d, device %x device2 %x ----", strategy, device,device2);
if (device) break;
device = mDefaultOutputDevice;
if (device == 0) {
ALOGE("getDeviceForStrategy() no device found for STRATEGY_MEDIA");
}
}
break;
请参照修改,这样修改之后,FM应用打开外放时,耳机也能有声音。
资料转载于一牛网论坛 MT6735