実行時に画像をぼかしようとすると、いくつかの問題が発生しました。私はすでにこれに質問を投稿しましたここ、しかしそれは反対票を投じられました。私の知る限り、質問でFAQに反対していないので、理由はわかりません。
可能であれば、古いデバイスでも画像をぼかすことができるようにしようとしていますが、現在は OutOfMemoryException でクラッシュします。しかし、私が学んだことはfastblur
、私が参照した方法ではint[]
、 Bitmap メソッドにはint[]
. したがって、私自身の質問に対する私の最善の推測は、ぼかしNDK
に とC メソッドを使用することです。ただし、それで私の記憶の問題が完全に解決されるわけではありません。
使用可能なメモリとそれがどれだけのメモリを消費するかをチェックする、および/またはでリッスンし、それがヒットしたときにぼかしプロセスを中断するなど、いくつかのことができると考えましonLowMemory()
たActivity
。
ただし、最初のアイデアについては、メモリと使用量の計算についてほとんど知りません。ここの投稿を考えると、安全に使用できるメモリ量を計算できるように見えます。
MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableBytes = mi.availMem;
a 32-bit signed two's complement integer
(幅 * 高さ * 32L)であると仮定して、int 配列のおおよそのサイズに対してチェックできますか? また、システムのパフォーマンスを損なわないようにするには、どうすれば適切なバッファーを与えることができますか?
私自身への私の最善の答えはNDK
、ぼかしに と C を使用し、リッスンし、定数値を使用して推定/メモリ使用量に対して使用onLowMemory()
可能なメモリを事前に計算することです(利用可能/推定 > aConstantValue)。Bitmap
int[]
私が道を外れている場合は、どうすればよいか教えてください。そうでなければ、私が言ったことの間違いを訂正することも非常に役に立ちます. FAQに反することになるので、私は独断的な議論やあいまいな質問をするつもりはありません. 可能であれば、ぼかしとメモリ消費を処理するための正しいソリューションを構築したいと考えています。
また、あなたの指が私の質問に反対票を投じるのがむずむずしている場合は、できればコメント形式で、私がそれに値する理由を理解させるために、いくつかの厳しい言葉をいただければ幸いです。
ありがとうございました!