赞
踩
AudioSystem是Android系统中提供的一个API,用于管理音频系统的参数和状态。它提供了一组静态方法,允许开发者查询和设置音频参数、获取系统状态、控制音频焦点等。AudioSystem是Android系统中标准的音频API之一,底层实现与AudioService密切相关。
AudioSystem包括了很多函数接口,其中最常用的函数为setMasterVolume和getMasterVolume,其中,setMasterVolume函数用于设置全局的音量,该函数接受一个浮点类型的值。除此之外,AudioSystem还提供了其他一些函数接口,如获取音频设备的状态、管理音频特效等。
在Android Framework层,有很多类会使用AudioSystem提供的静态方法,下面列举一些常见的类:
1、AudioManager:Android系统中管理音频相关参数的类,其内部调用了AudioSystem的很多静态方法,比如setMasterVolume和getMasterVolume。
2、AudioTrack:音频播放类,内部使用了AudioSystem的一些静态方法,如获取音频设备的buffer大小等。
3、AudioRecord:音频录制类,内部使用了AudioSystem的一些静态方法,如获取音频设备的buffer大小等。
4、AudioPolicyManager:音频策略管理的类,可以理解为AudioService的一部分,它在处理音频策略时,需要使用一些AudioSystem提供的静态方法,如获取音频设备的状态等。
AudioSystem由JAVA代码、JNI代码、C++代码组成:
AudioSystem代码位于:
frameworks/base/service/java/com/android/server/audio/AudioSystem.java
frameworks/base/core/jni/android_media_AudioSystem.cpp
frameworks/base/core/jni/android_media_AudioSystem.h
frameworks/av/media/libaudioclient/AudioSystem.cpp
frameworks/av/media/libaudioclient/include/media/AudioSystem.h
AudioSystem的定义:
- public class AudioSystem {}
- class AudioSystem{}
static void setErrorCallback(ErrorCallback cb):设置错误回调
static void setDynamicPolicyCallback(DynamicPolicyCallback cb):设置一个回调函数来动态更新设备的音频策略
static void setRecordingCallback(AudioRecordingCallback cb):设置一个回调函数来监听录音状体和录音数据
static boolean isSingleVolume(Context context):检测设备是否只有一个音量控制
static int setStreamVolumeIndexAS(int stream, int index, int device):设置Stream音量
static int getValueForVibrateSetting(int existingValue, int vibrateType, int vibrateSetting) :
static int getDefaultStreamVolume(int streamType):获取默认Srteam音量
static String streamToString(int stream) :Stream转为String
static native int setParameters(String keyValuePairs):设置音频参数
static native String getParameters(String keys):获取音频参数
static native int setDeviceConnectionState(int device, int state, String device_address, String device_name, int codecFormat):设置设备连接状态
static native int getDeviceConnectionState(int device, String device_address):获取设备连接状态
static native int handleDeviceConfigChange(int device, String device_address, String device_name, int codecFormat):设备设置变更处理
static native int setPhoneState(int state):设置电话状态
static native int setForceUse(int usage, int config):设置设备音频的使用方案
static native int getForceUse(int usage):获取设备音频的使用方案
static native int initStreamVolume(int stream, int indexMin, int indexMax):初始化Stream音量
static native int setStreamVolumeIndex(int stream, int index, int device):设置Stream音量
static native int getStreamVolumeIndex(int stream, int device):获取Stream音量
static native int setVolumeIndexForAttributes(@NonNull AudioAttributes attributes, int index, int device):设置音量
static native int getVolumeIndexForAttributes(@NonNull AudioAttributes attributes, int device):获取音量
static native int getMinVolumeIndexForAttributes(@NonNull AudioAttributes attributes):获取最小音量
static native int getMaxVolumeIndexForAttributes(@NonNull AudioAttributes attributes):获取最大音量
static native int setMasterVolume(float value):设置主音量
static native float getMasterVolume():获取主音量
static native int setMasterMute(boolean mute):设置主音量静音
static native boolean getMasterMute();:获取主音量静音
static native int getDevicesForStream(int stream):获取设备
static native int setMasterMono(boolean mono):设置主单声道
static native boolean getMasterMono():获取主单声道
static native int setRttEnabled(boolean enabled):使能RTT
static native int getPrimaryOutputSamplingRate():设置主输出采样率
static native int getPrimaryOutputFrameCount():获取音频输出设备的缓冲帧大小
static native int getOutputLatency(int stream):获取音频输出设备的音频延迟
static native int setLowRamDevice(boolean isLowRamDevice, long totalMemory):
static native int checkAudioFlinger():检测AudioFlinger
static native int listAudioPorts(ArrayList<AudioPort> ports, int[] generation):
static native int createAudioPatch(AudioPatch[] patch, AudioPortConfig[] sources, AudioPortConfig[] sinks):创建Audio Patch
static native int releaseAudioPatch(AudioPatch patch):释放Audio Patch
static native int listAudioPatches(ArrayList<AudioPatch> patches, int[] generation):获取当前音频设备的连接状态并返回音频连接列表
static native int setAudioPortConfig(AudioPortConfig config):设置音频端口的配置参数
static native int startAudioSource(AudioPortConfig config, AudioAttributes audioAttributes):开始Audio Source
static native int stopAudioSource(int handle):停止Audio Source
static native int getAudioHwSyncForSession(int sessionId):获取Audio硬件Sync
static native int registerPolicyMixes(ArrayList<AudioMix> mixes, boolean register):注册音频策略混合器
static native int setUidDeviceAffinities(int uid, @NonNull int[] types, @NonNull String[] addresses):设置指定应用程序的音频设备亲和性
static native int removeUidDeviceAffinities(int uid):删除指定应用的音频设备亲和性
static native int systemReady():Audio系统Ready
static native float getStreamVolumeDB(int stream, int index, int device):获取Stream音量DB值
static native int setAllowedCapturePolicy(int uid, int flags):设置音频捕获策略限制
static native int getMicrophones(ArrayList<MicrophoneInfo> microphonesInfo):获取当前系统可用的麦克风列表
static native int getSurroundFormats(Map<Integer, Boolean> surroundFormats, boolean reported):获取当前系统支持的环绕声格式列表
static native int getHwOffloadEncodingFormatsSupportedForA2DP(ArrayList<Integer> formatList):
static native int setSurroundFormatEnabled(int audioFormat, boolean enabled):启用或禁用特定环绕声格式
static native int setAssistantUid(int uid):
static native boolean isHapticPlaybackSupported():
AUDIO_STREAM
public static final int STREAM_DEFAULT = -1;
public static final int STREAM_VOICE_CALL = 0;
public static final int STREAM_SYSTEM = 1;
public static final int STREAM_RING = 2;
public static final int STREAM_MUSIC = 3;
public static final int STREAM_ALARM = 4;
public static final int STREAM_NOTIFICATION = 5;
public static final int STREAM_BLUETOOTH_SCO = 6;
public static final int STREAM_SYSTEM_ENFORCED = 7;
public static final int STREAM_DTMF = 8;
public static final int STREAM_TTS = 9;
public static final int STREAM_ACCESSIBILITY = 10;
AUDIO_FORCE
public static final int FORCE_NONE = 0;
public static final int FORCE_SPEAKER = 1;
public static final int FORCE_HEADPHONES = 2;
public static final int FORCE_BT_SCO = 3;
public static final int FORCE_BT_A2DP = 4;
public static final int FORCE_WIRED_ACCESSORY = 5;
public static final int FORCE_BT_CAR_DOCK = 6;
public static final int FORCE_BT_DESK_DOCK = 7;
public static final int FORCE_ANALOG_DOCK = 8;
public static final int FORCE_DIGITAL_DOCK = 9;
public static final int FORCE_NO_BT_A2DP = 10;
public static final int FORCE_SYSTEM_ENFORCED = 11;
public static final int FORCE_HDMI_SYSTEM_AUDIO_ENFORCED = 12;
public static final int FORCE_ENCODED_SURROUND_NEVER = 13;
public static final int FORCE_ENCODED_SURROUND_ALWAYS = 14;
public static final int FORCE_ENCODED_SURROUND_MANUAL = 15;
public static final int NUM_FORCE_CONFIG = 16;
DEVICE_OUT
public static final int DEVICE_NONE = 0x0;
public static final int DEVICE_BIT_IN = 0x80000000;
public static final int DEVICE_BIT_DEFAULT = 0x40000000;
public static final int DEVICE_OUT_EARPIECE = 0x1;
public static final int DEVICE_OUT_SPEAKER = 0x2;
public static final int DEVICE_OUT_WIRED_HEADSET = 0x4;
public static final int DEVICE_OUT_WIRED_HEADPHONE = 0x8;
public static final int DEVICE_OUT_BLUETOOTH_SCO = 0x10;
public static final int DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 0x20;
public static final int DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 0x40;
public static final int DEVICE_OUT_BLUETOOTH_A2DP = 0x80;
public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 0x100;
public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 0x200;
public static final int DEVICE_OUT_AUX_DIGITAL = 0x400;
public static final int DEVICE_OUT_HDMI = DEVICE_OUT_AUX_DIGITAL;
public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800;
public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000;
public static final int DEVICE_OUT_USB_ACCESSORY = 0x2000;
public static final int DEVICE_OUT_USB_DEVICE = 0x4000;
public static final int DEVICE_OUT_REMOTE_SUBMIX = 0x8000;
public static final int DEVICE_OUT_TELEPHONY_TX = 0x10000;
public static final int DEVICE_OUT_LINE = 0x20000;
public static final int DEVICE_OUT_HDMI_ARC = 0x40000;
public static final int DEVICE_OUT_SPDIF = 0x80000;
public static final int DEVICE_OUT_FM = 0x100000;
public static final int DEVICE_OUT_AUX_LINE = 0x200000;
public static final int DEVICE_OUT_SPEAKER_SAFE = 0x400000;
public static final int DEVICE_OUT_IP = 0x800000;
public static final int DEVICE_OUT_BUS = 0x1000000;
public static final int DEVICE_OUT_PROXY = 0x2000000;
public static final int DEVICE_OUT_USB_HEADSET = 0x4000000;
public static final int DEVICE_OUT_HEARING_AID = 0x8000000;
public static final int DEVICE_OUT_DEFAULT = DEVICE_BIT_DEFAULT;
DEVICE_IN
public static final int DEVICE_IN_COMMUNICATION = DEVICE_BIT_IN | 0x1;
public static final int DEVICE_IN_AMBIENT = DEVICE_BIT_IN | 0x2;
public static final int DEVICE_IN_BUILTIN_MIC = DEVICE_BIT_IN | 0x4;
public static final int DEVICE_IN_BLUETOOTH_SCO_HEADSET = DEVICE_BIT_IN | 0x8;
public static final int DEVICE_IN_WIRED_HEADSET = DEVICE_BIT_IN | 0x10;
public static final int DEVICE_IN_AUX_DIGITAL = DEVICE_BIT_IN | 0x20;
public static final int DEVICE_IN_HDMI = DEVICE_IN_AUX_DIGITAL;
public static final int DEVICE_IN_VOICE_CALL = DEVICE_BIT_IN | 0x40;
public static final int DEVICE_IN_TELEPHONY_RX = DEVICE_IN_VOICE_CALL;
public static final int DEVICE_IN_BACK_MIC = DEVICE_BIT_IN | 0x80;
public static final int DEVICE_IN_REMOTE_SUBMIX = DEVICE_BIT_IN | 0x100;
public static final int DEVICE_IN_ANLG_DOCK_HEADSET = DEVICE_BIT_IN | 0x200;
public static final int DEVICE_IN_DGTL_DOCK_HEADSET = DEVICE_BIT_IN | 0x400;
public static final int DEVICE_IN_USB_ACCESSORY = DEVICE_BIT_IN | 0x800;
public static final int DEVICE_IN_USB_DEVICE = DEVICE_BIT_IN | 0x1000;
public static final int DEVICE_IN_FM_TUNER = DEVICE_BIT_IN | 0x2000;
public static final int DEVICE_IN_TV_TUNER = DEVICE_BIT_IN | 0x4000;
public static final int DEVICE_IN_LINE = DEVICE_BIT_IN | 0x8000;
public static final int DEVICE_IN_SPDIF = DEVICE_BIT_IN | 0x10000;
public static final int DEVICE_IN_BLUETOOTH_A2DP = DEVICE_BIT_IN | 0x20000;
public static final int DEVICE_IN_LOOPBACK = DEVICE_BIT_IN | 0x40000;
public static final int DEVICE_IN_IP = DEVICE_BIT_IN | 0x80000;
public static final int DEVICE_IN_BUS = DEVICE_BIT_IN | 0x100000;
public static final int DEVICE_IN_PROXY = DEVICE_BIT_IN | 0x1000000;
public static final int DEVICE_IN_USB_HEADSET = DEVICE_BIT_IN | 0x2000000;
public static final int DEVICE_IN_BLUETOOTH_BLE = DEVICE_BIT_IN | 0x4000000;
public static final int DEVICE_IN_HDMI_ARC = DEVICE_BIT_IN | 0x8000000;
public static final int DEVICE_IN_ECHO_REFERENCE = DEVICE_BIT_IN | 0x10000000;
public static final int DEVICE_IN_DEFAULT = DEVICE_BIT_IN | DEVICE_BIT_DEFAULT;
AUDIO_FORMAT
public static final int AUDIO_FORMAT_INVALID = 0xFFFFFFFF;
public static final int AUDIO_FORMAT_DEFAULT = 0;
public static final int AUDIO_FORMAT_AAC = 0x04000000;
public static final int AUDIO_FORMAT_SBC = 0x1F000000;
public static final int AUDIO_FORMAT_APTX = 0x20000000;
public static final int AUDIO_FORMAT_APTX_HD = 0x21000000;
public static final int AUDIO_FORMAT_LDAC = 0x23000000;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。