问题视频:
问题视频 音乐暂停状态,触发一级报警音后,蓝牙音乐自动播放
正确结果应当是:
RVC信号来之前,用户在手机音乐App按下的暂停,视为“用户按下的暂停”,RVC信号来之后,不应当播放视频。
发生原因:
RVC信号发生后,中间件丢失焦点通知P层,P层(App层)也对自身管控的“是否用户按下的暂停”标志位进行变更。也影响中间件自身管控的“是否用户按下的暂停”标志位。所以RVC信号结束后,中间件获得焦点,这个标志位是不确定的状态。如果是认为“用户按下暂停”,则不播放视频,如果认为不是“用户按下暂停”,则播放视频。
困难点:
前任员工不知道是否用户下达了蓝牙音乐暂停的命令, A2DP 协议没有提供这样的协议,只提供蓝牙音乐推流和停止推流的状态。
只从状态,无法直接得出是否是命令引起的,因为车机端也可以请求暂停,请求暂停的原因,可能是用户按下车机端蓝牙音乐App暂停键,也可能是RVC信号触发导致蓝牙中间件自动请求暂停(这就不能视为人为按下的了),但是蓝牙状态的回复只有一个“停止推流的状态”
解决手段:
1、取消P层自身管控的“是否用户按下的暂停”标志位,统一由中间件管理,每次P层使用前跟中间件通信,去获取这个标志位。
2、虽然协议只提供状态,但是车机端可能有请求命令。
如果没有车机端的请求,协议变更了状态,从推流变成停止推流,则认为是用户按下了暂停;如果手机端有电话过来,这种场景停止推流,可以根据HFP协议和A2DP协议综合判断,不视为用户按下暂停。
如果有车机端的请求,协议变更了状态,从推流变成停止推流,分两种情况:
①有RVC信号抢了焦点,不认为是用户按下了暂停
②如果是切源(切到Radio)或者是P层按下暂停,认为是用户按下了暂停。
①②均可以根据 注册给焦点管理类的onLoss回调去判断当前所在源是哪个。