본문 바로가기
프로그램/Android

[Kotlin] 사용자 앱에서 카카오내비 호출

by 로드러너 2019. 4. 11.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android Studio 3.3.2

 

1. gradle.properties (Project Properties) 파일에 버전정보 추가

 

    KAKAO_SDK_GROUP=com.kakao.sdk
    KAKAO_SDK_VERSION=1.17.0

 

 

2. kakao_strings.xml 파일을 작성해서 아래 코드를 추가한다.

 

    <resources>

        <string name="kakao_app_key">앱키</string>

    </resources>

 

 

3. build.gradle (Project: 프로젝트명) 파일에 maven repository 경로 정보 추가

 

    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
        }
    }

 

 

4. build.gradle (Module: app) 파일에 kakaonavi 라이브러리 정보 추가

 

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        . . .

        // 카카오내비 sdk를 사용하기 위해 필요.
        implementation group: 'com.kakao.sdk', name: 'kakaonavi', version: project.KAKAO_SDK_VERSION   
    }

 

 

5. AndroidManifest.xml 파일에 권한 및 AppKey 추가

 

    카카오내비 SDK는 카카오내비 앱이 설치되어 있지 않을 때 기본적으로 웹뷰를 사용하여 길안내를 시작합니다.

    이 기 능을 사용하기 위해서는 앱에 위치 권한을 줘야 합니다.

 

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

 

        <application>
            . . . 
            <meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key"/>

            . . . 

        </application>

 

    만약 웹뷰를 사용하기 싫거나 앱에 위치 권한을 사용하는 것이 부담스럽다면 AndroidManifest.xml에서 

    위치 권한을 빼고 "com.kakao.sdk.kakaonavi.useWebView" 라는 값을 false로 지정해 줍니다.

 

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

 

        <application>
            . . . 
            <meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key" />
            <meta-data android:name="com.kakao.sdk.kakaonavi.useWebView" android:value="false" />
            . . . 

        </application>

 

 

네비게이션 앱을 호출할 준비가 끝났습니다. KakaoNaviService를 이용해서 API 요청을 합니다. KakaoNaviService는 인텐트 호출을 통하여 카카오내비 앱 또는 브라우저를 구동하여 목적지 공유/길안내 기능을 실행합니다. 카카오내비 앱이 설치되어 있을 경우에는 앱을 호출하고 그렇지 않을 경우에는 기본 브라우저로 카카오내비의 웹버전을 엽니다.

 

 

다음 코드는 카카오내비를 호출해서 현재 위치에서 '서울특별시청'까지 길안내를 시작하는 예제 입니다.

 

    // Location.Builder를 사용하여 Location 객체를 만든다.
    val destination = Location.newBuilder("서울특별시청", 126.978431, 37.566623).build()

 

    // 1종차량, 빠른길, 최단거리 길안내
    val options = NaviOptions.newBuilder().setCoordType(CoordType.WGS84).setVehicleType(VehicleType.FIRST)
                                      .setRpOption(RpOption.SHORTEST).build()

    // 경유지를 포함하지 않는 KakaoNaviParams.Builder 객체
    val builder = KakaoNaviParams.newBuilder(destination).setNaviOptions(options)

 

    // 카카오내비 호출
    KakaoNaviService.getInstance().navigate(this, builder.build());