2013-08-07 25 views
9

Tôi đang thực hiện một ứng dụng gọi điện với lời kêu gọi một số và gửi tone DTMF sau đó bởiẨn DTMF giai điệu trong khi quay

String number = "tel:+1234567,890#"; 
Intent c1 = new Intent(android.content.Intent.ACTION_CALL, Uri.parse(number)); 

Hiện nay nó có thể quay số 1234567, chờ khoảng 3 giây, sau đó quay số 890. Chức năng ổn nhưng nó gửi 890 với giai điệu mà loại không phải là rất phù hợp, Có cách nào để gửi 890 mà không có phản ứng giai điệu trở lại?

Trả lời

1

Không có cách nào để nhà phát triển thực hiện điều này thông qua API công khai. Thật không may, Android không xử lý kiểm soát DTMF rất tốt. Ví dụ: có two year old feature request để cho phép người dùng gửi điều khiển DTMF vào một thời điểm tùy ý trong khi gọi; nó đã bị bỏ rơi.

Như bạn đã biết, sử dụng ACTION_CALL hoặc ACTION_DIAL và làm <number>|,;|<tones> sẽ gửi âm DTMF trực tiếp sau khi cuộc gọi được kết nối, nhưng đó là nơi người dùng kiểm soát sự cố dừng.

Bất kỳ điều khiển bổ sung nào, chẳng hạn như gửi âm bổ sung hoặc tắt tiếng phản hồi âm thanh cho thiết bị cầm tay, được xử lý bởi API nội bộ, đáng chú ý com.android.internal.telephony. Lưu ý là phương pháp stopDtmf(), có thể làm những gì bạn đang tìm kiếm, ngoại trừ việc nó nằm bên trong và có thể không có hành vi nhất quán.

Here's what the 2.x source looked like for the method. Như đã nói, không có sự đảm bảo nào sẽ hoạt động và việc sử dụng các API nội bộ sẽ không được khuyến khích mạnh mẽ.

+0

Tôi đã thấy các ứng dụng ẩn âm DTMF. – Deepak

+0

Ví dụ? Tôi chưa thấy cái nào không cần root. –

+0

Vấn đề lớn hơn hai năm; nó đang đến gần lễ kỷ niệm lần thứ năm, và [các bản vá lỗi này] (https://groups.google.com/d/msg/android-contrib/4QqHgLOrBO8/h2DZ5IKXVVsJ) đã được gửi và hủy bỏ 18 tháng trước. Tôi có rất ít hy vọng bất cứ điều gì sẽ thay đổi trong ngắn hạn, và nhớ rằng ngay cả khi họ làm, nó sẽ không tương thích với các phiên bản trước của Android. –

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