카테고리 없음

삼성 통화 연결 시점 추적: com.samsung.rcs.CALL_STATE_CHANGED

Leafdesk 2023. 11. 20. 16:59

안녕하세요, 삼성 핸드폰에서 사용되는 com.samsung.rcs.CALL_STATE_CHANGED 브로드캐스트 이벤트에 대해 알아보겠습니다. 이 브로드캐스트는 통화 상태 변화를 감지하고 추적하는 데 사용되며, 안드로이드 시스템과 다른 독특한 특징을 가지고 있습니다.

 

안드로이드 버전에 따른 변화 🚨

com.samsung.rcs.CALL_STATE_CHANGED 브로드캐스트는 안드로이드 12까지는 정상적으로 작동했지만, 안드로이드 13부터는 사용이 제한되거나 deprecated 되었습니다. 개발자는 새로운 안드로이드 버전에서 동작 방식을 주의 깊게 확인해야 합니다.

 

 

통화 상태 이해

삼성 디바이스에서는 com.samsung.rcs.CALL_STATE_CHANGED 브로드캐스트를 통해 통화 상태를 관리합니다. 이 브로드캐스트는 대표적으로 두 가지 상태 값을 가지고 있습니다. ‘1’은 통화 미연결, ‘2’는 통화 연결 상태입니다.

이와 달리, 안드로이드에서 기본적으로 제공하는 CallState는 세 가지 상태 값(IDLE, RINGING, OFFHOOK)을 가지고 있습니다. ‘IDLE’은 전화가 진행되지 않는 상태, ‘RINGING’은 수신 전화가 착신되어 벨이 울리는 상태, ‘OFFHOOK’은 전화를 받거나 시작한 상태입니다.

 

차이점 이해

삼성의 com.samsung.rcs.CALL_STATE_CHANGED는 안드로이드의 기본 CallState와 차이가 있습니다. 안드로이드 시스템에서 OFFHOOK 상태는 전화 발신 시 상대방이 전화를 받기 전부터 적용되지만, 삼성 브로드캐스트의 '2' 상태는 상대방이 전화를 받았을 때만 적용됩니다.

예를 들어, 발신 전화가 시작되고 상대방이 받지 않은 채로 종료되었다고 합시다. 이 경우에는 전화를 시작할 때 OFFHOOK 상태가 되고, 전화를 종료할 때 IDLE 상태가 될 것입니다. 이때 삼성 브로드캐스트는 ‘2’ 상태로 변경되지 않습니다. 상대방이 전화를 받지 않았기 때문입니다.

 

순수 통화 시간 측정

삼성의 com.samsung.rcs.CALL_STATE_CHANGED를 사용하면, 안드로이드의 OFFHOOK(발신 콜의 콜 시작 시점)과는 구분되는 통화 연결 시점을 정확히 알 수 있습니다. 이를 통해 발신 신호음 시간을 제외한 순수 통화 시간을 측정할 수 있습니다.

 

시스템 로그로 상태 추적하기

안드로이드 시스템 로그(dumpstate)에서 com.samsung.rcs.CALL_STATE_CHANGED 상태를 추적할 수 있습니다. 로그를 분석하면 통화 상태의 변화와 시점을 확인할 수 있습니다. Android Debug Bridge (ADB)를 사용하여 실시간으로 로그를 추적할 수 있습니다. adb logcat 명령은 실시간으로 시스템 로그를 스트리밍 하는 데 사용됩니다.

안드로이드 스튜디오에서는 하단 logcat 탭에서 실시간 시스템 로그를 확인할 수 있습니다. package:mine 필터를 해제하면, 현재 개발 중인 앱 이외에도 시스템 전체 로그를 스트리밍할 수 있습니다. dumpstate 로그도 이러한 로그의 일부가 될 수 있으며, 특정 태그를 필터링하여 관련 로그를 볼 수 있습니다.

 

추가 팁: 삼성 안드로이드 dumpstate 가져오기

삼성 안드로이드 시스템 로그(dumpstate)를 간편하게 가져오는 방법에 대해서도 언급하겠습니다. 이 로그는 애플리케이션의 성능 문제나 버그를 진단하는 데 유용합니다.

  1. 삼성 핸드폰의 경우, 전화 다이얼에서 *#9900# 을 입력하면 SysDump 화면으로 이동합니다.
  2. ‘Run dumpstate/logcat’ 항목을 터치하여 dumpstate 가져오기를 시작합니다.
    ‘Wait…’ 이라는 메시지가 표시되며 dumpstate 가져오기가 진행됩니다.
    가져오기가 완료되면 ‘Dump Result. Saved Location: 저장 위치’가 표시됩니다. OK 버튼을 누르고,
  3. 이제 ‘Copy to sdcard(include CP Ramdump)’ 항목을 터치하여 메모리로 복사합니다. 역시 ‘Wait…’이라는 메시지가 표시되며 복사가 진행됩니다. 완료되면 ‘Dump Result. Copy Success!’ 메시지가 표시됩니다.
  4. 저장소에서 /log/dumpState_A426NKSU5EWH2_202311009999.log 형식의 로그 파일을 찾아 확인하면 됩니다.

 

다음은 안드로이드 시스템 로그(dumpstate)에서 com.samsung.rcs.CALL_STATE_CHANGED 상태를 확인한 예입니다:

11-09 17:47:28.983 1000 4746 5074 I CallStateTracker: Received intent: com.samsung.rcs.CALL_STATE_CHANGED extra: Bundle[mParcelledData.dataSize=216] 
11-09 17:47:28.983 1000 4746 5074 I CallStateTracker: Received call event: 2, phoneId: 0, isCmcConnected: false, isCmcCall: false 
11-09 17:47:28.984 1000 4746 5074 I CallStateTracker: Tel Number length 11 
11-09 17:47:40.761 1000 4746 5074 I CallStateTracker: Received intent: com.samsung.rcs.CALL_STATE_CHANGED extra: Bundle[mParcelledData.dataSize=216] 
11-09 17:47:40.761 1000 4746 5074 I CallStateTracker: Received call event: 1, phoneId: 0, isCmcConnected: false, isCmcCall: false 
11-09 17:47:40.761 1000 4746 5074 I CallStateTracker: Tel Number length 11

 

 

삼성 핸드폰의 com.samsung.rcs.CALL_STATE_CHANGED 브로드캐스트에 대해 알아보았습니다. 이 정보를 활용하여 효율적인 통화 관리 기능을 개발하거나 통화 데이터를 분석하는 데 도움이 될 것입니다.