Use KaKao Navi
내 앱에서 카카오 내비게이션의 길 찾기 기능을 이용하려면 어떻게 해야 할까요? 우선 카카오로부터 API 승인을 받은 후 아래와 같이 어플에 권한 및 API를 적용해 주면 됩니다.
1. build.gradle (android) 설정
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}
}
프로젝트 수준의 build.gradle에 api호출을 위한 maven repository를 추가해줍니다.
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
2. build.gralde (:app) 설정
dependencies {
...
// 카카오내비 sdk를 사용하기 위해 필요.
implementation "com.kakao.sdk:v2-navi:2.14.0" // 카카오내비
}
앱 수준의 build.gradle에 카카오 내비게이션 API를 추가해 줍니다.
2023년 7월 6일 기준 최신 버전은 2.14.0이며, 이후 변경 되는 버전에 맞춰 변경 가능합니다.
3. Custom Application 생성
package com.test.app
import android.app.Application
import com.kakao.sdk.common.KakaoSdk
class GlobalApplication : Application() {
override fun onCreate() {
super.onCreate()
// Kakao SDK 초기화
KakaoSdk.init(this, "카카오앱키")
}
}
AndroidMainifest에서 지정되는 방법도 있는 것 같지만 제 경우에는 이렇게 지정하는 게 더 잘 적용되어서 Application을 선언하여 사용하였습니다.
여기서 "카카오앱키"는 아래의 카카오 개발자 사이트에서 등록한 APP의 네이티브 앱 키가 됩니다.
4. AndroidManifest.xml 설정
<application
android:name=".GlobalApplication"
...
>
...
</application>
3번 에서 생성한 GlobalApplication의 이름을 AndroidManifest.xml의 application단에 name으로 지정해 주면, Activity가 실행되기 전에 GlobalApplication이 먼저 실행되게 되고, 이때 KakaoSdk.init가 실행되어 권한을 인증받게 됩니다.
5. 메서드 생성
/**
* @description 카카오 내비게이션으로 이동
* @param name 내비게이션에 표기될 명칭
* @param latitude 위도
* @param longitude 경도
*/
fun moveToKakaoNavi(context:Context, name:String, latitude:Double, longitude:Double) {
// Step. 카카오 내비가 설치된 경우
if (NaviClient.instance.isKakaoNaviInstalled(context)) {
println("Step. 카카오 내비가 설치된 경우")
var destination = name
if(name.isBlank()) destination = "목적지"
println("name $destination")
println("longitude $longitude")
println("latitude $latitude")
context.startActivity(
NaviClient.instance.shareDestinationIntent(
destination = Location(destination, longitude.toString(), latitude.toString())
, option = NaviOption(CoordType.WGS84)
)
)
// Step. 카카오 내비가 설치되지 않은 경우
} else {
println("Step. 카카오 내비가 설치되지 않은 경우")
Toast.makeText(context, "카카오내비가 설치되어있지 않아 설치페이지로 이동합니다.", Toast.LENGTH_SHORT).show()
context.startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(Constants.WEB_NAVI_INSTALL))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
)
}
}
위 와 같이 메서드로 선언해 두면 어디서든 재 사용 가능합니다.
2.8.4 버전부터는 내비게이션 미설치 시 기능을 제공하지 않기 때문에 설치 여부에 따라 설치 페이지로 분기가 필요합니다.
6. 메서드 활용
moveToKakaoNavi(this, "이동테스트", 37.5658091, 126.9729574)
'개발 창고 > Android' 카테고리의 다른 글
[Android] How to use SharedPreference (143) | 2024.02.06 |
---|---|
[Android] 안드로이드 버전 확인 하는 방법 (188) | 2024.01.04 |
[Kotlin] How to do Type Casting (1) | 2023.12.13 |
[Kotlin] How to Handle Events in EditText (1) | 2023.12.13 |
[Kotlin] How to Applying Bold and Italic to TextView (2) | 2023.12.12 |