public interface SourceDataLine extends DataLine
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。アプリケーションから見ると、ソース・データ・ラインはオーディオ・データのターゲットの役割を果たします。
 ミキサーからソース・データ・ラインを取得するには、適切なDataLine.InfoMixerのgetLine
 SourceDataLineインタフェースは、オーディオ・データをデータ・ラインのバッファに書き込むメソッドを提供します。オーディオを再生またはミックスするアプリケーションは、バッファがアンダーフロー(空白化)しないうちにデータをすばやくソース・データ・ラインに書き込みます。アンダーフローによりオーディオに不連続部(クリック音として聞こえる)が生じることがあります。アプリケーションでは、DataLineインタフェースで定義されているavailableSTOPSTART
Mixer、DataLine、TargetDataLineDataLine.Info| 修飾子と型 | メソッドと説明 | 
|---|---|
| void | open(AudioFormat format)指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。 | 
| void | open(AudioFormat format, int bufferSize)指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。 | 
| int | write(byte[] b, int off, int len)このソース・データ・ラインを介してオーディオ・データをミキサーに書き込みます。 | 
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stopaddLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListenervoid open(AudioFormat format, int bufferSize) throws LineUnavailableException
 バッファ・サイズはバイト単位で指定しますが、サンプル・フレームの整数値を表す必要があります。この要件に適合しないバッファ・サイズを指定してこのメソッドを呼び出すと、IllegalArgumentExceptionがスローされることがあります。開いたラインの実際のバッファ・サイズは、指定したバッファ・サイズとは異なることがあります。実際に設定された値は、続いてDataLine.getBufferSize()
 この操作が完了すると、ラインは開いている状態としてマークされ、OPEN
 すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateExceptionが表示されることがあります。
 
 ラインによっては、一度閉じると再度開くことができない場合があります。こうしたラインを再度開こうとすると、常にLineUnavailableExceptionが表示されます。
format - 目的のオーディオ形式bufferSize - 目的のバッファ・サイズLineUnavailableException - リソースの制約のためにラインを開けない場合IllegalArgumentException - バッファ・サイズがサンプル・フレームの整数値を表さない場合、あるいはformatの指定が不完全または無効な場合IllegalStateException - ラインがすでに開いている場合SecurityException - セキュリティの制約のためにラインを開けない場合open(AudioFormat)、Line.open()、Line.close()、Line.isOpen()、LineEventvoid open(AudioFormat format) throws LineUnavailableException
 バッファ・サイズは実装により選択されます。バッファ・サイズはバイト単位ですが、サンプル・フレームの整数値であることが必要です。システムが選択したバッファ・サイズは、続いてDataLine.getBufferSize()
 この操作が完了すると、ラインは開いている状態としてマークされ、OPEN
 すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateExceptionが表示されることがあります。
 
 ラインによっては、一度閉じると再度開くことができない場合があります。こうしたラインを再度開こうとすると、常にLineUnavailableExceptionが表示されます。
format - 目的のオーディオ形式LineUnavailableException - リソースの制約のためにラインを開けない場合IllegalArgumentException - formatの指定が不完全または無効な場合IllegalStateException - ラインがすでに開いている場合SecurityException - セキュリティの制約のためにラインを開けない場合open(AudioFormat, int)、Line.open()、Line.close()、Line.isOpen()、LineEventint write(byte[] b,
          int off,
          int len)
available
 ブロックされずに書き込めるバイト数は、DataLineインタフェースのavailable
 書き込まれるバイト数は、次のようにサンプル・フレームの整数値を表す必要があります。
 
[ bytes written ] % [frame size in bytes ] == 0IllegalArgumentExceptionがスローされる場合があります。b - データ・ラインに書き込まれるデータを含むバイト配列len - バイト単位での配列の有効データの長さ(つまり、書込みを要求するバイト単位のデータ量)off - 配列の先頭からの座標、バイト単位IllegalArgumentException - 要求されたバイト数がサンプル・フレームの整数値を表さない場合、またはlenが負の値の場合ArrayIndexOutOfBoundsException - offが負の値の場合、またはoff+lenが配列bの長さより大きい場合。TargetDataLine.read(byte[], int, int), DataLine.available() バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
 Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.