java - Camera2 - 更改片段时“必须从片段主机的主线程调用”
问题描述
在使用以下代码Google Sample - Camera2Basic拍摄图像后,我正在尝试更改片段。
我在上面示例的第 839 行实现了对 MainActivity 的回调。但是,当我尝试从该回调遍历到不同的活动时,我收到以下异常:
java.lang.IllegalStateException:必须从片段主机的主线程调用
有人知道吗?
解决方案
我在 Kotlin 中有工作代码您必须将此回调替换为:
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureCompleted(session: CameraCaptureSession,
request: CaptureRequest,
result: TotalCaptureResult) {
sendBackResult(mFile)
}
}
mCaptureSession!!.capture(captureBuilder.build(), captureCallback, mBackgroundHandler)
} catch (e: CameraAccessException) {
e.printStackTrace()
}
sendBackResult 方法如下:
private fun sendBackResult(resultFile: File?) {
val fileUri = Uri.fromFile(resultFile)
val dataIntent = Intent()
dataIntent.data = fileUri
dataIntent.putExtra("isFront", isFrontCamera)
activity!!.setResult(Activity.RESULT_OK, dataIntent)
activity!!.finish()
}
推荐阅读
- c - [USART - STM32F4xx]:如何等待字符到达状态寄存器 (USART_SR)?
- apache-spark - 单程和多程计算之间的区别
- swift - 如何在每天下午 2:00 时钟执行代码
- elasticsearch - Elasticsearch 文档计数不反映更高的索引率
- java - Apache Camel JMS 组件:bridgeErrorHandler 不像记录的那样工作
- python - 如何在 PyCharm 中正确包含本地库
- reactjs - reactjs中如何将nodebb集成到iframe中
- here-api - Here map 是否支持 Multi Model 交通系统?
- go - 访问未定义的数组元素的结构类型时出错(类型 []ParentIDInfo 没有字段或方法 PCOrderID)
- c# - 如何使用工厂设计模式创建复杂对象