|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.sampled
接口 Line
- 所有已知子接口:
- Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine
-
public interface Line
Line
接口表示单声道或多声道音频供给。line 是数字音频“管线”(如混频器、输入或输出端口,或往返于混频器的数据路径)的元素。
line 可以有各种控件,如 gain、pan 和 reverb。这些控件本身是扩展基本
类的那些类的实例。Control
Line
接口提供两个获得 line 控件的访问器方法:
返回整个集合,getControls
返回指定类型的单个控件。getControl
行在不同的时间以各种状态存在。当行打开时,它保留本身的系统资源;关闭时,这些资源就会为其他对象或应用程序释放。
方法让您发现行是打开的还是关闭的。但是打开的行不需要处理数据。此类处理通常由 isOpen()
和 SourceDataLine.write
之类的子接口方法初始化。TargetDataLine.read
可以注册一个对象,以便每当行状态更改时接收通知。该对象必须实现
接口,此接口由单个方法 LineListener
组成。此方法将在行打开和关闭时调用(如果该行在开始和停止时是一个 update
DataLine
)。
可以注册一个对象来侦听多个行。用其 update
方法接收的事件将指定创建该事件的行、事件的类型(OPEN
、CLOSE
、START
或 STOP
),以及发生事件时该行处理的样本帧的数量。
如果行是共享的音频资源时由未授权的代码调用,则某些行操作(如 open 和 close)可以生成安全性异常。
- 从以下版本开始:
- 1.3
- 另请参见:
-
LineEvent
嵌套类摘要 | |
---|---|
static class |
Line.Info Line.Info 对象包含关于行的信息。 |
方法摘要 | |
---|---|
void |
addLineListener(LineListener listener) 将侦听器添加到此行。 |
void |
close() 关闭行,指示可以释放的该行使用的所有系统资源。 |
Control |
getControl(Control.Type control) 获得指定类型的控件,如果有的话。 |
Control[] |
getControls() 获得与此行相关的控件集合。 |
Line.Info |
getLineInfo() 获得描述此行的 Line.Info 对象。 |
boolean |
isControlSupported(Control.Type control) 指示该行是否支持特定类型的控件。 |
boolean |
isOpen() 指示行是否已打开,行已打开则意味着它已保留系统资源并是可操作的,尽管它当前可能没有播放或捕获声音。 |
void |
open() 打开行,指示它应该获得所有所需系统资源并变得可操作。 |
void |
removeLineListener(LineListener listener) 从此行的侦听器列表中移除指定侦听器。 |
方法详细信息 |
---|
getLineInfo
Line.Info getLineInfo()
-
获得描述此行的
Line.Info
对象。 -
- 返回:
- 该行的描述。
open
void open() throws LineUnavailableException
-
打开行,指示它应该获得所有所需系统资源并变得可操作。如果此操作获得成功,则将行标记为 open,且向行的侦听器指派一个
OPEN
事件。注意,有些行一旦关闭就无法重新打开。试图重新打开这样的行总是导致
LineUnavailableException
。某些类型的行具有可能影响资源分配的可配置属性。例如,必须使用特定格式和缓冲区大小打开
DataLine
。此类行应该提供配置这些属性的机制,如允许应用程序指定所需设置的其他一个或多个open
方法。此方法不使用任何参数,并使用当前设置打开行。对于
和SourceDataLine
对象,这意味着使用默认设置打开该行。但对于TargetDataLine
,缓冲区大小是在加载数据时确定的。由于此方法不允许应用程序指定任何要加载的数据,因此会抛出 IllegalArgumentException。所以用户应该改用Clip
Clip
接口中提供的某一open
方法将数据加载到Clip
中。对于
DataLine
,如果用于检索行的DataLine.Info
对象至少指定一个完全限定的音频格式,则将使用最后一个格式作为默认格式。 -
- 抛出:
-
IllegalArgumentException
- 如果在 Clip 接口上调用此方法。 -
LineUnavailableException
- 如果由于资源限制无法打开该行。 -
SecurityException
- 如果由于安全限制无法打开该行。 - 另请参见:
-
close()
,isOpen()
,LineEvent
,DataLine
,Clip.open(AudioFormat, byte[], int, int)
,Clip.open(AudioInputStream)
close
void close()
-
关闭行,指示可以释放的该行使用的所有系统资源。如果此操作成功,则将行标记为 closed,并给行的侦听器指派一个
CLOSE
事件。 -
- 抛出:
-
SecurityException
- 如果由于安全限制无法关闭该行。 - 另请参见:
-
open()
,isOpen()
,LineEvent
isOpen
boolean isOpen()
- 指示行是否已打开,行已打开则意味着它已保留系统资源并是可操作的,尽管它当前可能没有播放或捕获声音。
getControls
Control[] getControls()
- 获得与此行相关的控件集合。有些控件可能只在行打开时可用。如果没有控件,则此方法则返回一个长度为 0 的数组
-
- 返回:
- 控件数组
- 另请参见:
-
getControl(javax.sound.sampled.Control.Type)
isControlSupported
boolean isControlSupported(Control.Type control)
- 指示该行是否支持特定类型的控件。有些控件可能只在行打开时可用。
-
- 参数:
-
control
- 查询其是否受支持的控件类型 - 返回:
-
如果至少有一个指定类型的控件受支持,则返回
true
;否则返回false
。
getControl
Control getControl(Control.Type control)
- 获得指定类型的控件,如果有的话。有些控件可能只在行打开时可用。
-
- 参数:
-
control
- 所请求的控件类型 - 返回:
- 指定类型的控件
- 抛出:
-
IllegalArgumentException
- 如果指定类型的控件不受支持 - 另请参见:
-
getControls()
,isControlSupported(Control.Type control)