audio_manager_android.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ 6#define MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ 7 8#include "base/android/jni_android.h" 9#include "media/audio/audio_manager_base.h" 10 11namespace media { 12 13// Android implemention of AudioManager. 14class MEDIA_EXPORT AudioManagerAndroid : public AudioManagerBase { 15 public: 16 AudioManagerAndroid(); 17 18 // Implementation of AudioManager. 19 virtual bool HasAudioOutputDevices() OVERRIDE; 20 virtual bool HasAudioInputDevices() OVERRIDE; 21 virtual void GetAudioInputDeviceNames(media::AudioDeviceNames* device_names) 22 OVERRIDE; 23 virtual AudioParameters GetInputStreamParameters( 24 const std::string& device_id) OVERRIDE; 25 26 virtual AudioOutputStream* MakeAudioOutputStream( 27 const AudioParameters& params) OVERRIDE; 28 virtual AudioInputStream* MakeAudioInputStream( 29 const AudioParameters& params, const std::string& device_id) OVERRIDE; 30 virtual void ReleaseOutputStream(AudioOutputStream* stream) OVERRIDE; 31 virtual void ReleaseInputStream(AudioInputStream* stream) OVERRIDE; 32 33 // Implementation of AudioManagerBase. 34 virtual AudioOutputStream* MakeLinearOutputStream( 35 const AudioParameters& params) OVERRIDE; 36 virtual AudioOutputStream* MakeLowLatencyOutputStream( 37 const AudioParameters& params) OVERRIDE; 38 virtual AudioInputStream* MakeLinearInputStream( 39 const AudioParameters& params, const std::string& device_id) OVERRIDE; 40 virtual AudioInputStream* MakeLowLatencyInputStream( 41 const AudioParameters& params, const std::string& device_id) OVERRIDE; 42 43 static bool RegisterAudioManager(JNIEnv* env); 44 45 protected: 46 virtual ~AudioManagerAndroid(); 47 48 virtual AudioParameters GetPreferredOutputStreamParameters( 49 const AudioParameters& input_params) OVERRIDE; 50 51 private: 52 void SetAudioMode(int mode); 53 void RegisterHeadsetReceiver(); 54 void UnregisterHeadsetReceiver(); 55 56 // Java AudioManager instance. 57 base::android::ScopedJavaGlobalRef<jobject> j_audio_manager_; 58 59 DISALLOW_COPY_AND_ASSIGN(AudioManagerAndroid); 60}; 61 62} // namespace media 63 64#endif // MEDIA_AUDIO_ANDROID_AUDIO_MANAGER_ANDROID_H_ 65