カメラフレームのバイト配列を受け入れるアプリケーションへのインターフェイスを公開する Android サービスを作成しました。このサービスは、ネイティブ ライブラリを使用してこのカメラ フレームを処理し、カメラ フレームに関するデータを返します。目標は、カメラのプレビュー フレームをリアルタイムで処理できるようにすることです。
問題- 私の AIDL ファイルには initFrame (in byte[] frame) という API があります。(別のプロセスで実行されている) アプリケーションからこの API を呼び出すたびに、TransactionTooLargeExceptionという例外が発生します。
これは、バイト配列のサイズが 1MB を超えており、バインダー トランザクション バッファーの固定サイズが 1MB に制限されているためです。サイズ制限が大きかったとしても、リアルタイム処理のために大きなバッファーをコピーするのは非常に非効率的です。
質問- 問題の解決に役立つ 2 つの dalvik プロセス間でメモリを共有する Android の方法はありますか? 私はMemoryFileを見ましたが、この時点で MemoryFile は非表示の API を使用してプロセス間でメモリを共有するためにのみ使用できるようです。