2010年06月21日

Androidアプリ開発者向け:「HTC Desire」における注意点

現在も品薄状態が続いているHTC Desireですが、今まで日本で発売された端末と比較して動作が異なる点があるようなので、気づいた点をまとめておきます。


・カメラプレビューで落ちる
これですね。
Issue 7909: Camera preview does not work on HTC Desire
http://code.google.com/p/android/issues/detail?id=7909

NexusOneでも同様の問題が発生するようです。
対応方法は上記Postの下のほうにも記述されておりますが、日本語でTechfirmさんがブログで詳細に記述されていますので、こちらを参考にするのがベストかと思います。
http://labs.techfirm.co.jp/android/cho/1647


・プレビュー時の向き
エミュレーターや他端末はカメラプレビューがデフォルトで90度回転した状態で表示されます。それを防ぐために
params.set("orientation", "portrait");
を記述している方は要注意!
Desireで確認すると90度回転した状態になってしまいます。

Nexus Oneでは問題ないだけに、端末固有の問題?かもしれません。
回避策としては、Acitivityに対してlandscapeで表示と固定するか、Build.MODELとかを見て、Deisreの場合は「params.set("orientation", "portrait");」を指定しないようにするかどちらかかと思われます。
まあ、これからも数々の端末が出ることを考えるとlandscape固定で表示するのが無難ですね。

2010/08/24追記。
「params.set("orientation", "portrait");」は使用するべきではないです。複数の端末で動作しません。
詳細は、この記事で。



・画像がギャラリーへ反映されない
アプリ内のカメラで画像を保存後、ギャラリーを確認しても保存した画像が表示されません。端末のカメラで撮ったものは問題ないです。
端末の再起動もしくは、SDカードを一度マウントして解除すると確認できるようになります。
HTC Incredibleで同様の現象があるようです。悩ましいですねぇ。
http://groups.google.com/group/android-developers/browse_thread/thread/313d506de3fc771f/db7bdba68a48c847?lnk=gst&q=gallery#db7bdba68a48c847
※他アプリで試したところ問題ないものがあったので調査。以下スレッドで記述されている方法で解決。

How to refresh sdcard?
http://groups.google.com/group/android-developers/browse_thread/thread/8d4ee33849c2e774
ということで、以下を追加することで、ギャラリーへ反映されることを確認。
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse ("file://" + Environment.getExternalStorageDirectory())));


おそらく今後もっとたくさんの端末がリリースすることで色々な問題が発生してくると思います。
Andoridの最大の強みであるオープンという部分が、アプリの開発者にとっては悩ましい問題として降りかかってきそうです。


以上ですが、上記、違うよ!という方がいらしたらコメントで指摘していただけると助かります。
よろしくお願いします。

yoshike2 at 13:38|PermalinkComments(0)TrackBack(0)この記事をクリップ!Android | 携帯端末

2010年06月08日

iPhone 4発表!!6月15日に予約開始、24日に発売開始!!



yoshike2 at 10:08|PermalinkComments(0)TrackBack(0)この記事をクリップ!

2010年06月07日

Android NDKの使用

AndroidNDK使用にあたって、導入の分かりやすいサイトを見つけたので、メモ。

・NDK導入〜サンプル使用
Android(アンドロイド)情報-ブリリアントサービス
http://d.hatena.ne.jp/bs-android/20090707/1246952991

・自分で作成
BABUKUMA (^(工)^)
http://babukuma.com/2010/03/android-android-ndl-r3_11.html


この2つを押さえれば、あとはぐぐりながら、細かい実装ができると思います。

yoshike2 at 11:52|PermalinkComments(1)TrackBack(0)この記事をクリップ!Android | NDK

2010年05月24日

"Wrong Image Size" Exception in MapView

adamrockerさんが「throw Life」で紹介していたバグ報告機能をアプリに組み込んでからユーザー端末上で発生しているバグはエラーで報告されてくるので非常に助かっているのだが、導入してから頻繁にXperia端末から同様のエラー報告が寄せられていた。

その原因がようやく判明したので報告。

ログからはMapViewにて以下のようなエラーをはいて落ちていた。
java.lang.IllegalArgumentException: wrong image size: 192 192
at com.google.googlenav.map.MapTile.getImage(Unknown Source)
at com.google.googlenav.map.Map.drawTile(Unknown Source)




エラーログでぐぐってみると以下のIssueが発行されていることが確認できる。
Issue 4599:"Wrong Image Size" Exception in MapView under Android 2.0

上記のissueでは原因や解決方法が不完全な部分があるのでそれを補足して、以下にまとめる。

<エラーが発生する環境>
・Android 2.0.1未満(確認をしてないが、おそらくAndroid1.6以上)
・実機での動作時(エミュレータでは発生しない)
・WVGAやFWVGA端末(だと思うが、未確認)
AndroidManifestに「android:anyDensity="true"」を記述している場合


<エラーが発生する操作>
・GoogleMapのサテライトビューモードで表示
・GoogleMapで表示しきれない範囲を超えて拡大しようとすると該当エラーが発生
※ちなみにGoogleMapのサテライトビューモードの場合、getMaxZoomLevel() が正常に機能していないため、プログラム側で表示可能領域を超えた場合に拡大するのを防ぐという処理が入れられない。。。


<修正方法>
・AndroidManifestの「android:anyDensity」を「false」に変更


上記修正でとりあえずは対応可能。
しかし、解像度に合わせて使用画像を変えるなどしている場合(「drawable-hdpi」などを使用している場合)は「android:anyDensity」を「false」に変更したことにより、解像度が大きい端末でも「drawble-mdpi」の画像が使用されるなどの副作用がある。

QVGA端末〜WVGA端末まで全てに対応可能なアプリを作ろうとしたら、ちょっとデザインを入れたものだと、この副作用はキツイですね・・・。
もっと良い対応方法があれば良いですが。
ご存知の方がいらしたら、コメントよろしくです。


yoshike2 at 15:54|PermalinkComments(0)TrackBack(0)この記事をクリップ!Android 

2010年05月21日

2010/05/20 Pick Up News!! 〜PayPal、Android用に開発ツール「Mobile Payments Library」を発表〜



yoshike2 at 12:11|PermalinkComments(0)TrackBack(0)この記事をクリップ!Android