文档管理中心

会话配置问题

问题现象

相机无法正常启动,且会话(session)相关流程报错。

可能原因

会话的配置流程主要包括beginConfig、addInput、addOutput和commitConfig四个流程。流程间的调用顺序不可改变,并且要保证四个流程都成功配置,相机才能正常运行。具体原因可能有如下情况:

  1. beginConfig失败。

  2. addInput失败。

  3. addOutput失败。

  4. commitConfig失败。

问题分析步骤

步骤一:beginConfig失败的原因可能是:当session在commitConfig时,调用该接口;当session对象不存在时,也会报空指针异常。

步骤二:addInput只能在session调用beginConfig后调用,当commitConfig之后就无法修改,每个session只能配置一个input,会有空值检测。

步骤三:addOutput只能在session处于beginConfig并且进行addInput之后,commitConfig之前开始配置,会对当前的profile进行检测,查看是否与input对应。可通过ValidateOutputProfile查看对应的output的profile内容,会有空值检测。

步骤四:commitConfig在确定上述配置之后,调用该方法将配置提交给底层,并将输入流和输出流的通道连接,使图像可以通过通道返回应用。

相关log搜索关键词:beginConfig|addInput|addOutput|commitConfig

解决措施

  1. beginConfig失败,检查session是否已经被释放,或者session是否正在进行commitConfig操作。

  2. 在调用addInput接口前,可先调用canAddInput接口,验证当前session是否可以添加input。

  3. 在调用addOutput接口前,可先调用canAddOutput接口,验证当前session是否可以添加output。

  4. 在commitConfig时,需要保证上述过程没有失败,并且session在当前过程中,没有被释放或者进行其他操作。

正常session配置请参考拍照(ArkTS)。