Я создал службу android, которая предоставляет интерфейс приложениям для приема массива байтов камеры. Служба использует собственную библиотеку для обработки кадра этой камеры и возвращает некоторые данные о кадре камеры. Цель состоит в том, чтобы обрабатывать кадры предварительного просмотра камеры в реальном времени.
Проблема. В моем файле AIDL есть API под названием initFrame (в байт []). Всякий раз, когда я вызываю этот API из приложения (работает в отдельном процессе), я получаю исключение - TransactionTooLargeException
Это связано с тем, что размер массива байтов составляет > 1 МБ, а буфер транзакции связующего имеет ограниченный фиксированный размер 1 МБ. Даже если предел размера был больше, очень неэффективно копировать большие буферы для обработки в реальном времени.
Вопрос. Есть ли способ в android для обмена памятью между двумя процессами dalvik, которые могут помочь решить проблему? Я посмотрел на MemoryFile, но, похоже, MemoryFile может использоваться только для совместного использования памяти между процессами с использованием скрытых API в этой точке.