SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習! Androidアプリケーション開発

レイアウトの作成手順をマスターする!
~速習! Androidアプリケーション開発(3)~

第3回 レイアウトの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

マップ画面のレイアウト作成

 さて、残すはマップ画面のレイアウトです。マップを表示するにはGoogle Maps APIのキーを取得する必要がありますので、まずはキーを取得しましょう。

(1)証明書のフィンガープリントの取得

 証明書のフィンガープリントはJDK付属のkeytoolコマンドを使用して取得します。コマンドプロンプトを開き、下記のようにコマンドを実行します。

>keytool -list -keystore "C:\Documents and Settings\ユーザ名\.android\debug.keystore"

 パスワードの入力を求められるので、そのまま[Enterキー]を押下してスキップすると、証明書のフィンガープリントが出力されます。

証明書のフィンガープリント (MD5):***************

(2)Maps API Keyの取得

 下記のサイトを開き、Googleアカウントでログインします。

 画面下の方にある「ライセンスの同意」(下図の1)にチェックを入れ、「My cerrficate’s MD5 fingerpring」(下図の2)に先ほど取得した証明書のフィンガープリントを入力し、[Generate API Key]をクリックすると、生成されたAPIキーが表示されます。APIキーは後ほど使うのでメモしておきます。

「ライセンスの同意」にチェックを入れ、フィンガープリントを入力
「ライセンスの同意」にチェックを入れ、フィンガープリントを入力

 以上で準備ができたので、他の画面と同様の手順で「map.xml」「MapActivity.java」のファイルを作成し、それぞれ下記のように記述します。map.xmlのandroid:apiKey="~"には、取得したGoogle Maps APIキーを忘れずに記述してください。

マップ画面の完成イメージ
マップ画面の完成イメージ
map.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">

<!-- 地図 -->
<com.google.android.maps.MapView
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:apiKey="取得したGoogle Map APIキーを記述" />
<!-- 地図の上に半透明のレイアウトを配置 -->
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#99000080"
    android:padding="2px" >
        
    <!-- 地図切り替えのラジオボタン -->
    <RadioGroup
        android:id="@+id/mapRadioGroup"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
            
        <!-- 通常の地図ボタン -->
        <RadioButton
            android:id="@+id/normalMapRadio"
            android:text="@string/map"
            android:textColor="#FFFFFFFF"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
                
        <!-- 衛星写真ボタン -->
        <RadioButton
            android:id="@+id/satelliteMapRadio"
            android:text="@string/map_satellite"
            android:textColor="#FFFFFFFF"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RadioGroup>
    <!-- 現在地表示のトグルボタン -->
    <ToggleButton
        android:id="@+id/currentLocationToggle"
        android:layout_gravity="right|center_vertical"
        android:textOff="@string/current_location_off"
        android:textOn="@string/current_location_on"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>

MapActivity.java
package sample.bizcard;

import android.os.Bundle;

/**
 * 地図表示アクティビティ
 * MapViewを扱うアクティビティはcom.google.android.maps.MapActivityを継承する必要がある
 */
public class MapActivity extends com.google.android.maps.MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	// 自動生成されたR.javaの定数を指定してXMLからレイアウトを生成
	setContentView(R.layout.map);
}

@Override
protected boolean isRouteDisplayed() {
	return false;
}
}

 「AndroideManifest.xml」にも、同様にアクティビティの定義を追加します。また、マップを利用するためには、画像をインターネットから取得する必要があるので、インターネットへの接続権限(android.permission.INTERNET)の追加が必要になります(下記太字部分)。さらに、MapViewやMapActivityは、Androidではなく別ライブラリとしてGoogleから提供されているため、ライブラリ(com.google.android.maps)の利用宣言も追加します。

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="sample.bizcard"
  android:versionCode="1"
  android:versionName="1.0">
    
<!-- インターネットへのアクセス権限 -->
<uses-permission android:name="android.permission.INTERNET" />
    
<application android:icon="@drawable/icon" android:label="@string/app_name">
    
    <!-- GoogleMapのライブラリの利用を宣言 -->
    <uses-library android:name="com.google.android.maps" />
:
:中略
:
</manifest>

 なお、インターネットへの接続以外にも、さまざまな権限が存在します。下記を参照ください。

まとめ

 駆け足で一通りの画面のレイアウトを作成しましたが、レイアウト作成のコツはつかめたでしょうか? Androidのアプリケーション開発を始めた頃、私が最も苦労・苦戦したのは思いどおりにレイアウトが作れない事でした。しかし、ここさえ超えれば後は住み慣れたJavaの世界なので心配はいりません。

 次回はデータベースの利用について説明します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習! Androidアプリケーション開発連載記事一覧

もっと読む

この記事の著者

横井 朗(ヨコイ アキラ)

株式会社ビーブレイクシステムズにて業務システムのパッケージソフト(MA-EYES)の製品開発から導入までを手掛けるとともに、オープンソースソフトウェア(ExCella)の開発リーダも務める。オープンソース関連について多くの執筆経験を持つ。  

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4670 2009/12/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング