我创建了一个android服务,它向应用程序公开一个接口以接受相机帧字节数组。该服务使用本机库来处理此相机框并返回有关相机框的一些数据。目标是能够实时处理相机预览帧。在Dalvik中的两个进程之间共享内存
问题 - 我的AIDL文件有一个名为initFrame的API(在byte []帧中)。每当我从应用程序(在单独的进程中运行)调用此API时,我会得到一个异常 - TransactionTooLargeException
这是因为字节数组的大小大于1MB,并且绑定事务缓冲区的固定大小有限制为1MB 。即使尺寸限制较大,复制大量缓冲区以进行实时处理也是非常低效的。
问题 - 有没有一种方法可以让android在两个dalvik进程之间共享内存,这可以帮助解决问题?我查看了MemoryFile,但似乎MemoryFile只能用于在此时使用隐藏的API在进程之间共享内存。
我看着ashmem,但在我的JAVA应用程序中如何使用ashmem?我不想用NDK负担应用程序。 – 2013-02-28 00:29:41
这是一个应用程序,显示如何使用ashmem在不同应用程序之间/在本机C和Java之间进行mmap映射。 https://github.com/vecio/AndroidIPC – user3387542 2014-06-17 09:58:37