2017-01-20 24 views
9

Kể từ API 21, Google đã thêm các tính năng vào android.telecom nói chung, đặc biệt bằng cách triển khai thêm thành viên TelecomManager và thêm InCallService. Điều cuối cùng này được cho là cho phép các ứng dụng bên thứ ba không phải hệ thống cung cấp và thay thế chức năng của hệ thống Gọi màn hình trong ứng dụng gọi điện thoại - Cửa sổ bật lên và cho phép hành động trên các chương trình phát sóng EXTRA_STATE_OFFHOOK hoặc EXTRA_STATE_RINGING (tức là đến và đi cuộc gọi điện thoại).Trả lời cuộc gọi đến bằng cách sử dụng android.telecom và InCallService

Hiện tại, chỉ có màn hình này có toàn quyền kiểm soát chuông và cuộc gọi hiện tại và các cuộc gọi hệ thống được liên kết với thông tin chi tiết, bằng quyền hạn chế quyền hạn chế của một số mã AOSP không thể truy cập được bằng phản ánh. Nó đáng chú ý là một trong những phần mã được thay đổi nhiều nhất trong các hương vị ROM của các nhà sản xuất khác nhau, cùng với trình khởi chạy, danh bạ và máy ảnh.

Đây là tất cả rất đẹp nhưng ...

Làm thế nào để bạn thực sự phát triển một bên thứ 3 InCallService?

Cụ thể:

  1. Làm thế nào để bạn được thông báo, và có được các trường hợp của GSM Calls
  2. Làm sao người ta trả lời những cuộc gọi
  3. vòng đời của callbacks là gì trên lớp này
  4. Google có cung cấp bất kỳ hướng dẫn thực tế cho điều này mà tôi đã không tìm thấy

tôi sẽ không phải là một sk câu trả lời cho tất cả những điều này cùng một lúc, nhưng bất kỳ một câu trả lời có thể liên kết với các câu hỏi khác. Đây là phạm vi rộng nhưng thực chất nó cần phải là: không có ví dụ nào trên web mà tôi gặp phải ngoài mã AOSP và mã đó dựa trên giả định về đặc quyền của root, điều này làm cho nó không thể sử dụng cho phát triển ứng dụng của bên thứ ba mục đích.

+0

Đối với câu hỏi số 1 của bạn, chương trình phát sóng 'android.intent.action.PHONE_STATE' có hoạt động không? –

+0

@SharpEdge bạn nhận được thông báo về "cuộc gọi" nhưng bạn không biết android.telecom.Call - https://developer.android.com/reference/android/telecom/Call.html Với ví dụ như vậy, tôi có thể thực sự Chỉ cần gọi # answer (int videoState) và nhận 2. sắp xếp ra – leRobot

+0

Có vẻ như không có nhiều thông tin ngoài đó - các nhận xét trong câu hỏi này có thể giúp mặc dù: http://stackoverflow.com/q/34861910/334402 . Một điều cần lưu ý chỉ trong trường hợp nó không rõ ràng - API này là để thay thế InCallUI - tức là giao diện người dùng để kiểm soát các cuộc gọi. – Mick

Trả lời

2

Làm theo lời khuyên từ nhận xét thứ hai của Replacing in call app. Ngoài ra, bạn cần một dịch vụ thực hiện giao diện InCallService. Khi một cuộc gọi đến, phương thức onCallAdded (Call call) sẽ được gọi, cho bạn tham chiếu đến đối tượng gọi.

<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> 

Khi bạn có đối tượng gọi, trả lời đơn giản như call.answer(). Tôi đề nghị rằng khi bạn có được những thứ trên làm việc, hãy chạy một vài cuộc gọi thử để biết khi nào các callbacks khác nhau được gọi.

Về hướng dẫn, tôi không thể tìm thấy bất kỳ khi tôi đã nhìn vào điều này, nhưng đó là hơn một năm trước ...

Hope this helps!

+0

tốt đẹp, sẽ thử một thực hiện thử nghiệm ngày hôm nay và trở lại với kết quả – leRobot

+0

Hi IeRobot, bạn đã thử InCallService, trong trường hợp dịch vụ của tôi không nhận được viện dẫn cho các cuộc gọi đến và đi. – rajahsekar

4

Tôi đoán Google phải đọc câu hỏi này, bởi vì rõ ràng trên Android 8, một quyền mới cuối cùng là allows answering calls through a 3rd party dev-facing permission.

android.permission. ANSWER_PHONE_CALLS (...) Cho phép các ứng dụng để trả lời cuộc gọi điện thoại đến lập trình

Không có chi tiết chưa tuy nhiên, kể từ khi tài liệu cho API 26 chưa được phát hành được nêu ra. Tôi sẽ đảm bảo cập nhật câu trả lời này khi họ làm.

Các vấn đề liên quan