-
- All Superinterfaces:
-
AutoCloseable
- All Known Subinterfaces:
-
Clip
,DataLine
,Mixer
,Port
,SourceDataLine
,TargetDataLine
public interface Line extends AutoCloseable
Line
接口表示单声道或多声道音频馈送。 线是数字音频“流水线”的元素,例如混频器,输入或输出端口,或进出混频器的数据路径。一行可以有控件,例如增益,声像和混响。 控件本身是扩展基类
Control
类的类的实例。Line
接口提供了两种用于获取行控件的访问器方法:getControls
返回整个集合,getControl
返回指定类型的单个控件。线在不同时间存在于各种状态。 当一行打开时,它会为自己保留系统资源,当它关闭时,这些资源将被释放用于其他对象或应用程序。
isOpen()
方法可让您发现线路是打开还是关闭。 然而,开放线不需要处理数据。 这种处理通常由子接口方法启动,例如SourceDataLine.write
和TargetDataLine.read
。您可以注册一个对象,以便在线路状态发生变化时接收通知。 该对象必须实现
LineListener
接口,该接口由单个方法update
组成 。 当一行打开和关闭时(和,如果它是DataLine
,当它开始和停止时)将调用此方法。可以注册对象以收听多行。 它接收在其事件
update
方法将指定哪些线创建的事件,这是什么类型的事件(OPEN
,CLOSE
,START
,或STOP
)许多样品如何帧的行,并在事件发生的时间已经处理。某些行操作(如打开和关闭)可以在行是共享音频资源时由非特权代码调用时生成安全性异常。
- 从以下版本开始:
- 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
事件分派给该行的侦听器。请注意,某些线条一旦关闭,就无法重新打开。 尝试重新打开这样一条线将始终产生
LineUnavailableException
。某些类型的行具有可配置的属性,可能会影响资源分配。 例如,必须使用特定格式和缓冲区大小打开
DataLine
。 这样的线应该提供用于配置这些属性,一个机构,例如附加open
方法或允许应用程序指定所需的设置方法。此方法不带参数,并使用当前设置打开该行。 对于
SourceDataLine
和TargetDataLine
对象,这意味着使用默认设置打开该行。 但是,对于Clip
,缓冲区大小是在加载数据时确定的。 由于此方法不允许应用程序指定要加载的任何数据,因此抛出了IllegalArgumentException
。 因此,您应该使用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()
关闭该行,表示可以释放该行使用的所有系统资源。 如果此操作成功,则该行标记为已关闭,并将CLOSE
事件分派给该行的侦听器。- Specified by:
-
close
,界面AutoCloseable
- 异常
-
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)
-
addLineListener
void addLineListener(LineListener listener)
向此行添加侦听器。 每当线路状态发生变化时,将使用描述更改的LineEvent
对象调用侦听器的update()
方法。- 参数
-
listener
- 要添加为此行的侦听器的对象 - 另请参见:
-
removeLineListener(javax.sound.sampled.LineListener)
,LineListener.update(javax.sound.sampled.LineEvent)
,LineEvent
-
removeLineListener
void removeLineListener(LineListener listener)
从此行的侦听器列表中删除指定的侦听器。- 参数
-
listener
- 要删除的侦听器 - 另请参见:
-
addLineListener(javax.sound.sampled.LineListener)
-
-