JavaTM Platform
Standard Ed. 6

javax.sound.sampled
インタフェース TargetDataLine

すべてのスーパーインタフェース:
DataLine, Line

public interface TargetDataLine
extends DataLine

ターゲットデータラインは、オーディオデータをそこから読み込めるタイプの DataLine です。もっとも一般的な例は、データをオーディオキャプチャーデバイスから取得するデータラインです。デバイスはターゲットデータラインに書き込むミキサーとして実装されます。

このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。アプリケーションから見ると、ターゲットデータラインはオーディオデータのソースの役割をします。

ターゲットデータラインをミキサーから取得するには、適切な DataLine.Info オブジェクトを指定して MixergetLine メソッドを呼び出します。

TargetDataLine インタフェースは、ターゲットデータラインのバッファーから取得したデータを読み込むメソッドを提供します。 オーディオを録音するアプリケーションは、バッファーがオーバーフローしないようにターゲットデータラインからデータを素早く読み込みます。 オーバーフローすると、取得したデータに不連続部が生じて、クリック音が聞こえることがあります。アプリケーションでは、DataLine インタフェースで定義されている available メソッドを使用して、データラインのバッファーで現在キューに入っているデータの量を判別することができます。バッファーがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。

導入されたバージョン:
1.3
関連項目:
Mixer, DataLine, SourceDataLine

入れ子のクラスの概要
 
インタフェース javax.sound.sampled.DataLine から継承された入れ子のクラス/インタフェース
DataLine.Info
 
メソッドの概要
 void open(AudioFormat format)
          指定されたフォーマットでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。
 void open(AudioFormat format, int bufferSize)
          指定されたフォーマットと指定されたバッファーサイズでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。
 int read(byte[] b, int off, int len)
          データラインの入力バッファーからオーディオデータを読み込みます。
 
インタフェース javax.sound.sampled.DataLine から継承されたメソッド
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
 
インタフェース javax.sound.sampled.Line から継承されたメソッド
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
 

メソッドの詳細

open

void 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(), LineEvent

open

void 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(), LineEvent

read

int read(byte[] b,
         int off,
         int len)
データラインの入力バッファーからオーディオデータを読み込みます。要求されたバイト数が、指定された配列の指定されたオフセット位置 (バイト単位) を始点として読み込まれます。このメソッドは、要求された量のデータを読み込み終えるまでブロックされます。ただし、要求された量が読み込まれる前にデータラインがクローズ、停止、排出、またはフラッシュされると、メソッドのブロックが解除され、それまでに読み込まれたバイト数が返されます。

ブロックされずに読み込めるバイト数は、DataLine インタフェースの available メソッドを使って確認できます。このバイト数はブロックされずに確実に読み込めますが、追加データを読み込もうとしたときにブロックされるかどうかは確実ではありません。

読み込まれるバイト数は、次のような完全なサンプルフレーム数を表す必要があります。

[読み込まれるバイト数] % [フレームサイズのバイト数] == 0

戻り値は常にこの条件を満たしています。サンプルフレームサイズの倍数以外のバイト数を読み込むという要求は実行できず、IllegalArgumentException がスローされる場合があります。

パラメータ:
b - このメソッドが返すときの、要求された入力データを含むバイト配列
off - 配列の先頭からの座標、バイト単位
len - 読み込み要求されたバイト数
戻り値:
実際に読み込まれるバイト数
例外:
IllegalArgumentException - 要求されたバイト数が サンプルフレームサイズの倍数でない場合、 または len が負の値の場合
ArrayIndexOutOfBoundsException - off が負の値の場合、 または off+len が配列 b の長さより大きい場合
関連項目:
SourceDataLine.write(byte[], int, int), DataLine.available()

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。