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

07-27 13:50