public interface Line extends AutoCloseable
Line
接口表示单声道或多声道音频馈送。
线是数字音频“流水线”的一个元素,例如混频器,输入或输出端口,或进入或离开混频器的数据路径。
线可以有控制,如增益,平移和混响。 控件本身就是扩展基础
类的类的实例。 Control
Line
接口提供两种访问方法来获取线路的控件:
返回整个集合,而getControls
返回指定类型的单个控件。 getControl
线条在不同时期存在于各种状态。 当一条线路打开时,它将为其自身保留系统资源,当它关闭时,这些资源被释放用于其他对象或应用程序。
方法可以让您发现线路是开放还是关闭。 然而,开线不需要处理数据。 这种处理通常由诸如isOpen()
和SourceDataLine.write
之类的TargetDataLine.read
接口方法来SourceDataLine.write
。 TargetDataLine.read
每当线路状态发生变化时,您可以注册一个对象来接收通知。 该对象必须实现
接口,它由单方法LineListener
。 当线路打开和关闭时(如果是update
DataLine
,启动和停止),将调用此方法。
可以注册一个对象来监听多行。 它接收在其事件update
方法将指定哪些线创建的事件,这是什么类型的事件( OPEN
, CLOSE
, START
,或STOP
)许多样品如何帧的行,并在事件发生的时间已经处理。
某些行操作(如打开和关闭)可以在线路是共享音频资源时由非特权代码调用时生成安全异常。
LineEvent
Modifier and Type | Interface and Description |
---|---|
static class |
Line.Info
Line.Info 对象包含有关行的信息。
|
Modifier and Type | Method and Description |
---|---|
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
open
种提供的方法Clip
接口将数据加载到Clip
。
对于DataLine
,如果用于检索该行的DataLine.Info
对象指定了至少一个完全限定的音频格式,则最后一个将被用作默认格式。
IllegalArgumentException
- 如果在Clip实例上调用此方法。
LineUnavailableException
- 如果由于资源限制,该行无法打开。
SecurityException
- 如果由于安全限制,该行无法打开。
close()
, isOpen()
, LineEvent
, DataLine
, Clip.open(AudioFormat, byte[], int, int)
, Clip.open(AudioInputStream)
void close()
CLOSE
事件将发送到该行的监听器。
close
在界面
AutoCloseable
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)
update()
方法将使用描述更改的LineEvent
对象进行调用。
listener
- 作为监听器添加到此行的对象
removeLineListener(javax.sound.sampled.LineListener)
, LineListener.update(javax.sound.sampled.LineEvent)
, LineEvent
void removeLineListener(LineListener listener)
listener
- 要删除的监听器
addLineListener(javax.sound.sampled.LineListener)