【问题标题】:Android camera preview vs background serviceAndroid相机预览vs后台服务
【发布时间】:2017-03-22 07:38:38
【问题描述】:

如果我在 Android 上运行图像处理应用程序,在内存/cpu 使用和发热问题方面哪个会更好?

  1. 使用预览运行相机。
  2. 在后台服务中运行摄像头。 This 说后台服务占用了很多内存(我以前认为相反)。

我问这个的原因是因为我想 24/7 运行应用程序,但我不确定哪种方法更适合我的目的。我确实使用预览测试了我的应用程序运行相机,但它在大约 1 周后因发热而停止。

谢谢。

【问题讨论】:

  • 为防止设备受热,请关闭屏幕。
  • 这是一个很好的观点。谢谢。按主页按钮离开应用程序怎么样?它也有帮助吗?
  • 它可能会断开相机
  • 我会考虑减少 CPU 使用率,例如每秒处理 1 帧,如果可能的话,甚至更少。或者,在设备旁边安装冷风扇;取下盖子并拆下电池以使电子设备更好地通风
  • 我相信本机相机应用程序不会处理帧。此外,如果您关闭屏幕,本机相机将进入睡眠状态。在您的情况下,任何减少 CPU 使用率都可能会有所帮助。如果您只是跳过从相机接收到的每一秒帧,降低到 12 FPS,设备过热可能会大大减少。

标签: android android-camera android-camera2


【解决方案1】:

屏幕会消耗大量电量,因此请尽可能将其关闭。

相机 API 本身并不关心您是在前台应用程序中还是在后台服务中,但是您请求的同时输出越多,功耗可能就越高。同样,您要求的输出分辨率越高,功耗也越高。

如果您使用的是 camera2,您可以拥有一个没有预览的前台应用;即使使用camera1,您也可以将一个虚拟的SurfaceTexture 成员添加到您的活动/等中并将其设置为预览目标,这样您就无需支付实际GPU 活动的成本。

这仍然有相机 API 将无意义的图像推送到 SurfaceTexture 的开销,您只能使用 camera2 来避免这种情况。

【讨论】:

    【解决方案2】:

    很明显,在预览模式下长时间连续运行相机会使您的设备变热,即使您拥有高配置设备。在我的建议中,您可以容忍内存问题但不能容忍发热问题,因为它会导致您的许多其他有害问题设备(由于过热)。所以请使用后台服务,希望与预览模式相比,这不会加热您的设备。

    【讨论】:

    • 感谢 Neo,我正在使用 Camera2 开发第二个版本并在后台服务中运行。我也遇到了一些问题,但我正在尝试一一解决。如果遇到任何严重问题,我会进行更多测试并回来。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多