/* * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ // The functions in this file are called from native code. They can still be // accessed even though they are declared private. package org.webrtc.voiceengine; import android.content.Context; import android.content.pm.PackageManager; import android.media.AudioManager; class AudioManagerAndroid { // Most of Google lead devices use 44.1K as the default sampling rate, 44.1K // is also widely used on other android devices. private static final int DEFAULT_SAMPLING_RATE = 44100; // Randomly picked up frame size which is close to return value on N4. // Return this default value when // getProperty(PROPERTY_OUTPUT_FRAMES_PER_BUFFER) fails. private static final int DEFAULT_FRAMES_PER_BUFFER = 256; private int mNativeOutputSampleRate; private boolean mAudioLowLatencySupported; private int mAudioLowLatencyOutputFrameSize; @SuppressWarnings("unused") private AudioManagerAndroid(Context context) { AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); mNativeOutputSampleRate = DEFAULT_SAMPLING_RATE; mAudioLowLatencyOutputFrameSize = DEFAULT_FRAMES_PER_BUFFER; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { String sampleRateString = audioManager.getProperty( AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE); if (sampleRateString != null) { mNativeOutputSampleRate = Integer.parseInt(sampleRateString); } String framesPerBuffer = audioManager.getProperty( AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER); if (framesPerBuffer != null) { mAudioLowLatencyOutputFrameSize = Integer.parseInt(framesPerBuffer); } } mAudioLowLatencySupported = context.getPackageManager().hasSystemFeature( PackageManager.FEATURE_AUDIO_LOW_LATENCY); } @SuppressWarnings("unused") private int getNativeOutputSampleRate() { return mNativeOutputSampleRate; } @SuppressWarnings("unused") private boolean isAudioLowLatencySupported() { return mAudioLowLatencySupported; } @SuppressWarnings("unused") private int getAudioLowLatencyOutputFrameSize() { return mAudioLowLatencyOutputFrameSize; } }