Module java.desktop

Interface Line

所有超接口:
AutoCloseable
所有已知子接口:
Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine

public interface Line extends AutoCloseable
Line接口表示单声道或多声道音频输入。线是数字音频“管道”的一个元素,例如混音器、输入或输出端口,或者进出混音器的数据路径。

一条线可以有控件,例如增益、声像和混响。这些控件本身是扩展基础Control类的类的实例。 Line接口提供了两个访问器方法来获取线的控件: getControls返回整个集合,getControl返回指定类型的单个控件。

线在不同时间存在于不同状态。当一条线打开时,它会为自己保留系统资源,当它关闭时,这些资源将被释放给其他对象或应用程序。 isOpen()方法让您可以发现一条线是打开还是关闭的。但是,打开的线不一定正在处理数据。这种处理通常是由子接口方法发起的,例如SourceDataLine.writeTargetDataLine.read

您可以注册一个对象,以便在线的状态发生变化时接收通知。该对象必须实现LineListener接口,该接口由单个方法update组成。当一条线打开和关闭时(如果是DataLine,则在启动和停止时),将调用此方法。

一个对象可以注册以监听多条线。它在其update方法中接收的事件将指定创建事件的线,事件的类型(OPENCLOSESTARTSTOP),以及事件发生时线处理了多少个样本帧。

某些线操作,例如打开和关闭,如果在线是共享音频资源时由非特权代码调用,可能会生成安全异常。

自版本:
1.3
另请参阅:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    Line.Info对象包含有关线的信息。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    向此线添加侦听器。
    void
    close()
    关闭线,指示可以释放线正在使用的任何系统资源。
    获取指定类型的控件(如果有)。
    获取与此线关联的控件集。
    获取描述此线的Line.Info对象。
    boolean
    指示线是否支持指定类型的控件。
    boolean
    isOpen()
    指示线是否打开,这意味着它已经保留了系统资源并且正在运行,尽管它可能当前没有播放或捕获声音。
    void
    open()
    打开线,指示它应获取任何所需的系统资源并变为可操作。
    void
    从此线的侦听器列表中删除指定的侦听器。
  • Method Details

    • getLineInfo

      Line.Info getLineInfo()
      获取描述此线的Line.Info对象。
      返回:
      线的描述
    • open

      void open() throws LineUnavailableException
      打开线,指示它应获取任何所需的系统资源并变为可操作。如果此操作成功,线将标记为打开,并向线的侦听器分派一个OPEN事件。

      请注意,一些线一旦关闭就无法重新打开。尝试重新打开这样的线将始终导致LineUnavailableException

      某些类型的线具有可配置的属性,这些属性可能会影响资源分配。例如,DataLine必须以特定格式和缓冲区大小打开。这样的线应提供一种机制来配置这些属性,例如一个额外的open方法或允许应用程序指定所需设置的方法。

      此方法不带任何参数,使用当前设置打开线。对于SourceDataLineTargetDataLine对象,这意味着使用默认设置打开线。但是,对于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

      boolean isControlSupported(Control.Type control)
      指示线是否支持指定类型的控件。某些控件可能仅在线打开时才可用。
      参数:
      control - 要查询支持的控件类型
      返回:
      如果支持至少一个指定类型的控件,则为true,否则为false
    • getControl

      Control getControl(Control.Type control)
      获取指定类型的控件(如果有)。某些控件可能仅在线打开时才可用。
      参数:
      control - 请求的控件类型
      返回:
      指定类型的控件
      抛出:
      IllegalArgumentException - 如果不支持指定类型的控件
      另请参阅:
    • addLineListener

      void addLineListener(LineListener listener)
      向此线添加侦听器。每当线的状态发生变化时,将调用侦听器的update()方法,并传递描述更改的LineEvent对象。
      参数:
      listener - 要添加为此线路监听器的对象
      参见:
    • removeLineListener

      void removeLineListener(LineListener listener)
      从此线路的监听器列表中移除指定的监听器。
      参数:
      listener - 要移除的监听器
      参见: