2015年05月26日

以前の古いGoogleMaps 2015年5月 output=classicは使えないけれど

 以前の古いGoogleMapsを表示する方法として、以前は「output=classic」を付けることで表示できていたのですが、それもいよいよ使えなくなりました。
 諦めて新しいGoogleMapsを使っていたのですが、ふと某所のリンクから飛ぶと、古いGoogleMapsが表示されています。
 もしやと思って調べてみると、いくつかの条件で古い以前のGoogleMapsが表示できます。

https://www.google.co.jp/maphp&q=Tokyo

 と、maphpを指定するか、

https://maps.google.co.jp/maps?output=kml&q=Tokyo
https://maps.google.co.jp/maps?output=nl&q=Tokyo
https://maps.google.co.jp/maps?output=html&q=Tokyo

 のようにoutputのいくつかの値が有効です(classicはダメ)。
 しかしこれもどうやら2015年5月一杯までで、6月からは使えなくなるようです。なってみないと分かりませんが・・。
posted by ふみこ at 19:04| web

2015年05月22日

Google Maps for Android V2がエミュレータでMapFragmentがInflateException

 Google Maps for Android V2がエミュレータでのみMapFragmentが取得できずInflateException(inflater.inflateで落ちる)、という事象に遭遇しました。
 結論からするとAndroidManifest.xmlのpermissionが足りなかったのですが、実機では動いていたこともあり、遠回りしてしまいました。

 最初にエミュレータで実行すると、"This app won't run without Google Play services, which are missing from your phone."という表示が出て、「Get Google Play services」というボタンが表示されます。このボタンを押してみると、例外で落ちました。
 軽くググってみると、「エミュレータではGoogle Maps for Android V2が使えない」という記事が沢山ヒットします。しかしこれは情報が古く、今現在では条件が整えば実行できます。

Android* - Now Available: Android SDK x86 System Image with Google APIs | Intelレジスタードマーク Developer Zone

 ただ、最初は「エミュレータでは実行できないの!?」とビビッて、あちこちにある「com.android.vendingとcom.google.android.gmsを手動でインストール」方法を試してみたり、右往左往しました。ちなみにこれを手動で設定しても、やはり上手くいきません。先ほどの「Get Google Play services」ボタンが「Update」ボタンに変わって、押してみるとやはり落ちる、という状況になるだけです(つまりバージョンが古いのですが、アップデートしようとすると失敗する)。

 そのうちやっと、現在ではエミュレータでも実行できる、ということに気づいて、ターゲットを"Google APIs x86 (Google Inc.) - API Level 19"にしたエミュレータを作り直しました。
 すると先ほどの画面にはならず、一見実行できているのですが、MapFragmentを使った画面をinflater.inflateするところでInflateExceptionが発生、という、冒頭に書いた状態になりました。
 実を言えば、ことの本質はInflateExceptionではなかったのです。ただ、わたしはとある事情でinflateするところをtry catchしていて、デバッガ上でexceptionの中身を見ていただけなので、原因にたどり着くのに時間がかかってしまいました。InflateExceptionを中心に考えていたので、xmlに何か問題があるんじゃないか、だとしたらなぜ実機では動くのか、等々、遠回りしました。
 結局、試しにこのtry catchを外して、Log catをよく見てみたら、一目瞭然でした。

05-21 11:05:04.084: E/AndroidRuntime(2271): Caused by: java.lang.SecurityException: The Maps API requires the additional following permissions to be set in the AndroidManifest.xml to ensure a correct behavior:
05-21 11:05:04.084: E/AndroidRuntime(2271):

 まんま書いてあります・・・orz。
 これはGoogle API へのアクセスを許可するpermissionですが、これがAndroidManifest.xmlにないと落ちます。
 しかしなぜ実機では動いていたのでしょう・・・。
posted by ふみこ at 09:36| Android

2015年05月06日

Android本番アプリで“Waiting for debugger to attach”が表示される

 Androidでデバッグする時、デバイス側で“Waiting for debugger to attach”と表示される事象に遭遇しました。
 既に公開し、Google Playからダウンロードしたアプリで、起動すると“Waiting for debugger to attach”が表示されるのです。実機デバッグに使っていたAndoroid機ですが、PCにつながっていない状態ですから、当然デバッグなどできず、そのまま終了するしかありません。
 公開されているアプリなのでかなり焦りましたが、あっさり解決しました。

android - "Waiting for debugger to attach" showing even when not running in debug mode - Stack Overflow

 デバイス側の問題で、再起動したら直りました・・・orz。
posted by ふみこ at 11:41| Android
↓応援クリックお願いします☆
ブログランキング・にほんブログ村へ