- 所有超接口:
-
AutoCloseable
- 所有已知子接口:
-
Clip
,DataLine
,Mixer
,Port
,SourceDataLine
,TargetDataLine
Line
接口表示单声道或多声道音频输入。线是数字音频“管道”的一个元素,例如混音器、输入或输出端口,或者进出混音器的数据路径。
一条线可以有控件,例如增益、声像和混响。这些控件本身是扩展基础Control
类的类的实例。 Line
接口提供了两个访问器方法来获取线的控件: getControls
返回整个集合,getControl
返回指定类型的单个控件。
线在不同时间存在于不同状态。当一条线打开时,它会为自己保留系统资源,当它关闭时,这些资源将被释放给其他对象或应用程序。 isOpen()
方法让您可以发现一条线是打开还是关闭的。但是,打开的线不一定正在处理数据。这种处理通常是由子接口方法发起的,例如SourceDataLine.write
和TargetDataLine.read
。
您可以注册一个对象,以便在线的状态发生变化时接收通知。该对象必须实现LineListener
接口,该接口由单个方法update
组成。当一条线打开和关闭时(如果是DataLine
,则在启动和停止时),将调用此方法。
一个对象可以注册以监听多条线。它在其update
方法中接收的事件将指定创建事件的线,事件的类型(OPEN
、CLOSE
、START
或STOP
),以及事件发生时线处理了多少个样本帧。
某些线操作,例如打开和关闭,如果在线是共享音频资源时由非特权代码调用,可能会生成安全异常。
- 自版本:
- 1.3
- 另请参阅:
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addLineListener
(LineListener listener) 向此线添加侦听器。void
close()
关闭线,指示可以释放线正在使用的任何系统资源。getControl
(Control.Type control) 获取指定类型的控件(如果有)。Control[]
获取与此线关联的控件集。获取描述此线的Line.Info
对象。boolean
isControlSupported
(Control.Type control) 指示线是否支持指定类型的控件。boolean
isOpen()
指示线是否打开,这意味着它已经保留了系统资源并且正在运行,尽管它可能当前没有播放或捕获声音。void
open()
打开线,指示它应获取任何所需的系统资源并变为可操作。void
removeLineListener
(LineListener listener) 从此线的侦听器列表中删除指定的侦听器。
-
Method Details
-
getLineInfo
Line.Info getLineInfo()获取描述此线的Line.Info
对象。- 返回:
- 线的描述
-
open
打开线,指示它应获取任何所需的系统资源并变为可操作。如果此操作成功,线将标记为打开,并向线的侦听器分派一个OPEN
事件。请注意,一些线一旦关闭就无法重新打开。尝试重新打开这样的线将始终导致
LineUnavailableException
。某些类型的线具有可配置的属性,这些属性可能会影响资源分配。例如,
DataLine
必须以特定格式和缓冲区大小打开。这样的线应提供一种机制来配置这些属性,例如一个额外的open
方法或允许应用程序指定所需设置的方法。此方法不带任何参数,使用当前设置打开线。对于
SourceDataLine
和TargetDataLine
对象,这意味着使用默认设置打开线。但是,对于Clip
,当加载数据时确定缓冲区大小。由于此方法不允许应用程序指定要加载的任何数据,因此会抛出IllegalArgumentException
。因此,您应该使用Clip
接口中提供的open
方法之一来将数据加载到Clip
中。对于
DataLine
,如果用于检索线的DataLine.Info
对象指定了至少一个完全限定的音频格式,则最后一个将用作默认格式。- 抛出:
-
IllegalArgumentException
- 如果在Clip实例上调用此方法 -
LineUnavailableException
- 如果由于资源限制而无法打开线 -
SecurityException
- 如果由于安全限制而无法打开线 - 另请参阅:
-
close
void close()关闭线,指示可以释放线正在使用的任何系统资源。如果此操作成功,线将标记为关闭,并向线的侦听器分派一个CLOSE
事件。- 由:
-
close
在接口AutoCloseable
中 - 抛出:
-
SecurityException
- 如果由于安全限制而无法关闭线 - 另请参阅:
-
isOpen
boolean isOpen()指示线是否打开,这意味着它已经保留了系统资源并且正在运行,尽管它可能当前没有播放或捕获声音。- 返回:
-
如果线是打开的,则为
true
,否则为false
- 另请参阅:
-
getControls
Control[] getControls()获取与此线关联的控件集。某些控件可能仅在线打开时才可用。如果没有控件,则此方法返回长度为0的数组。- 返回:
- 控件数组
- 另请参阅:
-
isControlSupported
指示线是否支持指定类型的控件。某些控件可能仅在线打开时才可用。- 参数:
-
control
- 要查询支持的控件类型 - 返回:
-
如果支持至少一个指定类型的控件,则为
true
,否则为false
-
getControl
获取指定类型的控件(如果有)。某些控件可能仅在线打开时才可用。- 参数:
-
control
- 请求的控件类型 - 返回:
- 指定类型的控件
- 抛出:
-
IllegalArgumentException
- 如果不支持指定类型的控件 - 另请参阅:
-
addLineListener
向此线添加侦听器。每当线的状态发生变化时,将调用侦听器的update()
方法,并传递描述更改的LineEvent
对象。- 参数:
-
listener
- 要添加为此线路监听器的对象 - 参见:
-
removeLineListener
从此线路的监听器列表中移除指定的监听器。- 参数:
-
listener
- 要移除的监听器 - 参见:
-