flywithu

Seunghee's Story

Tmap for UX999

네이버에 ux999를 입력하면.
ux999 : 네이버 통합검색 (naver.com)
많은 결과가 나온다.

바로 애플카플레이 프토토콜로 안드로이드를 사용하는 AI BOX라고도 불리는 장치이다.

얼마전에 이것을 구입해서 잘 활용하고 있는데.. 문제점이 있는 것이
TMAP에서만 GPS가 끊기는 현상이 있다. 장치 내부 GPS를 이용하면 괜찮은데, 애플카플레이 프로토콜로 GPS를 받으면 달리다가 끊기는 현상이다. 즉 자동차 외부 GPS를 사용하면 장치를 눈에 안 보이는 곳에 숨길수 있는데, 장치 내부 GPS를 쓰면 GPS를 수신할수 있게 꺼내 놓아야 한다. 그렇다고 외부 GPS연동에 문제가 있는가 하면 ‘카카오 내비’는 잘 작동 한다는 것이다.

그래서 TMAP 고객센터에 문의 했더니 GPS신호를 1초마다 수신해야 하는데 그렇지 못해서 그런것이고, GPS 모듈 문제라는 회신을 받았다. 카카오내비도 잘되고 GPS 좌표도 정상적으로 받는다고 아무리 이야기 했지만 그냥 내 GPS 문제라고.

그래서 카카오내비를 썼는데.. 아무래도 불편하다. 그래서 tmap을 동작하게 해야 겠다고 생각했다.

TMAP을 리버싱해서 확인해보니.. 역시 역사가 느껴지는 코드이다. 예전 장비들은 GPS 오류가 많았던것으로 추측이 되고.. 그에 대해서 다양한 방법으로 그 GPS오류를 회피하게 해놓았다.
GPS가 갑자기 튀거나, 터널을 들어가거나, 교차로를 지나가는 등등.. 상황을 예상해서 필터를 걸고,
이러한 로직중에 나의 환경과 충돌나는 부분이 있었는데.,
난 카플레이 프토토콜로 GPS를 사용하기 떄문에 사용가능한 GPS 개수는 0개이다. 그냥 좌표값만 나온다.
그러나 TMAP의 로직은 사용가능한 GPS가 0개이면 그냥 아웃시켜 버린다. 그결과 달리다가 GPS가 끊기는 결과가 나왔다.

이런 문제를 회피하는 방법은 사용가능한 GPS를 여러개 있다고 가짜로 알려 주면 된다. 그러면 여기서 안드로이드 Framework를 수정하거나 Tmap을 수정해야 하는데, Framework를 수정하는게 맞는 방향이기는 하나, 귀찮다.; 그래서 그냥 Tmap을 수정하기로 했다. 그냥 GPS가 항상 언제나 0x10개라고 return 하게 해주었다. 이렇게 하면 단점이 진짜로 GPS신호를 잃었을 때도 있다고 잘못된 정보가 나가는 것인데…

나의 환경으로 봐서는 GPS가 있는데 없다고 하는것 보다, 없는데도 있다고 하는게 더 좋다. 실제로 GPS가 고장날 가능성은 낮고, 이런 경우 금방 문제가 눈에 보일 것이고.. 현재 프로토콜상 실제 GPS개수를 알수도 없기 때문이다. 아래 코드가 반영된 APK은 아래와 같다.

Tmap이 처음 안내처럼 GPS가 1초마다 변하면 GPS 신호를 인정해주거나…
이런 새로운 장비도 지원을 해 주었으면 좋겠는데…

diff --git a/smali_classes4/com/skt/tmap/engine/navigation/location/GpsStatusListener.smali b/smali_classes4/com/skt/tmap/engine/navigation/location/GpsStatusListener.smali
index aca1d41d..dbcbb64e 100644
--- a/smali_classes4/com/skt/tmap/engine/navigation/location/GpsStatusListener.smali
+++ b/smali_classes4/com/skt/tmap/engine/navigation/location/GpsStatusListener.smali
@@ -107,6 +107,7 @@

     .line 1
     iget v0, p0, Lcom/skt/tmap/engine/navigation/location/GpsStatusListener;->fixedSatelliteCount:I
+    const v0, 0x10

     return v0
 .end method