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.write 和 TargetDataLine.read 之類別的子介面方法初始化。

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

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

如果行是共享的音頻資源時由未授權的程式碼調用,則某些行操作(如 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 方法。

此方法不使用任何參數,並使用當前設置打開行。對於 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()
關閉行,指示可以釋放的該行使用的所有系統資源。如果此操作成功,則將行標記為 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。