我尝试使用以下代码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()
}