Google

2010年03月12日

Android にチャレンジ(4)~GoogleAPI Map~

いやはや記事更新ネタができなくて

いろいろSampleコード段階で嵌りました。
OpenSocialにチャレンジしたいとか。。
RSSリーダーを。。。とか
いきなり夢語りすぎて潰れてました。

とりあえずGoogleAPIを使ってみようと思って
Hello,MapView」を元にごにょごにょと。

目標は
「現在地をまず表示して検索でビューんと飛ぶ」

しかしチュートリアル微妙に改編されてなくてつまずきます。
このリンク先では改編されていたのでこちらへ)
0.下準備
1)Android 用 Google プロジェクト: Google API を手に入れる
今は単体での配布はしていないので。。。
「Android SDK and AVD Manager」から「Available Packages」
でAndroid SDKを入手したように「Google APIs by Google inc,Android API "Ver" 」を追加します。
Screenshot-Android SDK and AVD Manager
2)API key を取得する
なんじゃそれとおうものだが一応Google Mapさんを使わせてもらうので
許可書のようなものだと。。。
アクセスするAPLごとに必要かと思うのだがたぶん使いまわせると思います。
無料だけど手順があるのだ。

コマンドプロンプトで
>keytool -list -keystore "C:\Documents and Settings\$USER_NAME$\.android/debug.keystore"
キーストアのパスワードを入力してください:

えー「パスワードなんって。。。」っと思って私はここでうろうろしてしまいましたが、どうやら「Enter」キーぽっちっとなすればよかっただけでした。。。
そうすると

****************  警告 警告 警告  *****************
*  キーストアに保存された情報の完全性は検証されて  *
*  いません!  完全性を検証するには、キーストアの   *
*  パスワードを入力する必要があります。            *
*****************  警告 警告 警告  *****************
キーストアのタイプ: JKS
キーストアのプロバイダ: SUN
キーストアには 1 エントリが含まれます。
androiddebugkey, 2010/03/XX, PrivateKeyEntry,
証明書のフィンガープリント (MD5): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX


でてきたフィンガープリントを下のサイトにいって

mapkey入力してAPI Keyを入手できます。
ここで「XML」の例をくれるのでこれをあとでLayoutのXMLにぺたっと貼り付けます。





3)プロジェクトを作成する
このときbuildTargetを1)で入れたGoogle APIにしないとだめですよ

1.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="sample.android.map"
      android:versionCode="1"
      android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

       <uses-library android:name="com.google.android.maps"/>
        <activity android:name=".MapSample"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="4" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
</manifest>
--------------
追加するのは
<uses-library android:name="com.google.android.maps"/>


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>


ま位置が問題なわけでうまく入れるには
「AndroidManifest.xml」を「アプリケーションで開く」-「Android マニフェストエディタ」でやるとちゃんと入れてくれることに気がつきました。
みなさん「テキストエディタ」で編集しがちですが。。
ミスする率が下がりますよ。(自爆)

INTERNETはGoogleMapに使うので

ACCESS_FINE_LOCATIONは自分の位置(本物)
ACCESS_MOCK_LOCATIONはエミュレータで設定できる自分の位置(偽者)

2.Layout XML
なんでかここで私はすごーく躓き続けました。
MapViewの他にはHelloWorldのTextViewがあるだけだったのに。。。
なんだかんだ原因不明でずっと「ClassNotFoundException」でMapViewが認識されず。。。
結局まっさらにして、参考にしたBlogサイトさんのLayout XMLをまんまコピーして API Keyを変えたら直りました。。
こんなところではまらないように。
<com.google.android.maps.MapView
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:apiKey="入手したキー"/>
が入ってればいいはずだったんですけどね。

3.
後は参考にさせて頂いたコードを元にやりたいことを組み立ててと
とりあえずGoogleMap(アメリカがどどーんと出るところ)まではいった

4.エミュレーターに現在地として認識させるには
Android DDMSを使うというところです
Eclipseで[ウィンドウ]-[パークスペクティブを開く]-[DDMS]をやると

xml - Eclipse SDKこんな感じで出てきます。
ここの「Emulator Control」
でつつーと下のほうに
「Location Controls」があります。
手打ちで場所を指定してもよし
KMLファイルで指定してもよし


KMLファイルはGoogle Earthで作成することが可能ですが
変換サイトで変換しないとLoadできませんでした。
ここでも躓いた私。。。

というわけで前人の知恵のみで作成することに成功しました

device
かっこいいっす!

下にはお世話になったサイトの皆様方のリンクです。


なんだかんだ皆様のおかげでした。。。

[基本編]
http://y-anz-m.blogspot.com/2009/06/android-google-map-api.html#0

http://wikiwiki.jp/android/?Google%20Map%A4%F2%C9%BD%BC%A8%A4%B9%A4%EB

[GPS編]
http://android.siprop.org/index.php?%CA%D9%B6%AF%B2%F1%2FGPS
[GPS KML編]
http://www.hakkaku.net/hakkaker_blog/20090727-556

[検索編]
http://yajiblog.blog101.fc2.com/blog-entry-35.html

[APIリファレンス]
http://code.google.com/intl/ja/android/add-ons/google-apis/reference/index.html


ayuthky_m at 11:25|Permalink