2012-05-11 37 views
27

Tôi đã làm việc trên một dự án có lợi rất nhiều từ việc sửa đổi luồng cuộc gọi. Điều này đã được nhiều lần nói/giả định là không thể thực hiện được, vì hầu hết mọi người tin rằng vòng lặp phần cứng cho âm thanh trong cuộc gọi được ngắt hoàn toàn khỏi MCU chính của thiết bị.Gọi sửa đổi luồng âm thanh trong Android 4.0 ICS

Các câu hỏi như Stream audio to a phone call Android đã nhận được câu trả lời cho biết không thể truy cập âm thanh. Tôi đồng ý rằng điều này chắc chắn là không thể từ API Android, nhưng hoàn toàn không rõ liệu phần cứng HOẠT ĐỘNG có bị ngắt kết nối hoàn toàn không.

Người dùng stackoverflow 'artsylar' cho biết họ có thể sửa đổi 'lớp khung' của hệ điều hành Android để chèn âm thanh được ghi vào luồng cuộc gọi, đó sẽ là một bước tiến lớn (xem Play an audio clip onto an ongoing call, nhận xét của artsylar về câu trả lời đã chọn). Giả sử thành công của artsylar là hợp lệ, chắc chắn có một cách để kiểm soát âm thanh luồng cuộc gọi bằng cách sửa đổi khuôn khổ (tôi giả định khung cơ sở điện thoại trong nguồn Android).

Về cơ bản, tôi hoàn toàn đồng ý rằng không thể thực hiện việc sửa đổi hoặc kiểm soát luồng cuộc gọi từ lớp ứng dụng. Tuy nhiên, tôi quan tâm đến việc tùy biến hệ điều hành Android trong khung công tác hoặc Lớp giao diện Radio; artsylar dường như đã thành công, nhưng không có lời giải thích trong văn học mở về cách thức. Với trạng thái hiện tại của công nghệ Android, bất cứ ai có thể làm rõ điều trên để thực sự thiết lập việc kiểm soát âm thanh cuộc gọi có thể bằng cách sửa đổi hệ điều hành Android chính và một con đường tốt để đạt được mục tiêu này không?

Tôi tin rằng việc làm rõ cuối cùng về vấn đề này sẽ có giá trị lớn đối với cộng đồng nguồn mở.

Cảm ơn!

+1

Bạn có quản lý để sửa đổi luồng cuộc gọi không? – B770

+1

Trạng thái hiện tại của nghiên cứu của bạn là gì? –

Trả lời

5

Rất khó để làm như vậy vì nó liên quan đến việc xử lý Linux Kernal bên trong hệ điều hành Android.

Không chỉ không có hỗ trợ API, mà còn vấn đề bảo mật không được phép làm như vậy.

Là một chuyên gia trong lĩnh vực kỹ thuật phần mềm đặc biệt là lập trình viên, chúng tôi không bao giờ giả định thành công của bất kỳ ai về sáng chế và dự án liên quan có hiệu lực cho đến khi dự án đang được thử nghiệm.

Ngoài ra luồng âm thanh trong suốt cuộc gọi có thể gọi về vấn đề riêng tư và vấn đề an ninh giữa các người dùng điện thoại thông minh và các nhà cung cấp dịch vụ của điện thoại

+1

Nhân Linux? Hỗ trợ phần cứng cũng cần thiết, vì điện thoại sử dụng (mic -> bộ xử lý baseband, mic -> OS) chuỗi kép, và không phải (mic -> OS -> baseband, vì nó có thể được mong đợi) .. –

+0

@ kagali-san nếu bạn nói rằng nó giống như "mic -> bộ xử lý baseband", thì tai nghe Bluetooth hoạt động như thế nào? Vì vậy, tôi không nghĩ rằng bạn đúng, nó giống như "mic -> OS -> baseband". –

+3

@ André, ít tài liệu, nhưng không - chuyển giao Bluetooth hoạt động bằng cách truyền trên chip. Bạn có thể google một vài mẩu dữ liệu và sơ đồ khối/sơ đồ của MT6575, MT6589 và các chip radio tương ứng MT6627, MT6627 - Tôi nghi ngờ rằng kênh MRGPCM giữa các chip là đường truyền âm thanh. Còn có một cái gì đó gọi là DAIBT, mà người Trung Quốc sử dụng tại một số đề án để chỉ định các bộ phận xử lý âm thanh .. Nói nhiều hơn, một số điện thoại không phản chiếu ngay cả âm thanh micrô được gửi tới baseband trong cuộc gọi. Âm thanh –

11

Đó là kỹ thuật có thể tiêm âm thanh vào uplink cuộc gọi thoại trên một số nền tảng (Qualcomm MSM8960 và APQ8064 chẳng hạn). Hỗ trợ tồn tại ở cấp phần cứng và ở cấp trình điều khiển thiết bị. Nhưng để làm cho chức năng đó có sẵn cho các ứng dụng bình thường, bạn phải tạo một ROM Android tùy chỉnh, nơi bạn đã thêm tất cả các phần không gian người dùng cần thiết trong cả hai lớp Java và các lớp gốc của Android.

Vì vậy, câu trả lời ngắn gọn là: không, không có cách nào tiêu chuẩn để làm điều này với tư cách là nhà phát triển ứng dụng (không quan trọng nếu bạn sử dụng SDK hoặc NDK).
Nếu bạn đang làm việc cho một OEM hoặc bằng một số phương tiện khác có thể xây dựng và flash ROM Android của riêng bạn, bạn có thể có được thông tin bạn cần bằng cách hỏi nhà cung cấp nền tảng của bạn.

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