0

opencvライブラリ(顔検出サンプル)を使ってAndroidの画像キャプチャアプリを開発しています。私の目的は、5 つの画像をキャプチャして Web サービスに送信することです。画像をキャプチャした後、Bitmap 画像を base64 文字列に変換し、string[] に格納します。最後に、この string[] を Web サービスに送信します。このアプリケーションは私のエミュレーターで動作します。しかし、Androidタブレットで確認すると、「1228816バイトの割り当てのためにヒープ(フラグケース)を7.827MBに拡張」という例外がスローされ、アプリケーションが終了します。インターネットで検索したところ、これに関するリンクがいくつか見つかりました。

リンク 1: Android グロー ヒープ フラグ ケース

link-2:成長するヒープをクリアするにはどうすればよいですか?

しかし、彼らは、問題が存在する場合、私が何をするかを教えてくれませんでした. いくつかのリンクを見た後、これはメモリリークが原因であると思います。しかし、私は何をすべきかわかりません。私はアンドロイドが初めてなので、これに関するいくつかの提案をいただければ幸いです。

次のリンクにログ ファイルを添付しました。 http://pastebin.com/82VxhBmz

4

2 に答える 2

1

あなたが直面している問題は、主に画像を文字列に変換する base64 が原因です。
大きなサイズの画像 @ たとえば、カメラから画像をクリックすると、常に MB 単位で大きくなり、文字列に変換するとより多くのメモリが使用されます。そのため、多くの画像をクリックすると、文字列のサイズによってメモリ サイズが大きくなり、Android がアプリケーションを強制的に破棄することになります。これは、Android がメモリの観点で不足している場合により多くのメモリを使用するアプリケーションを破棄するためです。

したがって、複数の画像をサーバーにアップロードするには、例として別の方法を使用します。ユーザーが画像をサーバーにアップロードする方法について回答した次の質問を参照してください。
ギャラリーからサーバーへの Android アップロード画像

于 2012-12-17T10:13:57.737 に答える