【问题标题】:Android: Broadcast Image Continuously from ServiceAndroid:从服务连续广播图像
【发布时间】:2014-12-25 04:08:39
【问题描述】:

嗨, 我正在为我的机器人项目在 Android 上进行图像处理。在我的项目中,我有 3 个服务:CameraService、VisionService、TakePictureService。

  • CameraService: 使用 VideoCapture (OpenCV) 本地读取相机并通过 CAMERA_INTENT 广播 byte[] 数据
  • VisionService:接收byte[]数据帧,处理人脸检测,广播人脸定位
  • TakePictureService: 接收 byte[] 数据帧,当人脸在图像中心时,在 SurfaceView 上绘制并将帧保存到 sdcard。

问题是系统不断执行GC_FOR_ALLOC来释放前一帧数据并分配新帧。当我的应用程序运行一段时间后,我的设备将重新启动。

在重新启动之前,logcat 显示许多 GC_FOR_ALLOC 而没有其他任何内容,然后显示一些 FAILED_BINDER_TRANSTION 并重新启动。

我想问有没有办法解决这个问题。我的机器人需要执行不间断的计算机视觉任务。需要图片数据的服务很多,Camera只能打开一次,所以需要广播byte[]数据帧。

你有什么建议吗?

非常感谢

【问题讨论】:

    标签: android android-intent image-processing memory-management computer-vision


    【解决方案1】:

    除了广播,你可以使用AIDL接口,一旦相机有数据可用,你从cameraService调用VisionService的接口,广播不适合这样的工作,因为你需要传递大量的数据

    【讨论】:

    • 非常感谢。我使用绑定服务解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多