世界地図 Free for Android V1.2 公開

Android版 世界地図 Free V1.2を公開しました。(その前にV1.1を細かいバグ修正で出してたんだけど。)
今回の修正は、

  • Android2.2で確認モード、位置当てクイズが正しく動作しないバグを修正

この1点。正しく動作しないっていうのは、例えば確認モードでタッチした位置の国が赤くならない場合がある。ていうか、ならない国がほとんど。
別の国が赤くなっちゃうか、最悪の場合はクラッシュする。


タッチした位置の国を特定する為に内部でタッチ座標から国を判断する為の画像をもってて、その画像上のタッチ座標の色から国が判る様になっている。
ところが、Android2.2だと画像を読み込んだ時に色が少し変化してしまう。最初のバージョンをリリースする前にエミュレータでは発生してたんだけど、手持ちの実機(原道N50/Android2.3.1)では起きないから勝手にエミュレータの問題だと思い込んでた。(エミュレータは、Android2.2で作ってた)
ところが、アプリをダウンロードした友人から動作がおかしいと言われて色々と聞いてみたところ、どうやらエミュレータで起こってたのと同じ現象らしい。そこで調べてみたらAndroid2.2では読み込む時に色が変更されない様にする為のオプション指定が少し違うことがわかった。

変更前の画像読み込み部分は、

BitmapFactory.Options op = new BitmapFactory.Options();
op.inDither = false;
Bitmap bmp = BitmapFactory.decodeStream(stream, null, op);

と、こんな感じ。OptionsのinDitherをfalseにしてるからディザリングはかからずに、色は変更されないはずだった。。。
しかし、Android2.2ではこれだけでは駄目らしい。
Optionsのパラメータをもう1個指定して

BitmapFactory.Options op = new BitmapFactory.Options();
op.inDither = false;
op.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bmp = BitmapFactory.decodeStream(stream, null, op);

としないと色が変わってしまう。

ここで発見。
http://stackoverflow.com/questions/4033292/android-2-2-distorts-picture-colors

うーん。何てこった。画像読み込み何ていう超基本な処理でもバージョンが違うと動作が変わっちまうのね。。。


改めてAndroidの大変さに気づいた出来事でした。
ご迷惑をお掛けした方々、すみませんでした。<(_ _)>