我排查到问题可能是打开麦克风时被其他进程拒绝,清理手机日志,重启手机之后没有再复现麦克风打不开的情况。抢占麦克风的进程也没有再出现。
现在已知通过OH_AudioStreamBuilder_SetCapturerInfo方法可以设置音频流的工作场景。该方法的参数 source_type有以下几个选项:
AUDIOSTREAM_SOURCE_TYPE_INVALID = -1,
AUDIOSTREAM_SOURCE_TYPE_MIC = 0,
AUDIOSTREAM_SOURCE_TYPE_VOICE_RECOGNITION = 1,
AUDIOSTREAM_SOURCE_TYPE_PLAYBACK_CAPTURE = 2,
AUDIOSTREAM_SOURCE_TYPE_VOICE_COMMUNICATION = 7
现在的问题是:不同app使用了不同的source_type来使用麦克风,最终哪个app会成功打开麦克风,哪个app会被拒绝,打开麦克风失败,想问一下各个source_type的管理逻辑是怎样的?
不同app使用不同sourceType开启录音时,整体受焦点策略管控,大部分情况是先入为主,后来的录音被拒绝,但是通话类型优先级较高,可以打断其他录音,如是录屏可以与其他录音类型并发。