모든 준비를 마쳤습니다!

개발을 시작하려면 개발자 문서로 이동하세요.

Google Maps Android API 활성화

개발을 시작하기 위해 Google Developers Console에서 우선적으로 해야 할 일을 몇 가지 소개하겠습니다.

  1. 프로젝트 생성 또는 선택
  2. Google Maps Android API 활성화
  3. 적합한 키 생성
계속

Android Wear의 Maps API

A map on a wearable device

Google Maps Android API를 사용하여 Android Wear 기기에서 바로 실행되는 지도 기반 웨어러블 앱을 제작할 수 있습니다. 앱 사용자가 손목을 보는 것만으로 지도에서 자신의 위치를 확인할 수 있습니다. 예를 들어, 경로에 위치를 표시하고 확대하여 상세 정보를 보거나, 마커를 눌러서 앱이 제공하는 정보 창을 확인할 수 있습니다.

이 페이지에서는 웨어러블 기기에서 사용할 수 있는 API 기능을 설명하고 앱 제작을 시작하는 데 도움이 되는 정보를 제공합니다.

Android Wear에서 시작하기

Google Maps Android API로 웨어러블 앱을 제작하는 것은 기본적으로 다른 Android 기기용 Google 지도 앱을 제작하는 것과 같습니다. 차이가 있다면, 웨어러블 기기의 폼 팩터가 더 작으므로, 앱의 가용성과 성능을 최적화하도록 설계해야 한다는 것입니다.

Android Wear 개발에는 Android Studio를 권장합니다. 프로젝트 설정, 라이브러리 포함, 패키징 편의성을 제공하기 때문입니다.

웨어러블 앱 설계에 전반적인 도움을 받으려면 Android Wear 디자인 가이드라인을 참조하세요. 처음 웨어러블 앱을 제작할 때 도움을 받으려면 웨어러블 앱 제작 가이드를 참조하세요.

Android Wear에서 첫 번째 지도 앱 제작

이 빠른 가이드에서는 개발자가 Google Maps Android API에 친숙하고, Android 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 Maps 앱에서 스와이프 동작은 지도를 팬할 때 사용합니다.

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를 업데이트하는 방법에 대한 내용은 SDK 패키지 추가에 관한 Android 문서를 참조하세요.
  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 Maps 모바일 앱을 시작하는 인텐트는 비활성화되어 있고 웨어러벌 기기에서 활성화할 수 없습니다.

라이트 모드와 완전한 대화형 모드 사이의 모든 차이점을 기록한 목록을 보려면 라이트 모드 문서를 참조하세요.

지도 툴바 지도 툴바비활성화되어있고 웨어러블 기기에서 활성화할 수 없습니다.
UI 컨트롤 UI 컨트롤은 웨어러블 기기에서 기본적으로 비활성화되어 있습니다. 여기에는 확대/축소, 나침반, My Location 컨트롤이 포함됩니다. 평소처럼 UiSettings 클래스를 사용하여 활성화할 수 있습니다.
제스처 단일 터치 제스처가 예상대로 작동합니다. 예를 들어, 터치 및 드래그하여 지도 패닝, 두 번 탭하여 확대, 두 손가락으로 탭하여 축소 등이 있습니다. 멀티터치 제스처 지원은 사용자의 기기에 따라 다릅니다. 멀티터치 제스처에는 두 손가락으로 밀어서 지도 틸트, 손가락을 모아서 확대/축소, 두 손가락으로 회전 등이 포함됩니다.
실내 지도 및 건물 실내 지도는 웨어러블 기기에서 기본적으로 비활성화되어 있습니다. GoogleMap.setIndoorEnabled(true)를 호출하여 활성화할 수 있습니다. 실내 지도가 활성화되면 지도에 기본 층 수가 표시됩니다. 레벨 선택기 UI 요소는 웨어러블 기기에서 지원되지 않습니다.
타일 오버레이 타일 오버레이는 웨어러블 기기에서 지원되지 않습니다.

Android Wear에서 Maps API를 사용한 개발 모범 사례

앱에서 최고의 사용자 경험을 제공하는 방법:

  • 지도는 화면에서 많은 부분을 차지합니다. 따라서 웨어러블 기기의 소형 폼 팩터에서는 지도의 가용성을 최적화하는 것은 필수입니다.
  • 앱의 사용자 경험을 디자인할 때는 웨어러블 기기의 배터리 수명이 낮다는 것을 고려해야 합니다. 화면이 활성화된 상태에서 지도를 계속 표시하면 배터리 성능에 영향을 미칩니다.

다음에 대한 의견 보내기...

Google Maps Android API
Google Maps Android API
도움이 필요하시나요? 지원 페이지를 방문하세요.