我实现了一个新示例,下面的链接描述了Google Codelabs的新CameraX api,但是TextureView没有显示任何内容并抛出下一个异常:
OpenGLRenderer:[SurfaceTexture-0-7609-1] dequeueImage:SurfaceTexture未附加到视图
另一个相机示例作为Camera2和本机相机应用程序正常工作,我将仿真器与api级别Q beta 3一起使用
class CameraXFragment:Fragment(),TextureView.SurfaceTextureListener {
伴随对象{
fun newInstance():片段= CameraXFragment()
}
专用val REQUEST_CODE_PERMISSIONS = 10
私有val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE)
重写fun onCreateView(inflater:LayoutInflater,container:ViewGroup ?, savedInstanceState:Bundle?):视图?= inflater.inflate(R.layout.fragment_camera,container,false)
重写fun onViewCreated(view:View,savedInstanceState:Bundle?){
super.onViewCreated(view,savedInstanceState)
viewFinder.surfaceTextureListener =此
}
私人乐趣startCamera(){
CameraX.unbindAll()
val PreviewConfig = PreviewConfig.Builder()。apply {
setTargetAspectRatio(Rational(1,1))
setTargetResolution(Size(320,320))
}。建立()
val Preview =预览(previewConfig)
Preview.setOnPreviewOutputUpdateListener {
viewFinder.surfaceTexture = it.surfaceTexture
updateTransform()
}
val imageCaptureConfig = ImageCaptureConfig.Builder()
.apply {
setTargetAspectRatio(Rational(1,1))
setCaptureMode(ImageCapture.CaptureMode.MIN_LATENCY)
}。建立()
val imageCapture = ImageCapture(imageCaptureConfig)
captureButton.setOnClickListener {
val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),“ $ {System.currentTimeMillis()}。jpg”)
imageCapture.takePicture(file,
对象:ImageCapture.OnImageSavedListener … 我已将 compose 版本更新为 1.0.0-beta01,并在应用程序进入后台时遇到崩溃
java.lang.RuntimeException:Parcel:无法在 android.os.Parcel.writeValue(Parcel.java:1885) 和 android.os.Parcel.writeList(Parcel.java:1092) 处封送值 androidx.compose.runtime.SnapshotMutableStateImpl@efa375c )在 android.os.Parcel.writeValue(Parcel.java:1832) 在 android.os.Parcel.writeMapInternal(Parcel.java:943) 在 android.os.Parcel.writeMap(Parcel.java:925) 在 android.os .Parcel.writeValue(Parcel.java:1797) 在 android.os.Parcel.writeMapInternal(Parcel.java:943) 在 android.os.Parcel.writeMap(Parcel.java:925) 在 android.os.Parcel.writeValue( Parcel.java:1797) 在 android.os.Parcel.writeList(Parcel.java:1092) 在 android.os.Parcel.writeValue(Parcel.java:1832) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) )在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel(Bundle.java:1303) 在 android.os.Parcel.writeBundle(Parcel.java:1044) 在 android.os .Parcel.writeValue(Parcel.java:1801) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel( Bundle.java:1303) 在 android.os.Parcel.writeBundle(Parcel.java:1044) 在 android.os.Parcel.writeValue(Parcel.java:1801) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:975) )在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620) 在 android.os.Bundle.writeToParcel(Bundle.java:1303) 在 android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4389)在 android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal。 os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
var email by rememberSaveable …Run Code Online (Sandbox Code Playgroud)