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)可以生成安全性异常。
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) 从此行的侦听器列表中移除指定侦听器。 |
方法详细信息 |
---|
Line.Info getLineInfo()
Line.Info
对象。
void open() throws LineUnavailableException
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)
void close()
CLOSE
事件。
SecurityException
- 如果由于安全限制无法关闭该行。
open()
,
isOpen()
,
LineEvent
boolean isOpen()
Control[] getControls()
getControl(javax.sound.sampled.Control.Type)
boolean isControlSupported(Control.Type control)
control
- 查询其是否受支持的控件类型
true
;否则返回
false
。
Control getControl(Control.Type control)
control
- 所请求的控件类型
IllegalArgumentException
- 如果指定类型的控件不受支持
getControls()
,
isControlSupported(Control.Type control)
void addLineListener(LineListener listener)
LineEvent
对象调用侦听器的
update()
方法。
listener
- 将作为侦听器添加到此行的对象
removeLineListener(javax.sound.sampled.LineListener)
,
LineListener.update(javax.sound.sampled.LineEvent)
,
LineEvent
void removeLineListener(LineListener listener)
listener
- 要移除的侦听器
addLineListener(javax.sound.sampled.LineListener)