APIレベル13未満は切り捨てることにしました

ライフゲームのライブ壁紙の話ではないです。
ちょっとした画像処理アプリを作ってるのですが、理由は以下の通りです。

1. LargeHeapを使いたい

APIレベル11から
“AndroidManifest.xml”のapplicationタグに、

android:largeHeap="true"

を追加すると、使えるメモリが増えます。
しかも、少しじゃないです。
Acer ICONIA TAB A500ですら、
通常は48MBしか使えなかったのが192MBになります。

2. 編集可能な状態でBitmapを読み込みたい

Bitmapの読み込み時に、
BitmapFactory.Optionsの中のinMutabletrueにすると、
そのBitmapが編集可能になります。
これが使えるのはAPIレベル11以上とのことです。

最初は小さい画像でプレビューを表示して、
保存時は、大きな画像に対して処理をするのに、
出力先バッファを確保するのは、
OutOfMemoryErrorの原因になるので避けたいです。

3. 画面回転時の処理を切り分けたくない

この表現は正確ではないです。

android:configChanges="orientation|screenSize"

という書き方は、APIレベル13からだそうです。
今回は、何か入力させることはないので、
orientationのみ指定すれば良いのかも知れませんが、
なんか面倒くさくなりました。

まとめ

最後の理由はちょっとアレですが、
どちらにしてもリリースするにあたって、
アイコンやボタンの画像等、多々作業が残っているので、
この辺は割り切る事にしました。
可能な限りオリジナルサイズで書き出したいっていうのが本音です。
もう一つは、非同期で書き出している最中に画面が回転した場合、
今のスキルではお手上げなので、避ける方針にしました。(*1)

という訳で、今月末を目標に作業しています。

おしまい。

(*1) 正確には、書き出し完了後に通知する処理がお手上げ。

Leave a Comment