JavaTM 2 Platform
Standard Ed. 6

javax.sound.sampled
介面 Line

所有已知子介面:
Clip, DataLine, Mixer, Port, SourceDataLine, TargetDataLine

public interface Line

Line 介面表示單聲道或多聲道音頻供給。line 是數字音頻“管線”(如混頻器、輸入或輸出埠號,或往返於混頻器的資料路徑)的元素。

line 可以有各種控制元件,如 gain、pan 和 reverb。這些控制元件本身是擴展基本 Control 類別的那些類別的實例。Line 介面提供兩個獲得 line 控制元件的存取方法:getControls 返回整個集合,getControl 返回指定型別的單個控制元件。

行在不同的時間以各種狀態存在。當行打開時,它保留本身的系統資源;關閉時,這些資源就會為其他物件或應用程序釋放。isOpen() 方法讓您發現行是打開的還是關閉的。但是打開的行不需要處理資料。此類別處理通常由 SourceDataLine.writeTargetDataLine.read 之類別的子介面方法初始化。

可以註冊一個物件,以便每當行狀態更改時接收通知。該物件必須實作 LineListener 介面,此介面由單個方法 update 組成。此方法將在行打開和關閉時調用(如果該行在開始和停止時是一個 DataLine)。

可以註冊一個物件來偵聽多個行。用其 update 方法接收的事件將指定創建該事件的行、事件的型別(OPENCLOSESTARTSTOP),以及發生事件時該行處理的樣本幀的數量。

如果行是共享的音頻資源時由未授權的程式碼調用,則某些行操作(如 open 和 close)可以產生安全性異常。

從以下版本開始:
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,且向行的偵聽器指派一個 OPEN 事件。

注意,有些行一旦關閉就無法重新打開。試圖重新打開這樣的行總是導致 LineUnavailableException

某些型別的行具有可能影響資源分派的可配置屬性。例如,必須使用特定格式和緩衝區大小打開 DataLine。此類別行應該提供配置這些屬性的機制,如允許應用程序指定所需設置的其他一個或多個 open 方法。

此方法不使用任何參數,並使用當前設置打開行。對於 SourceDataLineTargetDataLine 物件,這意味著使用預設設置打開該行。但對於 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()
關閉行,指示可以釋放的該行使用的所有系統資源。如果此操作成功,則將行標記為 closed,並給行的偵聽器指派一個 CLOSE 事件。

拋出:
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

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)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only