| Index: media/audio/audio_manager_base.cc
|
| ===================================================================
|
| --- media/audio/audio_manager_base.cc (revision 189667)
|
| +++ media/audio/audio_manager_base.cc (working copy)
|
| @@ -63,6 +63,13 @@
|
| CHECK(audio_thread_->Start());
|
| #endif
|
| message_loop_ = audio_thread_->message_loop_proxy();
|
| +
|
| +#if defined(OS_ANDROID)
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + jobject context = base::android::GetApplicationContext();
|
| + j_audio_manager_.Reset(
|
| + Java_AudioManagerAndroid_createAudioManagerAndroid(env, context));
|
| +#endif
|
| }
|
|
|
| AudioManagerBase::~AudioManagerBase() {
|
| @@ -125,8 +132,13 @@
|
| break;
|
| }
|
|
|
| - if (stream)
|
| + if (stream) {
|
| ++num_output_streams_;
|
| +#if defined(OS_ANDROID)
|
| + if (num_output_streams_ == 1)
|
| + RegisterHeadsetReceiver();
|
| +#endif
|
| + }
|
|
|
| return stream;
|
| }
|
| @@ -166,13 +178,13 @@
|
| break;
|
| }
|
|
|
| - if (stream)
|
| + if (stream) {
|
| ++num_input_streams_;
|
| -
|
| #if defined(OS_ANDROID)
|
| - if (num_input_streams_ == 1)
|
| - SetAudioMode(kAudioModeInCommunication);
|
| + if (num_input_streams_ == 1)
|
| + SetAudioMode(kAudioModeInCommunication);
|
| #endif
|
| + }
|
|
|
| return stream;
|
| }
|
| @@ -256,6 +268,10 @@
|
| // streams.
|
| --num_output_streams_;
|
| delete stream;
|
| +#if defined(OS_ANDROID)
|
| + if (!num_output_streams_)
|
| + UnregisterHeadsetReceiver();
|
| +#endif
|
| }
|
|
|
| void AudioManagerBase::ReleaseInputStream(AudioInputStream* stream) {
|
| @@ -371,12 +387,22 @@
|
|
|
| #if defined(OS_ANDROID)
|
| void AudioManagerBase::SetAudioMode(int mode) {
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| - jobject context = base::android::GetApplicationContext();
|
| - DCHECK(context);
|
| + Java_AudioManagerAndroid_setMode(
|
| + base::android::AttachCurrentThread(),
|
| + j_audio_manager_.obj(), mode);
|
| +}
|
|
|
| - Java_AudioManagerAndroid_setMode(env, context, mode);
|
| +void AudioManagerBase::RegisterHeadsetReceiver() {
|
| + Java_AudioManagerAndroid_registerHeadsetReceiver(
|
| + base::android::AttachCurrentThread(),
|
| + j_audio_manager_.obj());
|
| }
|
| -#endif
|
|
|
| +void AudioManagerBase::UnregisterHeadsetReceiver() {
|
| + Java_AudioManagerAndroid_unregisterHeadsetReceiver(
|
| + base::android::AttachCurrentThread(),
|
| + j_audio_manager_.obj());
|
| +}
|
| +#endif // defined(OS_ANDROID)
|
| +
|
| } // namespace media
|
|
|