Я создал службу android, которая предоставляет интерфейс приложениям для приема массива байтов камеры. Служба использует собственную библиотеку для обработки кадра этой камеры и возвращает некоторые данные о кадре камеры. Цель состоит в том, чтобы обрабатывать кадры предварительного просмотра камеры в реальном времени.Доля памяти между двумя процессами в Dalvik
Задача - У моего файла AIDL есть API под названием initFrame (в байт []). Всякий раз, когда я вызываю этот API из приложения (работает в отдельном процессе), я получаю исключение - TransactionTooLargeException
Это связано с тем, что размер массива байтов составляет> 1 МБ, а буфер транзакции связывания ограничен ограниченным размером 1 МБ , Даже если предел размера был больше, очень неэффективно копировать большие буферы для обработки в реальном времени.
Вопрос - Есть ли способ в android для обмена памятью между двумя процессами dalvik, которые могут помочь решить проблему? Я посмотрел на MemoryFile, но, похоже, MemoryFile можно использовать только для обмена памятью между процессами с помощью скрытых API в этот момент.
Я смотрел на пепельницу, но как использовать пепельницу в моем приложении JAVA? Я не хочу обременять приложение NDK. –
Это приложение, которое показывает, как использовать ashmem для mmap между различными приложениями/между родными C и Java. https://github.com/vecio/AndroidIPC – user3387542