结束电话之后,音乐不能恢复bug修复
描述• 手机播放音乐来电,音乐会挂起,此时如果用
户强制在手机上重新播放音乐,电话结束后双
耳无声。
在ADK R00299.1问题已经解决
分析
• 呼叫结束后,A2DP kymera没有按预期启动,
因为在这种情况下,音频路由器没有按预期路
由A2DP。
方案
当问题发生时,更新音频路由器重新路由
器A2DP
代码改动如下: (r265.1)
in a2dp_profile.c
++#include "earbud_sm.h"
++#include "kymera_private.h"
++#include "audio_sources.h"
++#include "audio_router.h"
++void RestartA2DPAfterIncomingcallEnd(void)
++{
++ if(appSmIsPrimary()&&(SmGetTaskData()->state == APP_STATE_IN_EAR_BUSY)&&
(appKymeraGetState()==KYMERA_STATE_IDLE))
++ {
++ DEBUG_LOG("Prepare to restart A2DP" );
++ if(AudioSources_GetSourceContext(audio_source_a2dp_1) ==
context_audio_is_playing)
++ {
++ avInstanceTaskData *av_instance =
Av_GetInstanceForHandsetSource(audio_source_a2dp_1);
++ a2dpSetSyncFlag(av_instance, A2DP_SYNC_PREPARED);
++ AudioRouter_Update();
++ DEBUG_LOG("restart audio_source_a2dp_1");
++ }
++ else if(AudioSources_GetSourceContext(audio_source_a2dp_2) ==
context_audio_is_playing)
++ {
++ avInstanceTaskData *av_instance = Av_GetInstanceForHandsetSource(
++audio_source_a2dp_2);
++ a2dpSetSyncFlag(av_instance, A2DP_SYNC_PREPARED);
++ AudioRouter_Update();
++ DEBUG_LOG("restart audio_source_a2dp_2 ");
++ }
++ }
++}
In in file hfp_profile.c
static void hfpProfile_HandleHfpCallStateInd(const HFP_CALL_STATE_IND_T *ind)
{
.......
if (hfp_instance_state != state)
appHfpSetState(instance, state);
++ if(ind->call_state == hfp_call_state_idle)
++ {
++ DEBUG_LOG("decide whether to re start A2DP while incoming call End");
++ RestartA2DPAfterIncomingcallEnd();
}
.........
}
这个要顶!d=====( ̄▽ ̄*)b
页:
[1]