Chromium Code Reviews| 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 (1 == num_output_streams_) |
|
Ami GONE FROM CHROMIUM
2013/03/21 23:52:58
please review your CL and reverse the comparisons
leozwang1
2013/03/22 01:33:13
Done.
|
| + 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 (1 == num_input_streams_) |
| + 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 |