Index: media/audio/audio_manager_base.cc |
=================================================================== |
--- media/audio/audio_manager_base.cc (revision 189519) |
+++ 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(); |
+ DCHECK(context); |
+ j_am_.Reset(Java_AudioManagerAndroid_createAudioManagerAndroid(env, context)); |
+#endif |
} |
AudioManagerBase::~AudioManagerBase() { |
@@ -128,6 +135,11 @@ |
if (stream) |
++num_output_streams_; |
+#if defined(OS_ANDROID) |
+ if (1 == num_output_streams_) |
+ RegisterHeadsetReceiver(); |
+#endif |
+ |
return stream; |
} |
@@ -170,7 +182,7 @@ |
++num_input_streams_; |
#if defined(OS_ANDROID) |
- if (num_input_streams_ == 1) |
+ if (1 == num_input_streams_) |
SetAudioMode(kAudioModeInCommunication); |
#endif |
@@ -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) { |
@@ -377,6 +393,22 @@ |
Java_AudioManagerAndroid_setMode(env, context, mode); |
} |
-#endif |
+void AudioManagerBase::RegisterHeadsetReceiver() { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ jobject context = base::android::GetApplicationContext(); |
+ DCHECK(context); |
+ |
+ Java_AudioManagerAndroid_registerHeadsetReceiver(env, j_am_.obj(), context); |
+} |
+ |
+void AudioManagerBase::UnRegisterHeadsetReceiver() { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ jobject context = base::android::GetApplicationContext(); |
Yaron
2013/03/21 16:51:31
You don't use the context here. Remove it
leozwang1
2013/03/21 18:51:35
Done.
|
+ DCHECK(context); |
+ |
+ Java_AudioManagerAndroid_unregisterHeadsetReceiver(env, j_am_.obj()); |
+} |
+#endif // defined(OS_ANDROID) |
+ |
} // namespace media |