Most visited

Recently visited

Added in API level 9

AudioEffect

public class AudioEffect
extends Object

java.lang.Object
   ↳ android.media.audiofx.AudioEffect
Known Direct Subclasses


AudioEffect是用于控制由android音频框架提供的音频效果的基类。

应用程序不应直接使用AudioEffect类,而应使用其派生类之一来控制特定效果:

要将音频效果应用于特定的AudioTrack或MediaPlayer实例,应用程序必须在创建AudioEffect时指定该实例的音频会话ID。 (有关音频会话的详细信息,请参阅getAudioSessionId() )。

注:不建议使用会话0将插入效果(均衡器,低音增强,虚拟器)附加到全局音频输出混合。

如果在指定的音频会话中不存在相同效果类型的实例,则创建AudioEffect对象将在音频框架中创建相应的效果引擎。 如果存在,将使用此实例。

创建AudioEffect对象(或派生类)的应用程序将根据优先级参数接收或不接受效果引擎的控制。 如果优先级高于当前效果引擎所有者使用的优先级,则该控件将转移到新对象。 否则控制将保留在前一个对象中。 在这种情况下,新应用程序将被合适的侦听器通知有效引擎状态或控制所有权的变化。

Summary

Nested classes

class AudioEffect.Descriptor

效果描述符包含音频框架中实现的特定效果的信息:

  • 键入:标识效果类型的UUID。

interface AudioEffect.OnControlStatusChangeListener

OnControlStatusChangeListener接口定义了当效果引擎的控件被应用程序获取或丢失时由AudioEffect调用的方法

interface AudioEffect.OnEnableStatusChangeListener

OnEnableStatusChangeListener接口定义了当控制应用程序更改效果引擎的启用状态时由AudioEffect调用的方法。

Constants

String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION

旨在向效果控制应用程序或服务发信号通知音频会话已关闭,并且该效果不应再被应用。

String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL

意图启动音频效果控制面板用户界面。

String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION

旨在向效果控制应用程序或服务发信号通知新音频会话打开并要求应用音频效果。

int ALREADY_EXISTS

内部操作状态。

int CONTENT_TYPE_GAME

当播放内容的类型是游戏音频时, EXTRA_CONTENT_TYPE

int CONTENT_TYPE_MOVIE

当播放的内容类型是视频或电影时, EXTRA_CONTENT_TYPE

int CONTENT_TYPE_MUSIC

当播放的内容类型是音乐时, EXTRA_CONTENT_TYPE

int CONTENT_TYPE_VOICE

当播放的内容类型是语音音频时, EXTRA_CONTENT_TYPE

String EFFECT_AUXILIARY

效果连接模式是辅助功能。

String EFFECT_INSERT

插入效果连接模式。

int ERROR

未指定的错误。

int ERROR_BAD_VALUE

由于参数值不正确,操作失败。

int ERROR_DEAD_OBJECT

由于死亡的远程对象导致操作失败。

int ERROR_INVALID_OPERATION

操作失败,因为它被请求的状态不正确。

int ERROR_NO_INIT

由于对象初始化不当,操作失败。

int ERROR_NO_MEMORY

由于内存不足,操作失败。

String EXTRA_AUDIO_SESSION

包含应用效果的音频会话的ID。

String EXTRA_CONTENT_TYPE

指示应用程序播放哪种类型的内容。

String EXTRA_PACKAGE_NAME

包含调用应用程序的包名称。

int SUCCESS

成功运作。

Fields

public static final UUID EFFECT_TYPE_AEC

声学回声消除器(AEC)的UUID

public static final UUID EFFECT_TYPE_AGC

用于自动增益控制(AGC)的UUID

public static final UUID EFFECT_TYPE_BASS_BOOST

用于低音增强效果的UUID

public static final UUID EFFECT_TYPE_ENV_REVERB

UUID用于环境混响效果

public static final UUID EFFECT_TYPE_EQUALIZER

用于均衡器效果的UUID

public static final UUID EFFECT_TYPE_LOUDNESS_ENHANCER

用于响度增强器的UUID

public static final UUID EFFECT_TYPE_NS

用于噪声抑制器(NS)的UUID

public static final UUID EFFECT_TYPE_PRESET_REVERB

UUID用于预设混响效果

public static final UUID EFFECT_TYPE_VIRTUALIZER

用于虚拟器效果的UUID

Public methods

AudioEffect.Descriptor getDescriptor()

获取效果描述符。

boolean getEnabled()

返回效果启用状态

int getId()

返回影响唯一标识符。

boolean hasControl()

检查此AudioEffect对象是否正在控制效果引擎。

static Descriptor[] queryEffects()

查询平台上可用的所有效果。

void release()

释放本机AudioEffect资源。

void setControlStatusListener(AudioEffect.OnControlStatusChangeListener listener)

设置侦听器AudioEffect通知何时执行效果引擎控件。

void setEnableStatusListener(AudioEffect.OnEnableStatusChangeListener listener)

当效果引擎启用或禁用时,设置侦听器AudioEffect通知。

int setEnabled(boolean enabled)

启用或禁用该效果。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Constants

ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION

Added in API level 9
String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION

旨在向效果控制应用程序或服务发信号通知音频会话已关闭,并且该效果不应再被应用。

接收该意图的效果控制应用程序将删除此会话上的所有效果并将当前设置存储在特定于包的存储中。

通话包名称由额外的EXTRA_PACKAGE_NAME表示,音频会话ID由EXTRA_AUDIO_SESSION 这两个附加项都是强制性的

在音乐播放停止时和/或退出音频效果引擎消耗的免费系统资源时,应用程序广播此意图是一种好的做法。

常量值:“android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION”

ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL

Added in API level 9
String ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL

意图启动音频效果控制面板用户界面。

此意图的目标是实现音乐/媒体播放器应用程序和音频效果控制应用程序或服务的单独实现。 这将使平台供应商能够为标准效果提供更先进的控制选项,或控制平台特定的效果。

该意图携带播放器应用程序用于向控制面板应用程序传送必要信息的许多附加信息。

调用应用程序必须使用 startActivityForResult(Intent, int)方法启动控制面板,以便控制面板应用程序指示和使用其包名称,以跟踪此特定应用程序的更改。

额外的EXTRA_AUDIO_SESSION将指示应该应用音频效果的音频会话。 如果没有指定音频会话,则会发生以下任何一个follownig:

- 如果音频会话之前由呼叫应用程序以 ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION意图打开,则效果更改将应用于该会话。

- 如果未打开任何音频会话,则更改将存储在程序包特定的存储区中,并且在此应用程序打开新的音频会话时应用此更改。

EXTRA_CONTENT_TYPE额外的将帮助控制面板应用程序自定义用户界面布局和默认音频效果设置,如果没有存储调用应用程序。

常量值:“android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL”

ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION

Added in API level 9
String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION

旨在向效果控制应用程序或服务发信号通知新音频会话打开并要求应用音频效果。

这与ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL不同, ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL在这种情况下不应该显示UI。 音乐播放器应用程序可以在开始播放之前播放此意图,以确保先前由用户选择的任何音频效果设置都已应用。

接收到该意图的效果控制应用程序将查找先前存储的调用应用程序的设置,创建所有需要的音频效果并将效果设置应用于指定的音频会话。

主叫包名称由EXTRA_PACKAGE_NAME额外指示,音频会话ID由EXTRA_AUDIO_SESSION 这两个附加项都是强制性的

如果找不到调用应用程序的存储设置,则将应用由EXTRA_CONTENT_TYPE指示的内容类型的默认设置。 给定内容类型的默认设置是平台特定的。

常量值:“android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION”

ALREADY_EXISTS

Added in API level 9
int ALREADY_EXISTS

内部操作状态。 没有任何方法返回。

常量值:-2(0xfffffffe)

CONTENT_TYPE_GAME

Added in API level 9
int CONTENT_TYPE_GAME

当播放内容的类型是游戏音频时, EXTRA_CONTENT_TYPE

常量值:2(0x00000002)

CONTENT_TYPE_MOVIE

Added in API level 9
int CONTENT_TYPE_MOVIE

当播放的内容类型是视频或电影时, EXTRA_CONTENT_TYPE

常数值:1(0x00000001)

CONTENT_TYPE_MUSIC

Added in API level 9
int CONTENT_TYPE_MUSIC

当播放的内容类型是音乐时, EXTRA_CONTENT_TYPE

常量值:0(0x00000000)

CONTENT_TYPE_VOICE

Added in API level 9
int CONTENT_TYPE_VOICE

当播放的内容类型是语音音频时, EXTRA_CONTENT_TYPE

常量值:3(0x00000003)

EFFECT_AUXILIARY

Added in API level 9
String EFFECT_AUXILIARY

效果连接模式是辅助功能。

必须在会话0(全局输出混合)上创建辅助效果。 为了使MediaPlayer或AudioTrack得到这种效果,必须明确地附加这种效果,并且必须指定发送级别。

将其附加到MediaPlayer或AudioTrack时,使用由 getId()返回的效果ID指定此特定效果。

常数值:“辅助”

EFFECT_INSERT

Added in API level 9
String EFFECT_INSERT

插入效果连接模式。 在创建效果时指定音频会话ID将在所有播放器在同一音频会话中插入此效果。

常量值:“插入”

ERROR

Added in API level 9
int ERROR

未指定的错误。

常量值:-1(0xffffffff)

ERROR_BAD_VALUE

Added in API level 9
int ERROR_BAD_VALUE

由于参数值不正确,操作失败。

常量值:-4(0xfffffffc)

ERROR_DEAD_OBJECT

Added in API level 9
int ERROR_DEAD_OBJECT

由于死亡的远程对象导致操作失败。

常量值:-7(0xfffffff9)

ERROR_INVALID_OPERATION

Added in API level 9
int ERROR_INVALID_OPERATION

操作失败,因为它被请求的状态不正确。

常量值:-5(0xfffffffb)

ERROR_NO_INIT

Added in API level 9
int ERROR_NO_INIT

由于对象初始化不当,操作失败。

常量值:-3(0xfffffffd)

ERROR_NO_MEMORY

Added in API level 9
int ERROR_NO_MEMORY

由于内存不足,操作失败。

常量值:-6(0xfffffffa)

EXTRA_AUDIO_SESSION

Added in API level 9
String EXTRA_AUDIO_SESSION

包含应用效果的音频会话的ID。

这额外的是与使用 ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANELACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSIONACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION意图。

额外的值是int类型,并且是音频会话ID。

也可以看看:

常量值:“android.media.extra.AUDIO_SESSION”

EXTRA_CONTENT_TYPE

Added in API level 9
String EXTRA_CONTENT_TYPE

指示应用程序播放哪种类型的内容。

此额外用于 ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANELACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION意图。

效果控制应用程序使用此信息来自定义UI并选择适当的默认效果设置。 内容类型是以下之一:

If omitted, the content type defaults to CONTENT_TYPE_MUSIC.

常量值:“android.media.extra.CONTENT_TYPE”

EXTRA_PACKAGE_NAME

Added in API level 9
String EXTRA_PACKAGE_NAME

包含调用应用程序的包名称。

此额外用于 ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSIONACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION意图。

额外的值是一个包含完整软件包名称的字符串。

常量值:“android.media.extra.PACKAGE_NAME”

SUCCESS

Added in API level 9
int SUCCESS

成功运作。

常量值:0(0x00000000)

Fields

EFFECT_TYPE_AEC

Added in API level 18
UUID EFFECT_TYPE_AEC

声学回声消除器(AEC)的UUID

EFFECT_TYPE_AGC

Added in API level 18
UUID EFFECT_TYPE_AGC

用于自动增益控制(AGC)的UUID

EFFECT_TYPE_BASS_BOOST

Added in API level 18
UUID EFFECT_TYPE_BASS_BOOST

用于低音增强效果的UUID

EFFECT_TYPE_ENV_REVERB

Added in API level 18
UUID EFFECT_TYPE_ENV_REVERB

UUID用于环境混响效果

EFFECT_TYPE_EQUALIZER

Added in API level 18
UUID EFFECT_TYPE_EQUALIZER

用于均衡器效果的UUID

EFFECT_TYPE_LOUDNESS_ENHANCER

Added in API level 19
UUID EFFECT_TYPE_LOUDNESS_ENHANCER

用于响度增强器的UUID

EFFECT_TYPE_NS

Added in API level 18
UUID EFFECT_TYPE_NS

用于噪声抑制器(NS)的UUID

EFFECT_TYPE_PRESET_REVERB

Added in API level 18
UUID EFFECT_TYPE_PRESET_REVERB

UUID用于预设混响效果

EFFECT_TYPE_VIRTUALIZER

Added in API level 18
UUID EFFECT_TYPE_VIRTUALIZER

用于虚拟器效果的UUID

Public methods

getDescriptor

Added in API level 9
AudioEffect.Descriptor getDescriptor ()

获取效果描述符。

Returns
AudioEffect.Descriptor
Throws
IllegalStateException

也可以看看:

getEnabled

Added in API level 9
boolean getEnabled ()

返回效果启用状态

Returns
boolean true if the effect is enabled, false otherwise.
Throws
IllegalStateException

getId

Added in API level 9
int getId ()

返回影响唯一标识符。 当该效果是辅助效果(混响)时,此系统范围的唯一标识符可用于将此效果附加到MediaPlayer或AudioTrack上,

Returns
int the effect identifier.
Throws
IllegalStateException

hasControl

Added in API level 9
boolean hasControl ()

检查此AudioEffect对象是否正在控制效果引擎。

Returns
boolean true if this instance has control of effect engine, false otherwise.
Throws
IllegalStateException

queryEffects

Added in API level 9
Descriptor[] queryEffects ()

查询平台上可用的所有效果。 返回一个包含AudioEffect.Descriptor对象的数组

Returns
Descriptor[]
Throws
IllegalStateException

release

Added in API level 9
void release ()

释放本机AudioEffect资源。 在不使用时释放效果引擎是一种很好的做法,因为控件可以返回到其他应用程序或释放的本地资源。

setControlStatusListener

Added in API level 9
void setControlStatusListener (AudioEffect.OnControlStatusChangeListener listener)

设置侦听器AudioEffect通知何时执行效果引擎控件。

setEnableStatusListener

Added in API level 9
void setEnableStatusListener (AudioEffect.OnEnableStatusChangeListener listener)

当效果引擎启用或禁用时,设置侦听器AudioEffect通知。

setEnabled

Added in API level 9
int setEnabled (boolean enabled)

启用或禁用该效果。 创建音频效果不会自动在音频源上应用此效果。 它创建了处理这种效果所需的资源,但音频信号仍然通过效果引擎绕过。 调用此方法将使效果实际应用于或不在相应的音频会话中播放的音频内容。

Parameters
enabled boolean: the requested enable state
Returns
int SUCCESS in case of success, ERROR_INVALID_OPERATION or ERROR_DEAD_OBJECT in case of failure.
Throws
IllegalStateException

Protected methods

finalize

Added in API level 9
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize方法以处置系统资源或执行其他清理。

finalize的一般合同是,如果当Java TM虚拟机已经确定不再有任何方式可以通过任何尚未死亡的线程访问该对象时,除了作为动作的结果之外取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

finalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定的对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在为对象调用 finalize方法后,不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过任何尚未死亡的线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定的对象,Java虚拟机从不会多次调用 finalize方法。

finalize方法抛出的任何异常 finalize导致此对象的终止被暂停,但会被忽略。

Hooray!