【问题标题】:How to use CameraX without XML and PreviewView in service or Receiver?如何在服务或接收器中使用没有 XML 和 PreviewView 的 CameraX?
【发布时间】:2021-04-29 23:48:58
【问题描述】:

我想在服务中使用没有任何 xml 和 PreviewView 或其他显示图片的 CameraX 拍照,但我有问题。

【问题讨论】:

  • 输入一些代码并描述你的问题,目前这个问题很广泛......

标签: android android-camera android-camera2 android-camerax


【解决方案1】:

你应该使用Camera2,这个问题是错误的

【讨论】:

    【解决方案2】:

    CameraX 用例(Preview、ImageAnalysis 和 ImageCapture)都是完全独立的。

    仅将 ImageCapture 绑定到生命周期,而不需要任何需要 PreviewView 的 Preview。它会起作用的。

    【讨论】:

    • 我可以确认
    【解决方案3】:

    要访问相机,您可能必须使用foreground service

    从你的问题中不清楚你想用相机做什么,但如果你想拍照,你需要在你的服务中设置相机并使用@987654322 @用例。

    【讨论】:

      【解决方案4】:

      您可以创建一个客户服务来扩展 LifecyleService 类,如下所示:(cameraSelector 和 ImageCapture)

      public class cameraService extends LifecycleService {
          @Override
          public int onStartCommand(Intent intent, int flags, int startId) {
             
             RunCameraX();
             return super.onStartCommand(intent, flags, startId);
          }
          RunCameraX() {
             ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
             //select-usecase
             //Camera facing, image analysis & no preview
             Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner)this, cameraSelector2,imageCapture );
           }
      
           imageCapture.takePicture(outputFileOptions, executor, new ImageCapture.OnImageSavedCallback () {
                  @Override
                  public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
                      new Handler(Looper.getMainLooper()).post(new Runnable() {
                          @Override
                          public void run() {
                              //todo
                          }
                      });
                  }
                  @Override
                  public void onError(@NonNull ImageCaptureException error) {
                      error.printStackTrace();
                  }
              });
      }
      

      Build.grade 应该声明依赖,

       implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
      

      并在 Manifest 文件中声明此服务

      <service
              android:name=".cameraService"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多