오디오 처리 잠시 동안 꽤 무서운 될 것입니다. API는 매우 이상하고, 문서화가 잘되어 있지 않으며 버전 간 변경/사용 중단/중단을 유지합니다. AudioManager
코드에도 FIXME가 포함되어 있습니다.
어쨌든 Android에는 여러 가지 스트림 유형이 있습니다 (음악, 알림, 전화 통화 등). 응용 프로그램은 재생을 위해 적절한 스트림을 선택합니다. 대부분의 Android 앱이 음악/미디어 유형 (STREAM_TYPE_MUSIC
)을 사용해야한다고 생각합니다. 이것을 MediaPlayer
에 setAudioStreamType
방법을 사용하여 설정합니다.
이 SDK는 다른 모든 스트림 —를 음소거 할 수 있지만, 난 당신이 일시 정지 어떻게 든 오디오를 식별 할 수있는 특정 응용 프로그램에서 재생되는 및 믿지 않는 원인 솔로 —로 단일 스트림을 유형을 설정할 수 않습니다/일시 중지 해제 그것. 일반적으로 음악 응용 프로그램은 경우에 따라서
, 당신은 당신의
MediaPlayer
의 전화 통화 스트림을 "빌려"수 있습니다. 전화가 걸려 올 때 자신을 일시 중지
PhoneStateListener
를 사용하여 재생 후, 취소를 시작할 때 메소드 호출
AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true)
를 사용합니다 재생시
false
또는
Activity
이 완료되면 스트림이 재생됩니다.
나는이 작품 있음을 알 수 있습니다,하지만 난 (같이 : AudioManager.setMode(AudioManager.MODE_IN_CALL)
) 음성 통화 스트림을 사용하는 경우 당신은 또한 MODE_IN_CALL
에 오디오 모드를 설정해야하는지 여부를 즉석 기억할 수 없습니다. 필요한 경우 재생이 완료되면 MODE_NORMAL
으로 모드를 되돌려 보내야합니다. 그렇지 않으면 볼륨 하드 키를 누를 때마다 '통화 중 음량'이라고 표시됩니다. 그러나 MODE_NORMAL
으로 다시 변경하려면 해당 시간에 정품 전화가 걸려 있지 않은지 확인해야합니다 ...
음성 통화 대신 다른 유형의 전화를 사용할 수도 있습니다. 스피커폰이나 이어 피스를 사용하여 오디오 재생을 할 수있는 응용 프로그램에서 일하는 경험을 말하면서 은 음성 통화 스트림을 사용해야합니다. 내가 말했듯이
는 오디오 처리는 ... 특히 재미 없어)
감사합니다 크리스토퍼을 참조
AudioManager.requestAudioFocus(...)
방법을 사용하는 것입니다, 당신의 조언은 그 자리에 있었다. 실제로 목적을 달성 한 STREAM_ALARM을 납치했습니다.이를 솔로로 설정하면 원하는 효과가 있습니다. 다시 한번 감사드립니다. –
그런 생각은 아니지만 적어도 헤드폰은 아닙니다. VOICE_CALL (으)로 돌아 가기. 적어도 지금까지는 MODE_IN_CALL이 필요하지 않은 것 같습니다. –