안전 운행 서비스 관련 문의 사항 입니다

안녕하세요.

길찾기 샘플 소스로 테스트 중입니다.

안전 운행 모드 관련 해서 문의 사항 입니다.

  1. shouldPlayVoiceGuide callback 은 어떤 경우에 발생을 하는 건가요?

  2. shouldPlayVoiceGuide callback 이 호출 되었을때 로그로 확인 시 2가지의 safety code 가 함께 들어 오지만 사운드는 그중에 한가지만 나옵니다. 이렇게 다중의 safety code 가 있을경우 어떤 satety code sound 가 play 되는지 알수 있을까요?
    ex ) aGuidance.safetyGuide?.safetiesOnGuide : [Camera(KNSafetyCode_SignalAndSpeedViolationCamera) : pos(314752.0, 542940.0), limit(50), violation(true), Camera(KNSafetyCode_ParkingViolationCamera) : pos(314826.0, 542830.0), limit(60), violation(false)]
    2개의 안전 운전 코드(KNSafetyCode_SignalAndSpeedViolationCamera, KNSafetyCode_ParkingViolationCamera) 가 한번에 들어 왔지만 사운드 확인 시 신호과속에 대한 안내만 합니다.

  3. 특정 구간을 지나갔다는 것을 알수 있을까요?
    ex ) 보행자 사고 다발 구간 진입/진출 시 알수 있는 방법
    어린이 보호 구역 진입/진출 시 알수 있는 방법 등

빠른 확인 부탁 드립니다.

안녕하세요. 카카오모빌리티의 기술 제휴 담당자입니다.

1 → shouldPlayVoiceGuide는 안내에 맞는 음성이 발화되는 시점에 발생하도록 되어있습니다

2 → KNGuideVoice의 voiceCode와 guideObj를 참고하셔야 합니다
(https://developers.kakaomobility.com/docs/android-ui-ref-kotlin/class-KNGuide_Voice/)
위에서 말씀주신 데이터를 가져온다고 한다면 safetyCode는 아래와 같이 확인 하실 수 있습니다

if (aVoiceGuide.voiceCode == KNVoiceCode.KNVoiceCode_Safety) { val safetyCode = (aVoiceGuide.guideObj as KNSafety).code }

3-1 → 안전운전모드의 주변 정보를 가져오기 위해서는 KNGuidance_SafetyGuideDelegate.guidanceDidUpdateSafetyGuide 에서 확인하셔야 하며, KNGuide_Safety의 KNSafety를 그에 맞는 타입으로 형변환 하셔서 가져오셔야 합니다
위의 질문에서 처럼 KNSafety_Camera의 speedLimit을 가져오기 위해서는 아래와 같이 확인하실 수 있습니다
(임의로 0번 인덱스를 선택 하였습니다)

val limit = (aSafetyGuide.safetiesOnGuide[0] as KNSafety_Camera).speedLimit

3-2 → violation도 위와 마찬가지로 형변환을 하셔야 하며, 아래 코드처럼 가져오실 수 있습니다 (임의로 0번 인덱스를 선택 하였습니다)

val onViolation = (aSafetyGuide.safetiesOnGuide[0] as KNSafety_Camera).onViolation

3-3 → 3-2항목의 onViolation 항목으로 현재 위반 상태 여부를 확인하실 수 있습니다 (true - 위반)

감사합니다.

답변 감사합니다.
3번의 경우 자체적으로 확인이 되어서 제가 다른 문의로 수정을 했습니다.

  1. 특정 구간을 지나갔다는 것을 알수 있을까요?
    ex ) 보행자 사고 다발 구간 진입/진출 시 알수 있는 방법
    어린이 보호 구역 진입/진출 시 알수 있는 방법 등

확인 부탁드립니다.

안녕하세요,

특정 구간의 진입/진출을 알기 위해서는 현재 위치에서부터 해당 구간의 거리(경로상 거리)를 계산해야 하며,
아래와 같이 구할 수 있습니다

guidanceDidUpdateSafetyGuide의 KNGuide_Safety에서 특정 구간의 정보를 받은 후,
해당 구간의 location을 가져옵니다.

guidanceDidUpdateLocation을 통하여 KNGuide_Location(경로상 현재 위치)를 가져와
현재 위치에서 해당 구간까지의 거리를 계산하여야 합니다

계산 방법은 아래와 같습니다 (임의로 0번 인덱스를 선택하였습니다)
val dist = KNGuide_Location.location.distToLocation(KNGuide_Safety.safetiesOnGuide[0].location)

남은 거리를 나타내며, 단위는 미터(m)입니다
특정 구간의 코드는 아래 링크에서 확인하실 수 있습니다

https://developers.kakaomobility.com/docs/android-ui-ref-kotlin/enumerate-KNSafetyCode/

감사합니다.