Trong ứng dụng của tôi, tôi đưa ra các tuyên bố sau đây:AudioFlinger là gì và tại sao nó thất bại TONE_PROP_ACK?
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
Những hoạt động rất tốt trên LG LS670 giá rẻ chạy Android 2.3.3 nhưng không có âm thanh ở tất cả trên tất cả các điện thoại khác mà tôi có, từ Android 2.2 .1 đến Android 2.3.4.
Vì vậy, tôi biết phiên bản hệ điều hành không đóng vai trò ở đây (tôi cũng đã xác minh trong tài liệu rằng nó đã được hỗ trợ từ API 1).
Ngoài ra, cả hai Ringer khối lượng và khối lượng phương tiện được thiết lập để tối đa và toneGenerator được khởi tạo với:
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
Và tôi xác nhận rằng Settings.System.DTMF_TONE_WHEN_DIALING
được thiết lập để 1.
bối rối bởi hành vi không phù hợp này (qua điện thoại khác), tôi kiểm tra nhật ký hệ thống khi điều này xảy ra và sự khác biệt đáng ngờ duy nhất tôi có thể tìm thấy là điện thoại không thành công để phát âm TONE_PROP_ACK
có dòng này trong nhật ký của họ:
AudioFlinger setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
Mục đích của AudioFlinger và những gì có thể là kết nối của nó để tắt tiếng TONE_PROP_ACK
?
Bất kỳ idea cách sửa mã của tôi để TONE_PROP_ACK luôn phát ra âm thanh, bất kể kiểu điện thoại là gì?
Âm thanh flinger là thành phần hệ thống quản lý âm thanh từ userpsace android trước khi giao nó cho trình điều khiển hạt nhân. Bạn có thể nhận được âm thanh từ bất kỳ chức năng nào của tông màu không? Bạn có thấy phần trong tài liệu API về định tuyến âm thanh đang biến không? Những gì bạn đang thực sự cố gắng để thực hiện anyway - bạn biết những tông màu không đi qua các đường lên cuộc gọi, phải không? –
@ChrisStratton Vâng, tôi biết các tông màu này không đi qua đường lên của cuộc gọi. Đây thực sự là hành vi ưa thích của tôi vì tôi chỉ cố gắng đưa ra một gợi ý âm thanh (nó không phải là DTMF). Tôi có thể nhận được âm thanh từ các chức năng của âm báo khi tôi sử dụng hoạt động quay số của điện thoại. Bạn có thể xây dựng trên "định tuyến âm thanh được biến" không? Tôi tìm phần đó trong tài liệu API ở đâu? URL trực tiếp sẽ là siêu. Cảm ơn +1. –
'routing = 0' cho' io 25' có nghĩa là AudioFlinger đang nói một luồng âm thanh cụ thể (tôi đoán một AudioStreamOut trong trường hợp này) rằng nó sẽ định tuyến đến "hư không". Cách xử lý âm thanh HAL thực hiện cụ thể - do đó, có thể ví dụ: để định tuyến cho luồng đó không thay đổi. – Michael