public interface Clip extends DataLine
Clip接口表示一种特殊类型的数据线,其音频数据可以在播放之前加载,而不是实时流式传输。 
       因为数据是预加载的,并且具有已知的长度,所以您可以设置一个剪辑,以便在其音频数据中的任何位置开始播放。 您也可以创建一个循环,这样当剪辑被播放时,它将重复循环。 循环用起始和结束采样帧指定,循环应该播放的次数。
 剪辑可以从支持这种类型的行的Mixer
 音频剪辑的播放可以使用start和stop方法启动和停止。 这些方法不会重置媒体位置; start使播放从最后停止播放的位置继续播放。 要重新从剪辑的音频数据的开始播放时,只需按照的调用stop
DataLine.Info| Modifier and Type | Field and Description | 
|---|---|
| static int | LOOP_CONTINUOUSLY
              一个值,指示循环应该在无限期之后继续,而不是在特定循环数之后完成。 
             | 
| Modifier and Type | Method and Description | 
|---|---|
| int | getFrameLength()
              获取样品帧中的介质长度。 
             | 
| long | getMicrosecondLength()
              获取媒体持续时间(以微秒为单位) 
             | 
| void | loop(int count)
              从当前位置开始循环播放。 
             | 
| void | open(AudioFormat format, byte[] data, int offset, int bufferSize)
              打开剪辑,这意味着它应该获取任何所需的系统资源并可以运行。 
             | 
| void | open(AudioInputStream stream)
              以提供的音频输入流中存在的格式和音频数据打开剪辑。 
             | 
| void | setFramePosition(int frames)
              设置采样帧中的介质位置。 
             | 
| void | setLoopPoints(int start, int end)
              设置将在循环中播放的第一个和最后一个采样帧。 
             | 
| void | setMicrosecondPosition(long microseconds)
              以微秒设置媒体位置。 
             | 
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stopaddLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListenerstatic final int LOOP_CONTINUOUSLY
loop(int) , 
            Constant Field Values 
           void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableException
OPEN在已经打开的行上调用此方法是非法的,可能会导致IllegalStateException异常。
 请注意,一旦关闭,一些行不能重新打开。 尝试重新打开此行将始终导致LineUnavailableException
format - 提供的音频数据的格式 
           data - 一个包含加载到剪辑中的音频数据的字节数组 
           offset - 开始复制的点,以数组开头的 
            字节表示 
           bufferSize - 从数组加载到剪辑中的数据的 
            字节数 。 
           LineUnavailableException - 如果由于资源限制,该行无法打开 
           IllegalArgumentException - 如果缓冲区大小不表示采样帧的整数,或者 
            format未完全指定或无效 
           IllegalStateException - 如果该行已经打开 
           SecurityException - 如果由于安全限制,该行无法打开 
           Line.close() , Line.isOpen() , LineListener 
           void open(AudioInputStream stream) throws LineUnavailableException, IOException
OPEN在已经打开的行上调用此方法是非法的,可能会导致IllegalStateException异常。
 请注意,一旦关闭,一些行不能重新打开。 尝试重新打开此行将始终导致LineUnavailableException
stream - 将音频数据读入剪辑的音频输入流 
           LineUnavailableException - 如果由于资源限制,该行无法打开 
           IOException - 如果在读取数据流期间发生I / O异常 
           IllegalArgumentException - 如果流的音频格式未完全指定或无效 
           IllegalStateException - 如果该行已经打开 
           SecurityException - 如果由于安全限制,该行无法打开 
           Line.close() , Line.isOpen() , LineListener 
           int getFrameLength()
AudioSystem.NOT_SPECIFIED 。 
           AudioSystem.NOT_SPECIFIED 
           long getMicrosecondLength()
AudioSystem.NOT_SPECIFIED 。 
           AudioSystem.NOT_SPECIFIED 
           void setFramePosition(int frames)
frames - 所需的新媒体位置,以示例框架表示 
           void setMicrosecondPosition(long microseconds)
 为了获得在微秒的当前位置,使用getMicrosecondPositionDataLine 。 
microseconds - 所需的新媒体位置,以微秒表示 
           void setLoopPoints(int start,
                   int end) 
          start - 循环的起始位置,在采样帧(从零开始) 
           end - 循环的结束位置,以采样帧(从零为基础)或-1表示最终帧 
           IllegalArgumentException - 如果所请求的循环点不能被设置,通常是因为一个或两个都位于媒体的持续时间之外,或者因为终点在起始点之前 
           void loop(int count)
count次,最后继续播放到剪辑的末尾。 
           如果调用此方法时的当前位置大于循环结束点,则回放将简单地继续到剪辑的结尾而不进行循环。
 count值为0表示任何当前循环都应该停止,播放应该继续到剪辑的末尾。 当在循环操作期间使用任何其他值调用此方法时,行为是未定义的。 
如果在循环过程中播放停止,则当前循环状态被清除; 后续循环和启动请求的行为不受中断循环操作的影响。
count - 播放应该从循环的结束位置循环回循环的起始位置的次数,或 
            LOOP_CONTINUOUSLY Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.