我创建了一个 android 服务,它向应用程序公开一个接口以接受相机帧字节数组。该服务使用本机库来处理此相机帧并返回有关相机帧的一些数据。目标是能够实时处理相机预览帧。
问题- 我的 AIDL 文件有一个名为 initFrame(in byte[] frame) 的 API。每当我从应用程序(在单独的进程中运行)调用此 API 时,都会出现异常 - TransactionTooLargeException
这是因为字节数组的大小 > 1MB 并且绑定器事务缓冲区具有 1MB 的有限固定大小。即使大小限制更大,复制大缓冲区以进行实时处理也是非常低效的。
问题- android 中有没有办法在两个 dalvik 进程之间共享内存,可以帮助解决问题?我查看了MemoryFile,但似乎 MemoryFile 目前只能用于在使用隐藏 API 的进程之间共享内存。