Поскольку API 21, Google добавляет функции к android.telecom в целом, особенно путем внедрения большего количества членов TelecomManager и добавления InCallService. Этот последний, как предполагается, позволяет несистемным, сторонним приложениям предоставлять и заменять функциональные возможности экрана вызова вызовов Calls в окне вызова - окно, которое всплывает, и разрешает действие по EXTRA_STATE_OFFHOOK
или EXTRA_STATE_RINGING
вещаниям (т.е. входящим и исходящим телефонные звонки).Ответ на входящий вызов с использованием android.telecom и InCallService
В настоящее время только этот экран имеет полный контроль над звонками и активными вызовами и связанными с ними системными обратными вызовами с мелкозернистой информацией с помощью разрешенного root MODIFY_PHONE_STATE
разрешения и большого количества защищенного кода AOSP, даже недоступного при отражении. Это, в частности, один из самых измененных фрагментов кода в разных версиях ROM производителей, вместе с пусковой установкой, контактами и камерой.
Это все очень красиво, но ...
Как вы на самом деле разработать 3-участник InCallService?
А именно:
- Как вы получите уведомление о том, и приобрести экземпляры GSM вызовов
- Как один ответ на эти вызовы
- Каков жизненный цикл обратных вызовов в этом классе
- Предоставляет ли Google какие-либо фактические учебник для этого, что я не нашел
Я не буду sk ответы на все из них сразу, но любой ответ, вероятно, ассоциируется с другими вопросами. Это широко, но по своей сути это должно быть: в Интернете нет примера, который я наткнулся на AOSP-код, и этот код основан на предположении о привилегиях root, что делает его непригодным для разработки сторонних приложений цели.
На ваш вопрос # 1, работает ли 'android.intent.action.PHONE_STATE' трансляция? –
@SharpEdge вы получаете уведомление о «вызове», но вы не знаете, какой android.telecom.Call - https://developer.android.com/reference/android/telecom/Call.html. С таким экземпляром я мог бы на самом деле просто вызовите # ответ (int videoState) и получите 2. отсортированный – leRobot
Там, похоже, не так много информации - комментарии в этом вопросе могут помочь: http://stackoverflow.com/q/34861910/334402 , Одно замечание на всякий случай неясно - этот API должен заменить InCallUI - то есть пользовательский интерфейс для управления вызовами. – Mick