2014-01-30 4 views
1

나는 사용자가 누군가에게 배치 한 전화 통화 중 사용자의 Android 폰에서 백그라운드로 실행되는 Android 앱을 보유하고 있습니다. 특정 시점에서, 내 응용 프로그램은 전화 통화에서 소리를 없애고 자체 오디오를 재생하려고합니다. 또한, 나는 사용자의 연설을 방해하지 않고 이것을하고 싶습니다.배경 응용 프로그램에서 전화를 프로그래밍 방식으로 음소거하려면 어떤 권한이 필요합니까?

내 앱에서 필요한 권한은 무엇입니까? 타사 앱에서 내 앱이이 작업을 수행하기에 충분한 권한이 있나요?

AudioManager.setStreamMute(STREAM_VOICE_CALL, true)은 음성 통화의 오디오 출력을 음소거합니다. 그러나 나는이 권한이 필요한지 말할 수 없다 : 그것은 안드로이드 API 문서 또는 the Pscout permission map에 나와 있지 않다. 또한 Android의 모든 버전에서 배경에서 실행중인 앱에서이 API를 사용하는 데 대한 제한이 있는지 확인할 수 없습니다.

(문제가 명확하지 않은 경우 : Alice가 휴대 전화에 내 앱을 설치했습니다. Bob이 Alice를 호출하고 Alice가 전화를 받아 Bob에게 이야기하고 있습니다. 특정 시점에서 내 앱은 Bob의 음성을 완전히 음소거하려고합니다. 음성 대신 자신의 오디오 클립을 재생하므로 Bob이 말하는 것 대신 Alice가 오디오 클립을 듣습니다. 그러나 Alice의 전화에서 마이크를 끄고 싶지는 않습니다. Alice가 아무 말도하지 않는다면 그 소리는 계속 들려야합니다. 통화 중 Bob은 여전히 ​​음성을 들려야합니다.)

답변

0

나는 android.permission.CALL_PRIVILEGED으로 충분하다고 생각합니다.

+0

[Android docs] (http://developer.android.com/reference/android/Manifest.permission.html#CALL_PRIVILEGED)는 'CALL_PRIVILEGED'는'제 3 자 애플리케이션에서 사용하지 않음 '이라고 말합니다. 이것은 제 3 자 애플리케이션이'CALL_PRIVILEGED'를 요청할 수 없다는 것을 의미한다고 가정합니다. 따라서'CALL_PRIVILEGED' 요청은 실제로 옵션이 아닙니다. 그래서, 내 질문에 설명 된 목적을 위해 충분한 다른 허가가 있습니까? 'CALL_PRIVILEGED'가 절대적으로 필요합니까 (원하는 것을 할 수 없음을 의미), 아니면 제 3 자 응용 프로그램에 사용할 수있는 권한을 사용하여 수행 할 수있는 방법이 있습니까? –

+0

흠, 확실하지 않습니다. 이제 당신이 말하기를, 나는 문서에 가서 그것에 관해서 실제로 아무것도 찾지 못했지만, 나는이 일을 오래 전에 망쳤다는 것을 기억하고있다. 조금 더 살펴볼 것입니다. – nKn

+0

알기 쉽게 알기는하지만 그래도 원하는 것을 할 수 있습니다. http://stackoverflow.com/questions/6874881/how-does-setmicrophonemute-work – nKn

2

시도해 볼 수 있습니다 : android.permission.MODIFY_AUDIO_SETTINGS.