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

Unified Diff: media/audio/android/audio_manager_android.cc

Issue 78033003: Adding device enumeration to Android device manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tommi@, nits Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/audio/android/audio_manager_android.cc
diff --git a/media/audio/android/audio_manager_android.cc b/media/audio/android/audio_manager_android.cc
index dc77a4c3eec6a2c6e5310ecd0dec5a0a88cb7ec6..629535163102dd7ddd473bf3dc060abf730ab89f 100644
--- a/media/audio/android/audio_manager_android.cc
+++ b/media/audio/android/audio_manager_android.cc
@@ -4,6 +4,10 @@
#include "media/audio/android/audio_manager_android.h"
+#include "base/android/build_info.h"
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "base/android/scoped_java_ref.h"
#include "base/logging.h"
#include "jni/AudioManagerAndroid_jni.h"
#include "media/audio/android/opensles_input.h"
@@ -13,6 +17,11 @@
#include "media/audio/fake_audio_input_stream.h"
#include "media/base/channel_layout.h"
+using base::android::AppendJavaStringArrayToStringVector;
+using base::android::AttachCurrentThread;
+using base::android::ConvertJavaStringToUTF8;
+using base::android::ScopedJavaLocalRef;
+
namespace media {
static void AddDefaultDevice(AudioDeviceNames* device_names) {
@@ -42,9 +51,16 @@ AudioManagerAndroid::AudioManagerAndroid() {
Java_AudioManagerAndroid_createAudioManagerAndroid(
base::android::AttachCurrentThread(),
base::android::GetApplicationContext()));
+
+ Java_AudioManagerAndroid_init(
+ base::android::AttachCurrentThread(),
+ j_audio_manager_.obj());
}
AudioManagerAndroid::~AudioManagerAndroid() {
+ Java_AudioManagerAndroid_close(
+ base::android::AttachCurrentThread(),
+ j_audio_manager_.obj());
Shutdown();
}
@@ -63,7 +79,30 @@ void AudioManagerAndroid::GetAudioInputDeviceNames(
void AudioManagerAndroid::GetAudioOutputDeviceNames(
AudioDeviceNames* device_names) {
+ // Always add default device parameters as first element.
+ // TODO(henrika): figure out how we shall handle the term "default"
+ // on Android.
AddDefaultDevice(device_names);
+
+ JNIEnv* env = AttachCurrentThread();
+ int sdk = base::android::BuildInfo::GetInstance()->sdk_int();
+ if (sdk <= 16) {
+ // TODO(henrika): figure out where/if we must draw a limit here.
+ AddDefaultDevice(device_names);
Jói 2013/11/25 13:09:35 Not sure you want to add the default device again
henrika (OOO until Aug 14) 2013/11/25 13:28:14 oops
+ } else {
+ ScopedJavaLocalRef<jobjectArray> j_device_array =
+ Java_AudioManagerAndroid_getAudioOutputDeviceNames(
+ env, j_audio_manager_.obj());
+ std::vector<std::string> devices;
+ AppendJavaStringArrayToStringVector(env, j_device_array.obj(), &devices);
+
+ std::vector<std::string>::iterator it = devices.begin();
+ while (it != devices.end()) {
+ device_names->push_back(AudioDeviceName(*it, *it));
+ DVLOG(1) << "ouput device name: " << *it;
+ ++it;
+ }
+ }
}
AudioParameters AudioManagerAndroid::GetInputStreamParameters(
@@ -90,8 +129,9 @@ AudioOutputStream* AudioManagerAndroid::MakeAudioOutputStream(
AudioManagerBase::MakeAudioOutputStream(params, std::string(),
std::string());
if (stream && output_stream_count() == 1) {
- SetAudioMode(kAudioModeInCommunication);
- RegisterHeadsetReceiver();
+ SetAudioMode(kAudioModeInCommunication);
+ // TODO(henrika): resolve conflict with device enumeration.
+ // RegisterHeadsetReceiver();
}
return stream;
}
@@ -106,7 +146,8 @@ AudioInputStream* AudioManagerAndroid::MakeAudioInputStream(
void AudioManagerAndroid::ReleaseOutputStream(AudioOutputStream* stream) {
AudioManagerBase::ReleaseOutputStream(stream);
if (!output_stream_count()) {
- UnregisterHeadsetReceiver();
+ // TODO(henrika): resolve conflict with device enumeration.
+ // UnregisterHeadsetReceiver();
SetAudioMode(kAudioModeNormal);
}
}

Powered by Google App Engine
This is Rietveld 408576698