如何在服务或接收器中使用没有 XML 和 PreviewView 的 CameraX?

Posted

技术标签:

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

我想在服务中使用没有任何 xml 和 PreviewView 或其他显示图片的 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"/>

【讨论】:

以上是关于如何在服务或接收器中使用没有 XML 和 PreviewView 的 CameraX?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建接收XML的Web服务? [关闭]

如何检测服务和广播接收器中的关键事件

如何创建正确的 NEXT 和 PREV 按钮以在 Django 中检索下一个和上一个对象

如何检测服务和广播接收器中的关键事件

如何从 iOS 应用程序发送 POST XML?

如何在 Android API 30 设备中使用静态广播接收器或类似服务?