Chromium Code Reviews| Index: media/audio/android/opensles_output.cc |
| =================================================================== |
| --- media/audio/android/opensles_output.cc (revision 186971) |
| +++ media/audio/android/opensles_output.cc (working copy) |
| @@ -49,6 +49,46 @@ |
| DCHECK(!audio_data_[0]); |
| } |
| +void OpenSLESOutputStream::SetAudioMode() { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + DCHECK(env); |
| + |
| + jobject j_context = base::android::GetApplicationContext(); |
| + DCHECK(j_context); |
| + |
| + // context.getSystemService(Context.AUDIO_SERVICE). |
|
Yaron
2013/03/09 00:31:18
We're no longer taking patches with hand-written J
|
| + jstring audio_service_string = env->NewStringUTF("audio"); |
| + jclass context_class = env->GetObjectClass(j_context); |
|
Yaron
2013/03/09 00:31:18
Examle for why we say this: you're currently leaki
|
| + CHECK(context_class); |
| + jmethodID method = env->GetMethodID( |
| + context_class, "getSystemService", |
| + "(Ljava/lang/String;)Ljava/lang/Object;"); |
| + CHECK(method); |
| + jobject j_am = env->CallObjectMethod(j_context, method, |
| + audio_service_string); |
| + CHECK(j_am); |
| + jclass j_am_class = env->GetObjectClass(j_am); |
| + CHECK(j_am_class); |
| + |
| + // AudioManager.MODE_IN_COMMUNICATION. |
| + jclass cls = env->FindClass("android/media/AudioManager"); |
| + CHECK(cls); |
| + jfieldID field = env->GetStaticFieldID( |
| + cls, |
| + "MODE_IN_COMMUNICATION", |
| + "I"); |
| + CHECK(field); |
| + jint am_mode = env->GetStaticIntField(cls, field); |
| + CHECK(am_mode); |
| + env->DeleteLocalRef(cls); |
| + |
| + // audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION) |
| + jmethodID setmode_method = env->GetMethodID(j_am_class, "setMode", "(I)V"); |
| + CHECK(setmode_method); |
| + env->CallVoidMethod(j_am, setmode_method, am_mode); |
| + base::android::CheckException(env); |
| +} |
| + |
| bool OpenSLESOutputStream::Open() { |
| if (engine_object_.Get()) |
| return false; |
| @@ -56,6 +96,8 @@ |
| if (!CreatePlayer()) |
| return false; |
| + SetAudioMode(); |
| + |
| SetupAudioBuffer(); |
| return true; |