JavaTM 2 Platform
Standard Ed. 6

javax.sound.sampled
介面 Mixer

所有父級介面:
Line

public interface Mixer
extends Line

混頻器是一個具有一行或多行的音頻設備。不需要將它設計用於混合音頻信號。實際混合音頻的混頻器具有多個輸入(源)行和至少一個輸出(目標)行。前者常常是實作 SourceDataLine 的類別的實例,後者是實作 TargetDataLine 的類別的實例。Port 物件不是源行就是目標行。通過將其某些源行作為實作 Clip 介面的物件的實例,混頻器可以接受事先錄製的環繞聲音作為輸入。

通過 Line 介面(該介面由 Mixer 擴展)的方法,混頻器可以提供對該混頻器而言全體可用的控制元件集。例如,該混頻器可以有一個主音量控制元件。這些全體控制元件與屬於該混頻器的每個單行的控制元件明顯不同。

有些混頻器(特別是那些具有內部數字混音功能的混頻器)可能通過實作 DataLine 介面提供其他功能。

混頻器可以支持其行的同步。當啟動或停止同步組中的一行時,該組中的其他行自動與明顯受影響的行同時啟動或停止。

從以下版本開始:
1.3

巢狀類別摘要
static class Mixer.Info
          Mixer.Info 類別表示關於音頻混頻器的資訊,包括產品的名稱、版本和供應商,以及文本描述。
 
方法摘要
 Line getLine(Line.Info info)
          獲得可供使用並且與指定 Line.Info 物件中的描述比對的行。
 int getMaxLines(Line.Info info)
          獲得可以在此混頻器上同時打開的所請求型別的行的最大近似數。
 Mixer.Info getMixerInfo()
          獲得關於此混頻器的資訊,包括產品名稱、版本、供應商,等等。
 Line.Info[] getSourceLineInfo()
          獲得關於此混頻器支持的源行集合的資訊。
 Line.Info[] getSourceLineInfo(Line.Info info)
          獲得關於此混頻器支持的特定型別源行的資訊。
 Line[] getSourceLines()
          獲得當前對此混頻器打開的所有源行的集合。
 Line.Info[] getTargetLineInfo()
          獲得關於此混頻器支持的目標行集合的資訊。
 Line.Info[] getTargetLineInfo(Line.Info info)
          獲得關於此混頻器支持的特定型別目標行的資訊。
 Line[] getTargetLines()
          獲得當前從此混頻器打開的所有目標行的集合。
 boolean isLineSupported(Line.Info info)
          指示混頻器是否支持與指定 Line.Info 物件比對的一行(或多行)。
 boolean isSynchronizationSupported(Line[] lines, boolean maintainSync)
          報告此混頻器是否支持指定行集合的同步。
 void synchronize(Line[] lines, boolean maintainSync)
          同步兩個或多個行。
 void unsynchronize(Line[] lines)
          釋放指定行的同步。
 
從介面 javax.sound.sampled.Line 繼承的方法
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
 

方法詳細資訊

getMixerInfo

Mixer.Info getMixerInfo()
獲得關於此混頻器的資訊,包括產品名稱、版本、供應商,等等。

返回:
描述此混頻器的混頻器資訊物件
另請參見:
Mixer.Info

getSourceLineInfo

Line.Info[] getSourceLineInfo()
獲得關於此混頻器支持的源行集合的資訊。有些源行可能只在此混頻器打開時可用。

返回:
表示此混頻器的源行的 Line.Info 物件陣列。如果不支持任何源行,則返回一個長度為 0 的陣列。

getTargetLineInfo

Line.Info[] getTargetLineInfo()
獲得關於此混頻器支持的目標行集合的資訊。有些目標行可能只在此混頻器打開時可用。

返回:
表示此混頻器的目標行的 Line.Info 物件陣列。如果不支持任何目標行,則返回一個長度為 0 的陣列。

getSourceLineInfo

Line.Info[] getSourceLineInfo(Line.Info info)
獲得關於此混頻器支持的特定型別源行的資訊。有些源行可能只在此混頻器打開時可用。

參數:
info - 描述其資訊被查詢的那些行的 Line.Info 物件
返回:
描述與所請求型別比對的源行的 Line.Info 物件陣列。如果不支持任何比對源行,則返回一個長度為 0 的陣列。

getTargetLineInfo

Line.Info[] getTargetLineInfo(Line.Info info)
獲得關於此混頻器支持的特定型別目標行的資訊。有些目標行可能只在此混頻器打開時可用。

參數:
info - 描述查詢其資訊的行的 Line.Info 物件
返回:
描述與所請求型別比對的目標行的 Line.Info 物件陣列。如果不支持任何比對的目標行,則返一個回長度為 0 的陣列。

isLineSupported

boolean isLineSupported(Line.Info info)
指示混頻器是否支持與指定 Line.Info 物件比對的一行(或多行)。有些行可能只在此混頻器打開時受支持。

參數:
info - 描述查詢其是否受支持的行
返回:
如果至少支持一個比對行,則返回 true;否則返回 false

getLine

Line getLine(Line.Info info)
             throws LineUnavailableException
獲得可供使用並且與指定 Line.Info 物件中的描述比對的行。

如果請求某一 DataLine,且 infoDataLine.Info 的實例(至少指定一個完全限定的音頻格式),則將使用最後一種格式作為所返回 DataLine 的預設格式。

參數:
info - 描述所需的行
拋出:
LineUnavailableException - 如果由於資源限制而使比對行不可用
IllegalArgumentException - 如果此 mixer 不支持與描述比對的所有行
SecurityException - 如果由於安全限制而使比對行不可用

getMaxLines

int getMaxLines(Line.Info info)
獲得可以在此混頻器上同時打開的所請求型別的行的最大近似數。 某些型別的混頻器沒有絕對限制,可能允許打開多個行。由於某些行是共享資源,因此,如果另一個進程已打開此混頻器的一些行,則混頻器可能無法打開最大數量的行。 所請求型別是與 Line.Info 物件中提供的描述比對的任何一行。例如,如果 info 物件表示一個揚聲器埠號,且該混頻器只支持一個揚聲器埠號,則此方法應該返回 1。 如果 info 物件表示一個源資料行,且該混頻器支持同時使用 32 個源資料行,則返回值應該是 32。 如果沒有限制,則此方法返回 AudioSystem.NOT_SPECIFIED

參數:
info - 描述將查詢其受支持實例數的那些行的 Line.Info
返回:
受支持的比對行的最大數量,或 AudioSystem.NOT_SPECIFIED

getSourceLines

Line[] getSourceLines()
獲得當前對此混頻器打開的所有源行的集合。

返回:
當前對此混頻器打開的源行。如果當前沒有對此混頻器打開的源行,則返回一個長度為 0 的陣列。
拋出:
SecurityException - 如果由於安全限制而使比對行不可用

getTargetLines

Line[] getTargetLines()
獲得當前從此混頻器打開的所有目標行的集合。

返回:
當前從此混頻器打開的目標行。如果當前沒有從此混頻器打開的目標行,則返回一個長度為 0 的陣列。
拋出:
SecurityException - 如果由於安全限制而使比對行不可用

synchronize

void synchronize(Line[] lines,
                 boolean maintainSync)
同步兩個或多個行。啟動或停止某個這些行的音頻回放或捕獲的任何後續命令都將對該組中的其他行產生相同的效果,所以它們同時啟動或停止播放或捕獲資料。

參數:
lines - 應該同步的行
maintainSync - 如果在執行行操作的過程中必須始終精確地維護同步(即同步必須是樣本精確的),則該參數為 true;如果只在啟動和停止操作的過程中需要精確同步,則該參數為 false
拋出:
IllegalArgumentException - 如果行無法同步。這可能在行屬於不同型別或具有此混頻器不支持其同步的不同格式,或在所有指定行不屬於此混頻器的情況下發生。

unsynchronize

void unsynchronize(Line[] lines)
釋放指定行的同步。該陣列必須與已為其建立同步的陣列相同;否則可能拋出異常。但可以指定 null,在此情況下,屬於此混頻器的所有當前同步行都將被解除同步。

參數:
lines - 應該為其釋放同步的同步行;對於此混頻器的所有同步行,該參數都為 null
拋出:
IllegalArgumentException - 如果這些行無法解除同步。這可能在指定參數並不完全與已經為其建立同步的行集合比對的情況下發生。

isSynchronizationSupported

boolean isSynchronizationSupported(Line[] lines,
                                   boolean maintainSync)
報告此混頻器是否支持指定行集合的同步。

參數:
lines - 查詢其是否支持同步的那些行的集合
maintainSync - 如果在指定行操作的過程中始終精確地維護同步(即同步必須是樣本精確的),則該參數為 true;如果只在啟動和停止操作的過程中需要精確同步,則該參數為 false
返回:
如果行可以同步,則返回 true;否則返回 false

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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