以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Maps Android API をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Maps Android API をアクティベートする
  3. 適切なキーを作成する
続ける

Android Wear での Maps API

ウェアラブル端末に表示したマップ

Google Maps Android API を使用して、Android Wear 端末で直接実行されるマップベースのウェアラブル アプリを作成できます。 アプリのユーザーは、自分の手首をちらりと見るだけで、マップ上で現在地を確認できます。 たとえば、ルート上に現在地を表示し、ズームインして詳細を確認したり、マーカーをタップしてアプリから提供される情報ウィンドウを表示したりできます。

このページでは、Wear 端末で使用可能な API 機能について説明し、アプリのビルドを開始できるよう支援します。

Android Wear のスタートガイド

Google Maps Android API を使用したウェアラブル アプリのビルドは、その他の Android 端末用の Google マップアプリのビルドと基本的には同じです。 違いは、アプリのユーザビリティとパフォーマンスを最適化するための、ウェアラブル端末の小さいフォーム ファクタ用のデザインにあります。

Android Studio は、プロジェクトのセットアップ、ライブラリのインクルード、パッケージングが容易に行える Android Wear 開発の推奨ツールです。

ウェアラブル アプリのデザインに関する一般的なヘルプについては、Android Wear の設計ガイドラインをご覧ください。 初めてウェアラブル アプリを作成する際のヘルプは、ウェアラブル アプリの作成に関するガイドをご覧ください。

Android Wear で最初のマップアプリをビルドする

このクイックガイドでは、読者が Google Maps Android API をよく理解していること、Android Wear のガイドに従ってアプリにウェアラブル モジュールを作成していること、そのウェアラブル モジュールにマップを追加する必要があることを前提としています。

Wear モジュールの依存関係を追加する

アプリの Android Wear モジュールの build.gradle ファイルに次の依存関係が含まれていることを確認します。

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.google.android.support:wearable:1.2.0'
  provided 'com.google.android.wearable:wearable:1.0.0'
  compile 'com.google.android.gms:play-services-maps:11.2.0'
}

注: provided 依存関係により、アンビエント モードをサポートするために実行時にロードされるクラスが、コンパイル時にも使用可能になります。

依存関係の詳細については、Android Wear でのレイアウトの定義に関するガイドをご覧ください。

ユーザーがアプリを終了するためのダイアログを含める

ウェアラブル端末にマップを表示するには、DismissOverlayView を使用することをお勧めします。 DismissOverlayView クラスを使用すると、長押しして消す UI パターンを実装して、ユーザーが画面を長押しクリック(長押し)することでアプリを終了できるようにすることができます。

このパターンが推奨されるのは、Google Maps Android API が、ウェアラブル アプリを終了するために一般的に使用される、標準の左から右へのスワイプを上書きするためです。

Google マップアプリでは、スワイプ操作はマップをパンするために使用されます。

DismissOverlayView 要素をレイアウト定義に追加します。

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

  ...

  <android.support.wearable.view.DismissOverlayView
     android:id="@+id/dismiss_overlay"
     android:layout_height="match_parent"
     android:layout_width="match_parent"/>

</FrameLayout>

アクティビティに DismissOverlayView オブジェクトを取得したら、以下に示すような、長押しクリック操作によりアプリを終了できることをユーザーに伝える紹介テキストを設定します。

public class MainActivity extends WearableActivity
        implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {

    private MapFragment mMapFragment;
    private DismissOverlayView mDismissOverlay;

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

        mDismissOverlay =
            (DismissOverlayView) findViewById(R.id.dismiss_overlay);
        mDismissOverlay.setIntroText(R.string.basic_wear_long_press_intro);
        mDismissOverlay.showIntroIfNecessary();

        mMapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mMapFragment.getMapAsync(this);
    }
    ...
}

長押しクリック操作をリッスンし、DismissOverlayView.show() を呼び出して終了ボタンを表示します。このボタンをユーザーがクリックすると、アクティビティが終了します。

public void onMapLongClick(LatLng point) {
    mDismissOverlay.show();
}

マップの追加

通常どおり onMapReady(GoogleMap) コールバック メソッドを使用して、GoogleMap オブジェクトに対するハンドルを取得します。 マップを使用できるようになると、コールバックがトリガーされます。 コールバック メソッドでは、マップにマーカーやポリラインを追加したり、リスナーを追加したり、カメラを移動したりできます。 以下の例では、シドニーのオペラハウスの近くにマーカーを追加しています。

public class MainActivity extends WearableActivity
        implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {

    private static final LatLng SYDNEY = new LatLng(-33.85704, 151.21522);
    private GoogleMap mMap;

    ...

    @Override
    public void onMapReady(GoogleMap map) {
        mMap = map;
        mMap.addMarker(new MarkerOptions().position(SYDNEY)
            .title("Sydney Opera House"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 10));
        mMap.setOnMapLongClickListener(this);
    }
}

アンビエント モードを有効にする

Google Maps Android API は、ウェアラブル アプリのアンビエント モードをサポートしています。 アンビエント モードをサポートするアプリは、常時オンアプリと呼ばれることもあります。 アンビエント モードは、ユーザーがアクティブにアプリを使用しなくなったときにアクティブ化され、アプリをウェアラブル端末に表示し続けることができるようにします。

Google Maps Android API では、アンビエント モードで使用する簡略化された、色数の少ないマップのレンダリングが提供されており、端末がインタラクティブ モードからアンビエント モードに切り替わると、マップのスタイルが自動的に調整されます。

アンビエント モードでは、すべてのマーカー、オブジェクト、UI コントロールが非表示になります。 これにより、アプリの電力消費が削減され、時計面などの他のアンビエント アプリとの外観の一貫性が保持されます。

次のステップを実行して、アプリがマップのアンビエント モードを使用するようにします。

  1. Android 5.1(API 22)以降のプラットフォームを含むように Android SDK をアップデートします。これにより、アクティビティを「常に画面表示モード」に切り替えることができる API が提供されます。 SDK のアップデート方法の詳細については、Android ドキュメントで SDK パッケージの追加をご覧ください。

  2. アプリのマニフェストtargetSdkVersion を 22 以上に設定して、プロジェクトの対象が Android 5.1 以降になるようにします。

  3. アプリの build.gradle ファイルにウェアラブル依存関係を追加します。 このページのサンプルをご覧ください。

  4. アプリを表示したままにするための Android トレーニング クラスの説明に従って、ウェアラブル共有ライブラリ エントリをウェアラブル アプリのマニフェストに追加します。

  5. アプリを表示したままにするための Android トレーニング クラスの説明に従って、WAKE_LOCK パーミッションをハンドヘルド アプリとウェアラブル アプリのマニフェストに追加します。

  6. WearableActivity を拡張するアクティビティを作成します。

  7. アクティビティの onCreate() メソッドで、setAmbientEnabled() メソッドを呼び出します。 これにより、アプリケーションは常時オンであるため、端末の電力が低下した場合は時計面に戻るのではなく、アンビエント モードに切り替える必要があることがオペレーティング システムに通知されます。

  8. 「常に画面表示モード」をサポートするようにマップを設定します。 これには、アクティビティの XML レイアウト ファイルで attribute map:ambientEnabled="true" を設定するか、GoogleMapOptions.ambientEnabled(true) を設定してプログラムにより設定します。 この設定により、アンビエント モードで使用するために必要なマップタイルを事前にロードする必要があることが API に通知されます。

  9. アクティビティが「常に画面表示モード」に切り替わると、システムによりウェアラブル アクティビティで onEnterAmbient() メソッドが呼び出されます。 onEnterAmbient() を上書きし、MapFragment.onEnterAmbient(ambientDetails) または MapView.onEnterAmbient(ambientDetails) を呼び出します。 API により、非インタラクティブで色数の少ないマップのレンダリングに切り替えられます。

  10. 同様に、onExitAmbient()MapFragment.onExitAmbient() または MapView.onExitAmbient() を呼び出します。 API により、マップの標準のレンダリングに切り替えられます。

次のコードサンプルでは、アプリとマップでアンビエント モードを有効にしています。

public class MainActivity extends WearableActivity
        implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {

    private MapFragment mMapFragment;

    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);

        // Enable ambient support, so the map remains visible in a simplified,
        // low-color display when the user is no longer actively using the app
        // and the app is still visible on the watch face.
        setAmbientEnabled();

        // ... Perform other activity setup processes here too ...
    }

    /**
     * Starts ambient mode on the map.
     * The API swaps to a non-interactive and low-color rendering of the map
     * when the user is no longer actively using the app.
     */
    @Override
    public void onEnterAmbient(Bundle ambientDetails) {
        super.onEnterAmbient(ambientDetails);
        mMapFragment.onEnterAmbient(ambientDetails);
    }

    /**
     * Exits ambient mode on the map.
     * The API swaps to the normal rendering of the map when the user starts
     * actively using the app.
     */
    @Override
    public void onExitAmbient() {
        super.onExitAmbient();
        mMapFragment.onExitAmbient();
    }
}

アプリがアンビエント モードになっている間に、画面をアップデートできます。 コンテンツのアップデートに関する詳細とアンビエント モードの一般的な詳細については、アプリを表示したままにするための Android トレーニング クラスをご覧ください。

Android Wear でストリートビューを使用する

ストリートビューは、ウェアラブル端末で完全にサポートされています。

ユーザーがストリートビューのパノラマを表示しているときにアプリを終了できるようにするには、StreetViewPanorama.OnStreetViewPanoramaLongClickListener インターフェースを使用して、長押しクリック操作をリッスンします。

ユーザーがストリートビュー画像の任意の場所を長押しクリックすると、onStreetViewPanoramaLongClick(StreetViewPanoramaOrientation) イベントを受け取ります。

DismissOverlayView.show() を呼び出して終了ボタンを表示します。

サンプルコード

サンプルアプリは GitHub で入手でき、アプリの開始点として使用できます。 サンプルでは、Android Wear での基本的な Google マップのセットアップ方法を説明しています。

Android Wear の Maps API でサポートされている機能

このセクションでは、ウェアラブル端末とハンドヘルド端末(携帯端末とタブレット)のマップでサポートされている機能を比較し、その違いについて概説します。

以下に示されていない API 機能はすべて、完全な API のドキュメントに記されているとおりに動作します。

機能
完全なインタラクティブ モードとライトモード

Google Maps Android API は、完全なインタラクティブ モードまたはライトモードで使用できます。ウェアラブル端末のパフォーマンスを最適化する必要があり、アプリで操作やマップのパンとズームといったインタラクションをサポートする必要がない場合は、ライトモードの使用を検討してください。

ライトモードでは、ユーザーがマップをタップしたときに Google マップ モバイル アプリを開始するインテントが無効になっており、ウェアラブル端末では有効にできません。

ライトモードと完全なインタラクティブ モードの違いをすべて記したリストは、ライトモードのドキュメントを参照してください。

マップ ツールバー マップ ツールバー無効になっており、ウェアラブル端末では有効にできません。
UI コントロール UI コントロールは、ウェアラブル端末ではデフォルトで無効になっています。 これには、ズーム、コンパス、現在地コントロールが含まれます。 通常通り、UiSettings クラスを使用して、 これらを有効にできます。
操作 シングルタッチ操作は、想定どおりの動作になります。 たとえば、タップとドラッグによるマップのパン、ダブルタップによるズームイン、2 本指タップによるズームアウトなどがあります。 マルチタッチ操作のサポートは、ユーザーの端末によって異なります。 マルチタッチ操作の例には、2 本指プッシュによるマップのチルト、ピンチによるズーム、2 本指の回転などがあります。
インドアマップと建物 インドアマップは、ウェアラブル端末ではデフォルトで無効になっています。 GoogleMap.setIndoorEnabled(true) を呼び出して、これを有効にできます。 インドアマップが有効な場合、マップにはデフォルトの階数レベルが表示されます。 レベルピッカー UI 要素は、ウェアラブル端末ではサポートされていません。
タイル オーバーレイ タイル オーバーレイは、ウェアラブル端末ではサポートされていません

Android Wear での Maps API を使用した開発のベスト プラクティス

アプリで優れたユーザー エクスペリエンスを提供する方法を次に示します。

  • マップは画面の大部分を占めるように表示される必要があります。 これは、ウェアラブル端末の小さいフォーム ファクタで、マップのユーザビリティを最適化するために必要です。

  • アプリのユーザー エクスペリエンスをデザインするときには、ウェアラブル端末のバッテリー電力が低いことを考慮してください。 画面がアクティブで、マップが表示された状態のままにすると、バッテリーのパフォーマンスに影響します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。