2011-03-11 5 views
9

Android에서 전화로 오디오 스트림을 보내려고합니다.오디오를 전화 통화로 스트리밍 Android

예를 들어 맞춤 보류 음악을 재생하거나 전화를 받고 녹음/녹음 파일을 재생할 앱을 만들 수 있습니다. 앱에서 자동으로 전화에 응답하도록 할 수는 있지만 발신자에게 오디오를 보낼 수 있습니까?

가능하면 가능한 클래스/기능을 알려주십시오.

답변

-1

전화 통화 흐름에 쓸 수 없습니다. 죄송합니다.

12

전화 통화 스트림 IS에 쓰기가 가능하지만 주식 (비 뿌리) 전화의 앱 수준에서는 가능하지 않습니다.

전화가 시작되면 마이크는베이스 밴드로 직접 라우팅되는 "일반적으로"(실제로 특정 전화에 따라 다름) 즉, 주 프로세서를 모두 건너 뜁니다. 나가는 오디오를 들어

: 마이크 -> codec-> 입력 오디오의 경우베이스 밴드 : 항상 들어간 경우 baseband-> codec-> 스피커

: 마이크 -> codec-> mainprocessor-> codec->베이스 밴드

그러면 Android API (프레임 워크)가 스트림에 액세스하는 것을 지원하면 스트림이 "아마도"사용 가능할 것입니다.

내가 말하는 이유는 거의 모든 스마트 폰의 오디오가 SlimBus을 통해 연결 되었기 때문입니다.이 기능을 사용하면 오디오 경로를 동적으로 변경할 수 있습니다. 그러나 코덱 드라이버는 ALSA에 있습니다.

그래서 ... 당신이 동기를 부여 받았기 때문에 전화를위한 Linux 커널의 소스를 얻을 수 있었고 오디오 오디오 경로가 설정되었을 때 일어나는 일을 변경할 수 있도록 코덱/ALSA 드라이버를 수정할 수있었습니다.

당연히 새로운 경로로 대기 시간이 발생하여 호출/대기 시간 표준 AT &T 설정이 깨졌습니다 (잠재 고객이 작성하는 데 도움이 됨). 기저 대역 칩이시기 적절하지 않아 오디오를 거부 할 수 있습니다.

마지막으로 Android 소스 (프레임 워크)를 수정하여 해당 스트림에 오디오를 주입 할 수 있도록 API를 확장해야합니다. (특히 mediaserver, audioflinger에게 큰 개조를해야합니다.)

복잡하지만 답변이 있습니다. 건배 :-)

0

원격 서브 믹스 오디오 캡처에는 CAPTURE_AUDIO_OUTPUT 권한이 필요합니다. 이 사용 권한은 시스템 구성 요소에서 사용하도록 예약되어 있으므로 타사 응용 프로그램에서는 사용할 수 없습니다. (

0

오디오 데이터를 얻는 것은 가능하지만 업스트림 채널에 오디오를 쓸 수는 없습니다.

관련 문제