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