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对象(或派生类)的应用程序将根据优先级参数接收或不接受效果引擎的控制。 如果优先级高于当前效果引擎所有者使用的优先级,则该控件将转移到新对象。 否则控制将保留在前一个对象中。 在这种情况下,新应用程序将被合适的侦听器通知有效引擎状态或控制所有权的变化。
Nested classes |
|
---|---|
class |
AudioEffect.Descriptor 效果描述符包含音频框架中实现的特定效果的信息:
|
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 当播放内容的类型是游戏音频时, |
int |
CONTENT_TYPE_MOVIE 当播放的内容类型是视频或电影时, |
int |
CONTENT_TYPE_MUSIC 当播放的内容类型是音乐时, |
int |
CONTENT_TYPE_VOICE 当播放的内容类型是语音音频时, |
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
|
String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION
旨在向效果控制应用程序或服务发信号通知音频会话已关闭,并且该效果不应再被应用。
接收该意图的效果控制应用程序将删除此会话上的所有效果并将当前设置存储在特定于包的存储中。
通话包名称由额外的EXTRA_PACKAGE_NAME
表示,音频会话ID由EXTRA_AUDIO_SESSION
。 这两个附加项都是强制性的
在音乐播放停止时和/或退出音频效果引擎消耗的免费系统资源时,应用程序广播此意图是一种好的做法。
常量值:“android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION”
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”
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”
int CONTENT_TYPE_GAME
当播放内容的类型是游戏音频时, EXTRA_CONTENT_TYPE
常量值:2(0x00000002)
int CONTENT_TYPE_MOVIE
当播放的内容类型是视频或电影时, EXTRA_CONTENT_TYPE
常数值:1(0x00000001)
int CONTENT_TYPE_MUSIC
当播放的内容类型是音乐时, EXTRA_CONTENT_TYPE
常量值:0(0x00000000)
int CONTENT_TYPE_VOICE
当播放的内容类型是语音音频时, EXTRA_CONTENT_TYPE
常量值:3(0x00000003)
String EFFECT_AUXILIARY
效果连接模式是辅助功能。
必须在会话0(全局输出混合)上创建辅助效果。 为了使MediaPlayer或AudioTrack得到这种效果,必须明确地附加这种效果,并且必须指定发送级别。
将其附加到MediaPlayer或AudioTrack时,使用由 getId()
返回的效果ID指定此特定效果。
常数值:“辅助”
String EFFECT_INSERT
插入效果连接模式。 在创建效果时指定音频会话ID将在所有播放器在同一音频会话中插入此效果。
常量值:“插入”
int ERROR_INVALID_OPERATION
操作失败,因为它被请求的状态不正确。
常量值:-5(0xfffffffb)
String EXTRA_AUDIO_SESSION
包含应用效果的音频会话的ID。
这额外的是与使用 ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL
, ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION
和 ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION
意图。
额外的值是int类型,并且是音频会话ID。
常量值:“android.media.extra.AUDIO_SESSION”
String EXTRA_CONTENT_TYPE
指示应用程序播放哪种类型的内容。
此额外用于 ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL
和 ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION
意图。
效果控制应用程序使用此信息来自定义UI并选择适当的默认效果设置。 内容类型是以下之一:
If omitted, the content type defaults toCONTENT_TYPE_MUSIC
.
常量值:“android.media.extra.CONTENT_TYPE”
String EXTRA_PACKAGE_NAME
包含调用应用程序的包名称。
此额外用于 ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION
和 ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION
意图。
额外的值是一个包含完整软件包名称的字符串。
常量值:“android.media.extra.PACKAGE_NAME”
AudioEffect.Descriptor getDescriptor ()
获取效果描述符。
Returns | |
---|---|
AudioEffect.Descriptor |
Throws | |
---|---|
IllegalStateException |
也可以看看:
boolean getEnabled ()
返回效果启用状态
Returns | |
---|---|
boolean |
true if the effect is enabled, false otherwise. |
Throws | |
---|---|
IllegalStateException |
int getId ()
返回影响唯一标识符。 当该效果是辅助效果(混响)时,此系统范围的唯一标识符可用于将此效果附加到MediaPlayer或AudioTrack上,
Returns | |
---|---|
int |
the effect identifier. |
Throws | |
---|---|
IllegalStateException |
boolean hasControl ()
检查此AudioEffect对象是否正在控制效果引擎。
Returns | |
---|---|
boolean |
true if this instance has control of effect engine, false otherwise. |
Throws | |
---|---|
IllegalStateException |
Descriptor[] queryEffects ()
查询平台上可用的所有效果。 返回一个包含AudioEffect.Descriptor
对象的数组
Returns | |
---|---|
Descriptor[] |
Throws | |
---|---|
IllegalStateException |
void release ()
释放本机AudioEffect资源。 在不使用时释放效果引擎是一种很好的做法,因为控件可以返回到其他应用程序或释放的本地资源。
void setControlStatusListener (AudioEffect.OnControlStatusChangeListener listener)
设置侦听器AudioEffect通知何时执行效果引擎控件。
void setEnableStatusListener (AudioEffect.OnEnableStatusChangeListener listener)
当效果引擎启用或禁用时,设置侦听器AudioEffect通知。
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 |
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
导致此对象的终止被暂停,但会被忽略。