2017-01-20 10 views
9

API 21 이후 Google은 일반적으로 에 기능을 추가했습니다. 특히 TelecomManager의 더 많은 구성원을 구현하고 InCallService을 추가로 구현했습니다. 이 마지막 하나는 비 시스템 타사 앱이 시스템 콜 앱 인 콜 화면의 기능을 제공하고 대체 할 수 있도록 허용되었습니다. 팝업 창에서 EXTRA_STATE_OFFHOOK 또는 EXTRA_STATE_RINGING 브로드 캐스트 (예 : 수신 및 발신 전화).android.telecom 및 InCallService를 사용하여 수신 전화 받기

현재이 화면에서만 루트 제한 MODIFY_PHONE_STATE 권한과 리플렉션으로 액세스 할 수없는 많은 보안 AOSP 코드를 통해 세부 정보가 포함 된 벨소리 및 활성 통화 및 관련 시스템 콜백을 완벽하게 제어 할 수 있습니다. 특히 제조사의 ROM 맛과 런처, 연락처 및 카메라에서 가장 많이 변경된 코드 조각 중 하나입니다.

어떻게 당신이 실제로 제 3 자 InCallService을 개발 할 ... 모든 아주 예쁜하지만?

은 즉 : 당신이에 대한 알림 및 GSM의 인스턴스를 획득합니까 어떻게

  1. 한 다음 호출에 응답 않는 방법
  2. 를 호출
  3. 콜백의 라이프 사이클이 클래스에 무엇
  4. 구글은 내가 발견하지 않은이에 대한 실제 튜토리얼을 제공합니까

나는 것 아닌 sk는이 모든 것에 대해 한 번에 응답하지만, 한 가지 대답은 아마도 다른 질문과 연관되어있을 것입니다. 이것은 넓지 만 본질적으로 다음과 같을 필요가 있습니다. AOSP 코드 이외의 다른 웹을 우연히 발견 한 예는 없습니다.이 코드는 루트 권한의 가정을 기반으로하므로 써드 파티 앱 개발에 사용할 수 없게됩니다 목적.

+0

1 번 질문에'android.intent.action.PHONE_STATE' 방송이 작동하지 않습니까? –

+0

@SharpEdge "전화"를 통보 받았지만 어느 것을 안다면 안드로이드 .telecom.Call - https://developer.android.com/reference/android/telecom/Call.html 그런 경우에 나는 실제로 그냥 전화 # 대답 (int videoState) 얻을 2. 밖으로 정렬 – leRobot

+0

거기 밖으로 많은 정보가있을 것 같지 않습니다 -이 질문에 의견을 도울 수 있습니다. http://stackoverflow.com/q/34861910/334402 . 확실하지 않은 경우를 대비하여이 API는 InCallUI, 즉 호출을 제어하기위한 사용자 인터페이스를 대체하는 것입니다. – Mick

답변

2

Replacing in call app의 두 번째 설명의 조언을 따르십시오. 또한 InCallService 인터페이스를 구현하는 서비스가 필요합니다. 호출이 도착하면 onCallAdded (호출 호출) 메소드가 호출되어 호출 객체에 대한 참조를 제공합니다.

<service 
    android:name=".InCallServiceImplementation" 
    android:enabled="true" 
    android:exported="true" 
    android:permission="android.permission.BIND_INCALL_SERVICE"> 

    <meta-data 
    android:name="android.telecom.IN_CALL_SERVICE_UI" 
    android:value="true" /> 

    <intent-filter> 
    <action android:name="android.telecom.InCallService" /> 
    </intent-filter> 
</service> 

일단 호출 객체가 있으면 call.answer()와 같이 간단하게 응답합니다. 위 작업을 수행 할 때 몇 가지 테스트 호출을 실행하여 다른 콜백이 호출되는 시점을 알 수 있습니다.

튜토리얼에 관한

나는이에보고 할 때, 나는 어떤을 찾을 수 없습니다,하지만 ... 년 전에이 도움이

희망이었다!

+0

좋은, 오늘 테스트 구현을 시도하고 결과와 함께 돌아올 – leRobot

+0

안녕 IeRobot, 당신은 InCallService을 시도 했습니까, 내 경우에 서비스가 들어오고 나가는 호출에 대한 호출되지 않습니다. – rajahsekar

4

안드로이드 8에서 분명히 새로운 허가 allows answering calls through a 3rd party dev-facing permission이 있기 때문에 나는이 질문을 읽었을 것입니다.

android.permission ANSWER_PHONE_CALLS (...) 앱이 수신 전화 프로그램 아직하지만

없음 세부 사항을, API (26)에 대한 문서는 아직 발표되지 않았기 때문에 에 응답 할 수 있습니다. 내가 할 때이 대답을 업데이 트해야합니다.