【发布时间】:2021-04-29 23:48:58
【问题描述】:
我想在服务中使用没有任何 xml 和 PreviewView 或其他显示图片的 CameraX 拍照,但我有问题。
【问题讨论】:
-
输入一些代码并描述你的问题,目前这个问题很广泛......
标签: android android-camera android-camera2 android-camerax
我想在服务中使用没有任何 xml 和 PreviewView 或其他显示图片的 CameraX 拍照,但我有问题。
【问题讨论】:
标签: android android-camera android-camera2 android-camerax
你应该使用Camera2,这个问题是错误的
【讨论】:
CameraX 用例(Preview、ImageAnalysis 和 ImageCapture)都是完全独立的。
仅将 ImageCapture 绑定到生命周期,而不需要任何需要 PreviewView 的 Preview。它会起作用的。
【讨论】:
要访问相机,您可能必须使用foreground service。
从你的问题中不清楚你想用相机做什么,但如果你想拍照,你需要在你的服务中设置相机并使用@987654322 @用例。
【讨论】:
您可以创建一个客户服务来扩展 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"/>
【讨论】: