我尝试使用以下代码缩放相机CameraX。
首先,我得到一个Preview来自并尝试使用如下所示CameraX执行缩放。Preview
var config = CameraX.getDefaultUseCaseConfig(PreviewConfig::class.java, lensFacing)\nvar preview = Preview(config)\npreview.zoom(zoom)\nRun Code Online (Sandbox Code Playgroud)\n\npreview.zoom()在我再次绑定并收到一些错误之后CameraX,它不起作用。
CameraX.bindToLifecycle(this, preview, imageCapture, videoCapture)\nRun Code Online (Sandbox Code Playgroud)\n\n当上面的代码不起作用时,我CameraX.unbindAll()首先尝试使用,然后调用CameraX.bindToLifecycle(). 但再次遇到一些错误并且缩放没有成功。
让我知道如何使用 API 缩放相机CameraX。
\n\n\n更新错误日志如下:
\n
仅使用错误日志CameraX.bindToLifecycle():
java.lang.IllegalArgumentException: Exceeded max simultaneously bound image capture use cases.\n at androidx.camera.camera2.impl.UseCaseSurfaceOccupancyManager.checkUseCaseLimitNotExceeded(UseCaseSurfaceOccupancyManager.java:61)\n at androidx.camera.camera2.impl.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:146)\n at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:449)\n at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:144)\n at com.android.example.cameraxbasic.fragments.CameraFragment$updateCameraUi$2.onTouch(CameraFragment.kt:408)\n at android.view.View.dispatchTouchEvent(View.java:12512)\n at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)\n at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)\n at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)\n at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719)\n …Run Code Online (Sandbox Code Playgroud) 我正在尝试像在 Camera2 API 中一样对 CameraX 进行手动对焦
在 Camera2 API 中,我使用以下代码
final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);
captureBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, mLensFocusDistance);
Run Code Online (Sandbox Code Playgroud)
android camera X 可以手动对焦吗?如果是这样如何
提前致谢
目前 Compose 中没有等效于 CameraView(和 PreviewView)的东西。是否可以将其包装并以组合布局显示?
我正在学习 CameraX,CameraXBasic是示例代码。
我写了一个基于zoomX函数的CameraFragment.kt。你可以看到代码A。我认为该功能可以随时放大图片。
我发现一个画面可以当我是变焦调用它与SA小的值,例如zoomX(2f),zoomX(3f),但画面不会放大当我再次用大值,比如zoomX(6.0f),zoomX(7.0f)为什么?
代码 A
private lateinit var viewFinder: TextureView
private var preview: Preview? = null
fun zoomX(orign: Float ){
val x=orign+1
val singleWidth=viewFinder.width/x
val singleHeight=viewFinder.height/x
val left=viewFinder.width/2f-singleWidth/2f
val right=left+singleWidth
val top=viewFinder.height/2f-singleHeight/2f
val bottom=top+singleHeight
val my= Rect(left.toInt(), top.toInt(), right.toInt(), bottom.toInt())
preview?.zoom(my)
}
Run Code Online (Sandbox Code Playgroud) 我试图按照谷歌的“CameraX 入门”代码实验室进行操作,我尝试用 Java 而不是 Kotlin 来完成,但是当我运行它并尝试拍照时,它给了我一个错误,提示未绑定到有效相机. 我找不到代码中的错误所在。我检查了 logcat,它说表面可能有问题,它可能无效,但我不确定如何解决这个问题,有人可以帮我。我将在我的 XML 文件中包含我拥有的内容以及 startCamera 和 takePhoto 函数。
//xml file code
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/camera_capture_button"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginBottom="50dp"
android:scaleType="fitCenter"
android:text="Take Photo"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:elevation="2dp" />
<androidx.camera.view.PreviewView
android:id="@+id/viewFinder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
//start camera function
private void startCamera() throws ExecutionException, InterruptedException {
previewView = findViewById(R.id.viewFinder);
ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(MainActivity.this);
cameraProviderFuture.addListener(() -> {
try {
// Used to bind the lifecycle of cameras to the lifecycle owner …Run Code Online (Sandbox Code Playgroud) 使用CameraX.LensFacing.FRONT,在模拟器上进行测试时会发生此错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: meter.meter, PID: 15289
java.lang.RuntimeException: Unable to start activity ComponentInfo{meter.meter/meter.meter.CameraActivity}: java.lang.IllegalArgumentException: Suggested resolution map missing resolution for camera 1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalArgumentException: Suggested resolution map missing resolution for camera 1
at androidx.camera.core.Preview.onSuggestedResolutionUpdated(Preview.java:310)
at androidx.camera.core.UseCase.updateSuggestedResolution(UseCase.java:375)
at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:458)
at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:144)
at meter.meter.CameraActivity.onCreate(CameraActivity.java:68)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Firebase ML套件扫描二维码,但无法在 android Pie(诺基亚 6.1 Plus)上启动相机。但是,相同的代码可以正常工作Android Oreo Redmi 6 A
这是我的毕业证书:
implementation "com.google.firebase:firebase-ml-vision:21.0.0"
implementation "androidx.camera:camera-core:1.0.0-alpha05"
implementation "androidx.camera:camera-camera2:1.0.0-alpha05"
Run Code Online (Sandbox Code Playgroud)
我已经在 Manifest 中提供了所有必需的权限和相机功能
这是我如何使用 Camera X 代码:
val previewConfig = PreviewConfig.Builder()
.setLensFacing(CameraX.LensFacing.BACK)
.build()
val preview = Preview(previewConfig)
preview.setOnPreviewOutputUpdateListener { previewOutput ->
textureView.surfaceTexture = previewOutput.surfaceTexture
}
val imageAnalysisConfig = ImageAnalysisConfig.Builder()
.build()
val imageAnalysis = ImageAnalysis(imageAnalysisConfig)
Run Code Online (Sandbox Code Playgroud)
日志猫:
E/libc: Access denied finding property "vendor.camera.aux.packagelist"
W/com.zup.cash: type=1400 audit(0.0:17168): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=18547 scontext=u:r:untrusted_app:s0:c130,c258,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0
E/GLConsumer: [SurfaceTexture-0-7457-1] …Run Code Online (Sandbox Code Playgroud) 最近几个月,Android 发布了一个新的 API camerax。我试图了解如何让相机自动对焦工作。
https://groups.google.com/a/android.com/forum/#!searchin/camerax-developers/auto $20focus|sort:date/camerax-developers/IQ3KZd8iOIY/LIbrRIqEBgAJ
这是关于该主题的讨论,但几乎没有关于它的具体文档。
这也是基本的camerax应用程序,但我找不到任何处理自动对焦的文件。
任何有关文档的提示或要点都是有帮助的。另外,我对 android 还很陌生,所以很可能我遗漏了一些使上述链接更有用的东西。
我正在尝试按照Google Codelabs 中的示例使用 CameraX 创建自定义相机应用程序。
该教程特别指出:
We recommend using an AVD that is based on Android 11 or higher.
Run Code Online (Sandbox Code Playgroud)
它可以正常工作,API 29 (Android 10)但不能正常工作API 30 (Android 10+)并产生以下错误:
2020-08-11 11:22:34.979 8607-8698/com.codelabs.camerax E/CameraCaptureSession: Session 0: Exception while stopping repeating:
android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): cancelRequest:459: Camera 0: Error clearing streaming request: Function not implemented (-38)
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1009)
at android.hardware.camera2.impl.ICameraDeviceUserWrapper.cancelRequest(ICameraDeviceUserWrapper.java:99)
at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1263)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:578)
at android.hardware.camera2.impl.CameraCaptureSessionImpl$2.onDisconnected(CameraCaptureSessionImpl.java:789)
at android.hardware.camera2.impl.CameraDeviceImpl$7.run(CameraDeviceImpl.java:245)
at androidx.camera.core.impl.utils.executor.SequentialExecutor$1.run(SequentialExecutor.java:110)
at androidx.camera.core.impl.utils.executor.SequentialExecutor$QueueWorker.workOnQueue(SequentialExecutor.java:230)
at androidx.camera.core.impl.utils.executor.SequentialExecutor$QueueWorker.run(SequentialExecutor.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用图像捕获中包含的叠加来捕获图片。我能够将覆盖设置为previewView使用cameraView.overlay.add(binding.textView). 但是,当尝试使用imageCapture仅保存图片而不保存叠加的图像时,它没有保存。如何使用PreviewView相机 x保存包含叠加的图像。
请不要将此标记为重复。我研究了很多,大多数在线示例都使用camera不适用于相机 x 库的旧api。任何帮助表示赞赏。提前致谢。
这是我的代码
<FrameLayout
android:id="@+id/camera_wrapper"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="@id/space1"
app:layout_constraintBottom_toBottomOf="@id/space">
<androidx.camera.view.PreviewView
android:id="@+id/camera_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Hello world"
android:textSize="42sp"
android:textColor="@android:color/holo_green_dark"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
private lateinit var outputDirectory: File
private lateinit var cameraExecutor: ExecutorService
private var preview: Preview? = null
private var lensFacing: Int = CameraSelector.LENS_FACING_FRONT
private var imageCapture: ImageCapture? = null
private var camera: Camera? = null
private var cameraProvider: ProcessCameraProvider? = null
override fun …Run Code Online (Sandbox Code Playgroud) camera android android-layout android-studio android-camerax
android-camerax ×10
android ×8
kotlin ×5
camera ×2
zooming ×2
android-11 ×1
firebase ×1
focus ×1
java ×1
setfocus ×1