Xamarin.Android は [Java ライブラリから C# のラッパを生成する機能](http://docs.xamarin.com/guides/android/advanced_topics/java_integration_overview/binding_a_java_library_(.jar) がとっても強力(Binding というみたい)なので、Fused Location Provider や Geofencing など、Google I/O 2013 で発表された新機能が入った google-play-service.jar も使えるはずだ、と思い試してみました。

monodroid-samples をベースに

Xamarin.Android のサンプル集 monodroid-samples に、既に Google Map v2 を使うサンプルがあり、これが Google Play Service を使っているので、これを参考にします。

これね → MapsAndLocationDemo_v2 、使い方は、

をどうぞ。

Binding の設定をいじる

Android SDK の Google Play Service をアップデートしても、Xamarin 側ですぐに LocationClient などが使えるわけではないです。
プロジェクト GooglePlayServices で、ラップする package などを設定しているため。

その設定は Transform/Metadata.xml にあるので、これを以下のように設定します。

```xml Metadata.xml

Android.Gms.Maps Android.Gms.Maps.Model Android.Gms.Common Android.Gms.Location SetPosition SetSnippet SetTitle

```

com.google.android.gms.location を各所に追加しています。変更前は こちら

これだけで OK。(がここにたどり着くまでに半日くらいかかったorz)

使う

これでリビルドすると、この GooglePlayServices を参照しているプロジェクトで、Android.Gms.Location.LocationClient などが使えるようになります。(Xamarin Studio を再起動しないとコード入力補完(Inteli先生 というのか?) に認識されないみたいですが。)

Xamarin
Android
GoogleMapsAPI
C#

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077