android - Camerax 在服务中运行。如何在前台服务中获取生命周期所有者或在没有它的情况下运行?

标签 android android-camera2 background-service android-camerax

用例 :是我必须在没有任何 Activity 或 fragment 的服务中在后台运行相机

拦截器 : 新的 camerax session 绑定(bind)到生命周期所有者,但服务没有。那么如何获取这个对象或在没有它的情况下运行?

已经尝试过 :我可以用 Camera2 库做同样的事情,但我想知道 Camerax 是否有可能,因为 Camera2 api 将来可能会被弃用。
还是谷歌故意试图阻止用户在没有 Activity 的情况下运行相机?

请建议

最佳答案

您是否尝试过扩展 LifecycleService而不是常规的 Service ?为此,您需要添加 androidx.lifecycle:lifecycle-service:2.x.y作为 gradle 文件中的依赖项(如果您还没有的话)。然后,当您调用 bindToLifecycle你刚刚通过的方法this作为参数,它应该可以工作:

class ExampleService : LifecycleService() {
    // here should be use case implementation
    ...
    processCameraProvider.bindToLifecycle(this, ...)
(免责声明:没有对此进行测试,所以我不是 100% 确定)。
此外,从 Android 11 开始,您应该包括 following snippet为此:
<manifest>
...
<service ... android:foregroundServiceType="camera" />

更多关于 LifecycleService here .

关于android - Camerax 在服务中运行。如何在前台服务中获取生命周期所有者或在没有它的情况下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60630164/

相关文章:

android - 如何创建完全填充屏幕宽度的方形按钮

android - 在不更新应用程序的情况下向应用程序添加/更新 'news'

android - 杀死应用程序后,我的前台服务在vivo等某些设备上被杀死?

java - 当手机在某些设备(如 oppo、一加设备)中被锁定时,绑定(bind)服务会在 1 或 2 分钟后停止

android - 如何制作 RxErrorHandlingCallAdapterFactory?

android - 想要在单击选项卡时退出应用程序

android - 使用 camera2 API 在视频输出文件中添加文本标签

java - 使用 Camera2 拍摄第二张照片时 setPreviewTexture 失败

Android camera2 createCaptureRequest 获取YUV_420_888图像时返回全黑像素

android - 从 Android 中的唤醒 Intent 服务将数据插入数据库