Module  java.desktop
软件包  javax.sound.sampled

Interface Line

  • All Superinterfaces:
    AutoCloseable
    All Known Subinterfaces:
    ClipDataLineMixerPortSourceDataLineTargetDataLine


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

    线可以有控制,如增益,平移和混响。 控件本身是扩展基础Control类的类的实例。 Line接口提供两种访问方法来获取行的控件: getControls返回整个集合,而getControl返回指定类型的单个控件。

    线条在不同时期存在于各种状态。 当一条线路打开时,它将为其自身保留系统资源,当它关闭时,这些资源被释放用于其他对象或应用程序。 isOpen()方法可以让您发现线路是开放还是关闭。 然而,开线不需要处理数据。 这样的处理通常由诸如SourceDataLine.writeTargetDataLine.read类的子接口方法来启动。

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

    可以注册一个对象来监听多行。 它接收在其事件update方法将指定哪些线创建的事件,这是什么类型的事件( OPENCLOSESTART ,或STOP )许多样品如何帧的行,并在事件发生的时间已经处理。

    某些行操作(如打开和关闭)可以在线路为共享音频资源时由非特权代码调用时生成安全异常。

    从以下版本开始:
    1.3
    另请参见:
    LineEvent
    • Nested Class Summary

      Nested Classes  
      Modifier and Type 接口 描述
      static class  Line.Info
      A Line.Info对象包含有关行的信息。
    • 方法详细信息

      • 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()isOpen()LineEventDataLineClip.open(AudioFormat, byte[], int, int)Clip.open(AudioInputStream)
      • close

        void close​()
        关闭该行,表示可以释放该行所使用的任何系统资源。 如果此操作成功,则将该行标记为已关闭,并将CLOSE事件调度到该行的侦听器。
        Specified by:
        close接口 AutoCloseable
        异常
        SecurityException - 如果由于安全限制,该行不能关闭
        另请参见:
        open()isOpen()LineEvent
      • isOpen

        boolean isOpen​()
        表示线路是否打开,这意味着它已经预留了系统资源并且可以运行,尽管它可能当前没有播放或捕获声音。
        结果
        true如果行是打开,否则 false
        另请参见:
        open()close()
      • getControls

        Control[] getControls​()
        获取与此行相关联的一组控件。 某些控件只有在线路打开时才可用。 如果没有控件,此方法返回一个长度为0的数组。
        结果
        控件的数组
        另请参见:
        getControl(javax.sound.sampled.Control.Type)
      • isControlSupported

        boolean isControlSupported​(Control.Type control)
        指示线路是否支持指定类型的控制。 某些控件只有在线路打开时才可用。
        参数
        control - 查询支持的控件的类型
        结果
        true是否支持所指定的类型中的至少一个控制,否则 false