AndroidアプリでGoogle Mapsを使う方法→エミュレータ派死亡

作ろうとしているAndroidアプリにはGoogle Mapsが必須なので、
Google Mapsを表示するだけの単純なAndroidアプリを作ってみます。

あ、タイトルの通り、現時点ではGoogle Maps(Android v2)はエミュレータでは動かなくて死にました。






まず最初、Androidアプリの学習本を1時間ほど読んで基礎的なことを把握しておく。

Androidアプリ作成の学習本


スマートにプログラミング Android入門編 第2版
スマートにプログラミング Android入門編 第2版 SDK4/2.3対応

僕の持っているのは、この第1版です。
1年くらい前に買って、ざーと読んで少し試したあとに棚に眠っていました。


レイアウトとビュー,アクティビティ、インテントの項目をざっくり読んでわかったつもりになったところでGoogle MapsをAndroidで試してみることに。。


Google Maps Android API Keyの取得方法


Google Mapsを使うとなるとAPI Keyが必要だよね・・・、と思ってネットをウロウロすること少し、

Google Maps Android API v2: Creating an API Project

なにやらたくさん英語が出てきますが、うえのページにあるGoogle APIs ConsoleでAPIへの登録ができるっぽいです。


リンクをポチッと。

Register…というリンクをポチッと。

Project IDを登録しろと出てくるので、
適当に文字を登録してみる。

一応、メモに保存してと。

Choose this IDをポチッと。

左側にあるAPI Accessをポチッと。

OAuth 2.0を作れみたいなことがあるから、そのボタンをとりあえず押してみる。
何か関係なさそうなので、キャンセル。


左側のメニューにあるServicesを選択してみる。
なんか色々APIが出てくる。

Google Maps Android API v2をONにしてみる。

左側のメニューにあるAccess APIをもう一度選択。

Simple API Access
Use API keys to identify your project when you do not need to access user data.
Key for browser apps (with referers)
API key: 僕のAPI keyが表示されてる!


とうことで、Android用のGoogle MapsのAPI Keyを入手しました。

ちなみに、Androidアプリで使う分には、APIの制限はなさそうです。
WebサイトやWebサイト関連のビューの中で使うと1日25000リクエストが上限だとか。


Google Mapsを表示するだけのAndroidアプリの作成


API Keyを入手したので、さっそくGoogle Mapsを表示するだけのAndroidアプリの作ちゃおうと思います。

Android Developer Toolsを起動。

プロジェクトを作成する前に、Android Virtual Device ManagerでTargetを変更

Android 2.3.3 – API Level 10

Google APIs – API Level 10

Google系のAPIを使うときはAndroid 2.3.3じゃなくてGoogle APIsのほうを使うんだって。


MapTestというプロジェクトを新規作成。。


To add the key to your application:

AndroidManifest.xmlのの前に下記のコードを入力する。
your_api_keyには自分のAPI keyを入力する。

<meta-data
  android:name="com.google.android.maps.v2.API_KEY"
  android:value="your_api_key"/>

次に下記のコードを入力する。
com.example.mapdemoは自分のパッケージ名を入力する。

<permission
 android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
 android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>

このpermissionなんちゃらはどこに入れれば良いのかよくわからなかったのですが、
AndroidManifest.xmlのuses-sdkの下に入れると文句言われません。


・・・次は何をしたら良いのですか?
とネットをフラフラしたところ、

世界の中心でGoogle Maps Android API v2に喝采を送る

あれ、Google Maps Android API v2は最近リリースされてて、Google APIsってする必要ないそうです。


なんか胃が痛くなってきた!

Google Maps Android API v2を使ってみた


上を読んでいると、僕はいろいろ間違えているようで。
素直に上の人と同じことをすることにします。


Google Play servicesをインストール。。
Google Play servicesのライブラリプロジェクトを作る。。
地図アプリを作る。。
Google Play servicesライブラリを組み込む。。
サポートパッケージを組み込む。。
レイアウトの作成 ???

レイアウトで転んだ。。

サポートパッケージのFragmentを使いますってどうやって?

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

上をそのままレイアウトに貼付けると
This tag should specify an id or a tag to preserve state across activity restarts
というWarningが出てくる。。


気持ち悪いので、
下記にするとWarningは出なくなる。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment"/>

</RelativeLayout>



Activityの作成 ???

とりあえず、 MainActivity.javaのextends Activityのところをextends FragmentActivityにしてみると、エラーがにょこにょこでる。

指示に従って
import android.support.v4.app.FragmentActivity;
を入れるとエラーが消えた。

package net.personalarea.mapsv2;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}


APIアクセスキーを取得する
僕の取得したAPIキーはなにやら種類の違うものだったので再取得する。


その他色々設定して、Runをポチッと。
エミュレーターが起動してしばらくたつと、

This app won’t run without Google Play services, which are missing from your phone.

と表示して終わった・・・。





ふげーーー、グーグルせんせー。


This app won’t run unless you update Google Play Services.

According to discussion with Android Developer on Google+, running the new Map API on emulator is not possible at the moment.


現時点では、Google Maps Android API v2はエミュレーターでは動きませんだって・・・。


Androidの実機持ってないです。どうすんだよ、これ。

おそらく、一生懸命掘り返せば何かしらの解決策が出てくるかもしれないけど、
たぶん、不具合もぞろぞろ出てくる気がします。

実機買うのが正解っぽいです。
Nexus 7、2万円〜!!



エミュレータでも動く!?
エミュレータでGoogle Maps for Android V2を動かす方法

コメントを残す

メールアドレスが公開されることはありません。