Android Automotive 인텐트용 Google 지도

면책조항

이 제품/기능은 변경될 예정이며 서비스수준계약 (SLA) 또는 지원 중단 정책이 적용되지 않습니다. 구현은 향후 버전에서 변경될 수 있습니다.

이 문서와 함께 제공되는 샘플 소프트웨어, 데이터 파일, 소스 코드 관련: 이 제품은 어떤 종류의 보증도 없이 '있는 그대로' 제공되며 Google은 상품성, 특정 목적에의 적합성, 이 제품과 관련된 권리의 비침해성에 대한 보증을 포함하되 이에 국한되지 않는 명시적, 묵시적, 법적 또는 기타 모든 보증을 명시적으로 부인합니다.


Android Automotive 인텐트를 통해 Google 지도에서 내비게이션을 실행할 수 있습니다.

자세한 내용은 Android용 Google 지도 인텐트를 참고하세요.

Android Auto 또는 Android Automotive OS를 실행하는 차량에 앱을 가져오는 방법에 관한 자세한 내용은 자동차용 Android를 참고하세요.

개요

이 페이지에서는 Android Automotive용 Google 지도에서 사용할 수 있는 인텐트를 설명합니다. 자세한 Android 개발자 문서는 다음을 참고하세요.

인텐트 요청

인텐트로 Android Automotive용 Google 지도를 실행하려면 먼저 Intent 객체를 만들고 작업, URI, 패키지를 지정해야 합니다.

  • 작업 모든 Google 지도 인텐트를 뷰 작업(ACTION_VIEW)이라고 합니다.

  • URI. Google 지도 인텐트는 원하는 작업과 해당 작업을 실행할 일부 데이터를 지정하는 URI 인코딩 문자열을 사용합니다.

  • 패키지. setPackage("com.google.android.apps.maps")를 호출하면 Android용 Google 지도 앱에서 인텐트를 처리합니다. 패키지가 설정되지 않으면 시스템은 인텐트를 처리할 수 있는 앱을 결정합니다. 사용할 수 있는 앱이 여러 개인 경우 사용할 앱을 묻는 메시지가 표시될 수 있습니다.

인텐트를 만든 후에는 시스템이 다양한 방법으로 관련 앱을 실행하도록 요청할 수 있습니다. 일반적인 방법은 인텐트를 [startActivity()] 메서드에 전달하는 것입니다. 시스템이 필요한 앱(이 경우 Google 지도)을 실행하고 상응하는 Activity를 시작합니다.

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

시스템이 인텐트에 응답할 수 있는 앱을 식별하지 못하면 앱이 비정상 종료될 수 있습니다. 따라서 사용자에게 인텐트 중 하나를 제시하기 전에 먼저 수신 애플리케이션이 설치되어 있는지 확인해야 합니다.

앱이 인텐트를 수신할 수 있는지 확인하려면 [Intent] 객체에서 [resolveActivity()]를 호출합니다. 결과가 null이 아닌 경우 인텐트를 처리할 수 있는 앱이 하나 이상 있는 것이므로 [startActivity()]를 호출해도 안전합니다. 결과가 null이면 인텐트를 사용해서는 안 되며, 가능하면 인텐트를 호출하는 기능을 사용 중지해야 합니다.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

예를 들어 시드니에 있는 타롱가 동물원의 세부 경로 안내 내비게이션을 시작하려면 다음 코드를 사용하면 됩니다.

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

URI 인코딩된 쿼리 문자열

Google Maps 인텐트에 전달되는 모든 문자열은 URI 인코딩되어야 합니다. 예를 들어 '1st & Pike, Seattle' 문자열은 1st%20%26%20Pike%2C%20Seattle가 됩니다. 문자열의 공백은 %20로 인코딩하거나 더하기 기호(+)로 대체할 수 있습니다.

android.net.Uri parse() 메서드를 사용하여 문자열을 인코딩할 수 있습니다. 예를 들면 다음과 같습니다.

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

세부 경로 안내 내비게이션 시작

이 인텐트를 사용하여 하나 이상의 지정된 주소나 좌표에 대한 세부 경로 안내로 Google 지도 내비게이션을 시작합니다. 경로는 항상 사용자의 현재 위치에서부터 제공됩니다.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

매개변수

내비게이션을 실행하려면 선택사항인 waypoints와 함께 place 또는 q를 사용합니다. 원하는 경우 경유지를 충전소로 표시하려면 Google 지도에 전기자동차 여행 계획 보내기를 참고하세요.

  • q는 내비게이션 검색의 종료 지점을 설정합니다. 위도/경도 또는 쿼리 형식의 주소일 수 있습니다. 두 개 이상의 결과를 반환하는 쿼리 문자열인 경우 첫 번째 결과가 선택됩니다.

  • place는 엔드포인트를 집 또는 직장으로 설정합니다. 사용자의 집으로 이동하는 집과 사용자의 직장으로 이동할 직장을 지정합니다.

  • avoid는 경로에서 피해야 할 지형지물을 설정합니다. avoid는 선택사항이며 다음 중 하나 이상으로 설정할 수 있습니다.

    • t: 유료도로
    • 고속도로의 경우 h
    • f: 페리
  • waypointsq로 지정된 최종 목적지까지 경로를 라우팅할 하나 이상의 중간 장소를 지정합니다. 파이프 문자(|)를 사용하여 장소를 구분하면 여러 개의 경유지를 지정할 수 있습니다(예: Berlin,Germany|Paris,France). 필요한 만큼 경유지를 사용할 수 있습니다. 경유지는 URL에 나열되는 순서대로 경로에 추가됩니다. 각 경유지는 주소 또는 쉼표로 구분된 위도/경도 좌표일 수 있습니다. 동일한 인텐트에 주소와 위도/경도 좌표를 포함할 수 있습니다. 문자열은 URL로 이스케이프 처리되어야 하므로 '독일, 독일|파리, 프랑스'와 같은 경유지는 Berlin%2CGermany%7CParis%2CFrance로 변환해야 합니다.

이 인텐트는 오스트레일리아 시드니 타롱가 동물원의 세부 경로 안내를 요청합니다.

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

통행료를 지불하거나 페리를 타지 않으려면 다음 상황을 피하기 위해 경로를 요청할 수 있습니다.

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

집으로 이동하려면 다음을 사용하세요.

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

다음 세 주소에 대한 세부 경로 안내 내비게이션을 시작하려면 최종 목적지 q로 Taronga 동물원을 전달하고 경유지로 Google 시드니와 시드니 오페라 하우스를 전달합니다.

  1. Google 시드니

  2. 시드니 오페라 하우스

  3. 타롱가 동물원, 시드니

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

q와 마찬가지로 주소 대신 쉼표로 구분된 위도와 경도로 경유지를 나타낼 수 있습니다. 예를 들어, 주소 대신 시드니 오페라 하우스의 위도 경도를 전달하는 동안 동일한 탐색을 실행하려면 다음을 실행합니다.

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Google 지도로 전기자동차 여행 계획 보내기

이 다중 대상 탐색 인텐트를 사용하여 일부 목적지를 전기자동차 (EV) 충전소로 지정합니다. 다중 경유지 인텐트를 확장하는 이 인텐트는 EV 이동 계획 앱과 Google 지도 간에 충전소 정보를 동기화하여 운전자가 목적지에 도달하기에 충분한 전기자동차 배터리 충전량을 유지할 수 있도록 지원합니다.

충전소의 경우 이동 인텐트는 다음을 충족해야 합니다.

  • 이름 및 위도/경도를 포함해야 합니다.
  • 충전 시간 계산에 사용하기 위해 전원 출력을 포함할 수 있음(선택사항)

Google은 충전소 이름과 위도/경도를 사용하여 일치하는 충전소 장소를 찾아 커넥터 유형, 총계, 속도, 실시간 사용 가능 여부, 지원되는 결제 수단, 호스트 관심 장소 (POI)와 같은 풍부한 데이터를 표시합니다. 내비게이션의 마지막 부분, 영업시간, 평점의 야외 주차장 내 운전 경로를 예로 들 수 있습니다. 충전소가 Google 데이터와 잘 일치하도록 하려면 <brand name>(예: ChargePoint)를 사용하세요.

매개변수

최종 목적지

충전소를 최종 목적지로 설정하려면 다음을 사용하세요.

  • q: 충전소의 위도/경도 값을 포함해야 합니다.
  • q_type: 1는 최종 목적지가 충전소임을 지정합니다.
  • q_name: 최종 대상의 이름입니다. q_type1인 경우에 필요합니다.
  • q_power_output_kw: 충전소 전력 출력을 킬로와트 단위로 나타내는 이중 숫자입니다. 선택사항입니다.

경유지

경유지의 경우 모든 매개변수가 병렬로, |로 구분된 값 배열이며, 경유지와 순서는 동일하며, 최종 목적지는 포함되지 않습니다. 병렬 배열의 요소 수가 일치하지 않으면 형식이 잘못된 인텐트로 처리됩니다.

하나 이상의 충전소 경유지를 추가하려면 다음 매개변수를 사용합니다. 모두 선택사항입니다. 목적지 중 하나가 충전소로 표시되면 경유지 이름이 해당 목적지에 대해 필수입니다.

  • waypoints: 세부 경로 안내 내비게이션 인텐트에 설명된 경유지 목록입니다. 충전소 경유지의 위도/경도 값이어야 합니다.

  • waypoint_types: 경유지당 유형을 숫자로 지정합니다. 0은 임의의 정류장 (기본값)이고 1은 충전소입니다.

  • waypoint_names: 경유지 이름 이 필드는 충전소에서 필수입니다.

  • waypoint_power_outputs_kw: 충전소 전력을 킬로와트 단위로 나타내는 두 개의 숫자입니다. 충전소의 경우 경유지 전원 출력 값을 선택적으로 지정할 수 있습니다. 이는 일치하는 충전소를 찾을 수 없을 때 대체 값으로 사용됩니다. 빈 슬롯은 제공된 값이 없음을 의미합니다.

사용자 환경 (UX) 동작

대상이 여러 개인 이동 인텐트의 경우 경로 개요 화면이 표시되지만 탐색이 자동으로 시작되지는 않습니다.

올바른 형식이 지정된 인텐트의 경우 Google 지도는 경로의 경로 개요 화면을 표시합니다. 경로 개요 화면에는 인텐트의 모든 경유지와 최종 목적지가 표시되며, 해당하는 경우 충전 권장사항도 함께 표시됩니다.

Google 지도는 Google 데이터베이스에서 충전소로 표시된 경유지나 최종 목적지를 검색합니다.

일치하는 항목이 발견되면 Google 지도에서 Google 데이터를 사용하여 사용자 인터페이스 (UI)에 충전소를 표시하고 충전소에 대한 충전 추천을 제공합니다. 일치 항목을 찾을 수 없는 경우 충전소의 인텐트에 제공된 데이터 (위도/경도, 이름, 전원 출력)는 이 충전소를 UI에 표시하고 충전소의 충전 추천을 제공하는 데 사용됩니다.

여러 충전소를 통해 최종 목적지까지 경로 안내

다음 인텐트는 두 개의 충전소(ChargePoint 및 Evie)를 통해 최종 목적지인 포트 맥쿼리 NSW로 이동합니다.

목적지 순서:

  1. ChargePoint 충전소 (위치: -32.9599188,151.6240806, 전원 출력: 6.6kw)

  2. Evie 충전소 (위치: -31.9432539,152.4699808, 전원 출력: 350kw)

  3. 포트 맥쿼리, 뉴사우스웨일스 주

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

알 수 없는 전원 출력

전원 출력 값을 알 수 없는 경우 waypoint_power_outputs_kw의 관련 슬롯을 비워 둡니다. 또는 모든 슬롯이 비어 있으면 waypoint_power_outputs_kw 매개변수를 지정할 필요가 없습니다.

목적지 순서:

  1. ChargePoint 충전소 (위치: -32.9599188,151.6240806, 전원 출력: 알 수 없음)

  2. 포트 맥쿼리, 뉴사우스웨일스 주

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

최종 목적지를 충전소로 표시

최종 목적지를 충전소로 표시하려면 q_type, q_name, q_power_output_kw 매개변수를 지정합니다.

목적지 순서:

  1. 타롱가 동물원, 시드니

  2. ChargePoint 충전소 (위치: -32.9599188,151.6240806, 전원 출력: 알 수 없음)

  3. Evie 충전소 (위치: -31.9432539,152.4699808, 전원 출력: 350kw)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);