Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Issue 12974004: Add speaker on/off control on Android for WebRTC (Closed)

Created:
7 years, 9 months ago by leozwang1
Modified:
7 years, 8 months ago
CC:
chromium-reviews, feature-media-reviews_chromium.org
Base URL:
https://src.chromium.org/svn/trunk/src/
Visibility:
Public.

Description

Add speaker on/off control on Android for WebRTC Description: Application listens to the headset plug intent, turns on or off speaker when webrtc is running. It will help devices with dual mics to improve audio quality. BUG=222394 Landed in r192371, close it.

Patch Set 1 #

Patch Set 2 : rebase #

Patch Set 3 : remember speaker status #

Total comments: 22

Patch Set 4 : address comments #

Total comments: 19

Patch Set 5 : #

Patch Set 6 : check mReceiver #

Total comments: 49

Patch Set 7 : anddress comments #

Total comments: 21

Patch Set 8 : #

Patch Set 9 : change order #

Patch Set 10 : remove log #

Unified diffs Side-by-side diffs Delta from patch set Stats (+95 lines, -15 lines) Patch
M media/audio/audio_manager_base.h View 1 2 3 4 5 6 2 chunks +9 lines, -0 lines 0 comments Download
M media/audio/audio_manager_base.cc View 1 2 3 4 5 6 7 5 chunks +36 lines, -10 lines 0 comments Download
M media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java View 1 2 3 4 5 6 7 8 9 2 chunks +50 lines, -5 lines 0 comments Download

Messages

Total messages: 23 (0 generated)
leozwang1
please take a look.
7 years, 9 months ago (2013-03-21 15:04:34 UTC) #1
tommi (sloooow) - chröme
didn't take a look at the java code. https://chromiumcodereview.appspot.com/12974004/diff/11001/media/audio/audio_manager_base.h File media/audio/audio_manager_base.h (right): https://chromiumcodereview.appspot.com/12974004/diff/11001/media/audio/audio_manager_base.h#newcode141 media/audio/audio_manager_base.h:141: base::android::ScopedJavaGlobalRef<jobject> ...
7 years, 9 months ago (2013-03-21 15:31:27 UTC) #2
nilesh
Drive by. https://chromiumcodereview.appspot.com/12974004/diff/11001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://chromiumcodereview.appspot.com/12974004/diff/11001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode41 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:41: public AudioManagerAndroid(Context context) { You can make ...
7 years, 9 months ago (2013-03-21 16:42:32 UTC) #3
Yaron
https://chromiumcodereview.appspot.com/12974004/diff/11001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://chromiumcodereview.appspot.com/12974004/diff/11001/media/audio/audio_manager_base.cc#newcode407 media/audio/audio_manager_base.cc:407: jobject context = base::android::GetApplicationContext(); You don't use the context ...
7 years, 9 months ago (2013-03-21 16:51:31 UTC) #4
leozwang1
please take a look https://codereview.chromium.org/12974004/diff/11001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/12974004/diff/11001/media/audio/audio_manager_base.cc#newcode407 media/audio/audio_manager_base.cc:407: jobject context = base::android::GetApplicationContext(); On ...
7 years, 9 months ago (2013-03-21 18:51:35 UTC) #5
qinmin
https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode48 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:48: (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); fix indent: 8 spaces https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode58 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:58: @Override fix ...
7 years, 9 months ago (2013-03-21 19:56:25 UTC) #6
nilesh
More nits. https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode46 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:46: public void registerHeadsetReceiver(Context context) { Remove context. ...
7 years, 9 months ago (2013-03-21 20:08:54 UTC) #7
leozwang1
PTAL https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode46 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:46: public void registerHeadsetReceiver(Context context) { On 2013/03/21 20:08:54, ...
7 years, 9 months ago (2013-03-21 20:50:24 UTC) #8
tommi (sloooow) - chröme
lgtm https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc#newcode140 media/audio/audio_manager_base.cc:140: if (1 == num_output_streams_) To be on the ...
7 years, 9 months ago (2013-03-21 20:58:16 UTC) #9
Yaron
lgtm
7 years, 9 months ago (2013-03-21 21:01:26 UTC) #10
nilesh
https://codereview.chromium.org/12974004/diff/33001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/33001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode85 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:85: if (null == mReceiver) { Why would mReceiver be ...
7 years, 9 months ago (2013-03-21 21:02:48 UTC) #11
nilesh
https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/20001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode58 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:58: @Override On 2013/03/21 20:50:25, leozwang1 wrote: > On 2013/03/21 ...
7 years, 9 months ago (2013-03-21 21:13:36 UTC) #12
qinmin
https://codereview.chromium.org/12974004/diff/33001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/33001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode27 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:27: private static final int kPhoneTypeError = -1; java don't ...
7 years, 9 months ago (2013-03-21 21:19:38 UTC) #13
Ami GONE FROM CHROMIUM
https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc#newcode70 media/audio/audio_manager_base.cc:70: DCHECK(context); unnecessary- GAC() does this https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc#newcode140 media/audio/audio_manager_base.cc:140: if (1 ...
7 years, 9 months ago (2013-03-21 21:26:20 UTC) #14
leozwang1
https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/12974004/diff/33001/media/audio/audio_manager_base.cc#newcode70 media/audio/audio_manager_base.cc:70: DCHECK(context); On 2013/03/21 21:26:21, Ami Fischman wrote: > unnecessary- ...
7 years, 9 months ago (2013-03-21 23:10:07 UTC) #15
Ami GONE FROM CHROMIUM
LGTM % nits https://codereview.chromium.org/12974004/diff/43002/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://codereview.chromium.org/12974004/diff/43002/media/audio/audio_manager_base.cc#newcode138 media/audio/audio_manager_base.cc:138: if (1 == num_output_streams_) please review ...
7 years, 9 months ago (2013-03-21 23:52:58 UTC) #16
nilesh
more nits https://codereview.chromium.org/12974004/diff/43002/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/12974004/diff/43002/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode12 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:12: import android.telephony.TelephonyManager; Remove unused imports https://codereview.chromium.org/12974004/diff/43002/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode23 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:23: ...
7 years, 9 months ago (2013-03-22 00:43:27 UTC) #17
leozwang1
Thanks Ami, Nilesh, please take another look. https://chromiumcodereview.appspot.com/12974004/diff/43002/media/audio/audio_manager_base.cc File media/audio/audio_manager_base.cc (right): https://chromiumcodereview.appspot.com/12974004/diff/43002/media/audio/audio_manager_base.cc#newcode138 media/audio/audio_manager_base.cc:138: if (1 ...
7 years, 9 months ago (2013-03-22 01:33:12 UTC) #18
nilesh
LGTM with one more comment. https://chromiumcodereview.appspot.com/12974004/diff/43002/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://chromiumcodereview.appspot.com/12974004/diff/43002/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode12 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:12: import android.telephony.TelephonyManager; On 2013/03/22 ...
7 years, 9 months ago (2013-03-22 01:43:43 UTC) #19
leozwang1
Thanks Nilesh so much! Friendly ping other reviewers, if there is no more comments, I ...
7 years, 9 months ago (2013-03-22 01:50:07 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leozwang@chromium.org/12974004/50009
7 years, 9 months ago (2013-03-22 02:04:56 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/leozwang@chromium.org/12974004/50009
7 years, 9 months ago (2013-03-22 19:13:58 UTC) #22
commit-bot: I haz the power
7 years, 9 months ago (2013-03-22 19:14:00 UTC) #23
Failed to apply patch for media/audio/audio_manager_base.cc:
While running patch -p0 --forward --force --no-backup-if-mismatch;
  patching file media/audio/audio_manager_base.cc
  Hunk #1 FAILED at 63.
  Hunk #2 FAILED at 125.
  Hunk #3 FAILED at 166.
  Hunk #4 FAILED at 256.
  Hunk #5 FAILED at 371.
  5 out of 5 hunks FAILED -- saving rejects to file
media/audio/audio_manager_base.cc.rej

Patch:       media/audio/audio_manager_base.cc
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

Powered by Google App Engine
This is Rietveld 408576698