JavaTM Platform
Standard Ed. 6

javax.sound.sampled
인터페이스 Line

기존의 서브 인터페이스의 일람:
Clip , DataLine , Mixer , Port , SourceDataLine , TargetDataLine


public interface Line

Line 인터페이스는, 단청의 채널 또는 다중 채널의 오디오송를 나타냅니다. 라인은, 믹서, 입출력 포트, 믹서에의 데이터 입출력 패스등의, 디지털 오디오 「파이프라인」의 1 요소입니다.

라인은 게인, 빵, 리바브등을 컨트롤 할 수가 있습니다. 컨트롤 자체는, 기저 Control 클래스를 확장하는 클래스의 인스턴스입니다. Line 인터페이스는 라인을 컨트롤하기 위한 액세스용 메소드를 2 개 제공합니다. getControls 는 세트 전체를 돌려주어,getControl 는 지정된 단일의 컨트롤을 돌려줍니다.

라인은 시간에 의해 다양한 상태로 존재합니다. 라인이 열리면(자), 라인 자체를 위해서(때문에) system resource가 확보되어 라인이 닫으면(자), 이러한 자원은 다른 객체 또는 어플리케이션을 위해서(때문에) 해제됩니다. isOpen() 메소드에 의해, 라인이 열려 있을까 닫고 있는지를 확인할 수 있습니다. 다만 라인이 열려 있어도, 데이터를 처리하고 있다고는 할 수 없습니다. 데이터 처리는 일반적으로,SourceDataLine.write TargetDataLine.read 등의 서브 인터페이스의 메소드에 의해 개시됩니다.

객체를 등록해, 라인 상태가 변화할 때마다 통지를 받을 수가 있습니다. 객체는, 단일의 메소드 update 로 구성되는 LineListener 인터페이스를 구현하고 있을 필요가 있습니다. 이 메소드는 라인의 개폐시에 불려 갑니다. 라인이 DataLine 인 경우는, 개시 및 정지시에 불려 갑니다.

객체를 등록해 복수의 라인을 감시할 수가 있습니다. 객체가 update 메소드로 수신하는 이벤트는, 어느 라인이 이벤트를 작성했는지, 그것은 어느 타입의 이벤트인가 (OPEN,CLOSE,START, 또는 STOP), 및 이벤트 발생시 라인이 얼마나의 샘플 프레임을 다 처리해 있는지를 지정합니다.

개폐등의 일정한 라인 조작은, 라인이 공유 오디오 자원일 때 특권을 가지지 않는 코드에 의해 불려 갔을 경우, 시큐리티 예외를 생성하는 일이 있습니다.

도입된 버젼:
1.3
관련 항목:
LineEvent

상자의 클래스의 개요
static class Line.Info
          Line.Info 객체는, 라인에 관한 정보를 포함하고 있습니다.
 
메소드의 개요
 void addLineListener (LineListener  listener)
          청취자에게 이 라인을 추가합니다.
 void close ()
          라인을 닫아 라인으로 사용하고 있던 system resource를 해제할 수 있는 것을 나타냅니다.
 Control getControl (Control.Type  control)
          지정된 타입의 컨트롤이 있는 경우, 그 컨트롤을 가져옵니다.
 Control [] getControls ()
          이 라인에 관련하는 컨트롤세트를 가져옵니다.
 Line.Info getLineInfo ()
          이 라인을 설명하는 Line.Info 객체를 가져옵니다.
 boolean isControlSupported (Control.Type  control)
          지정된 타입의 컨트롤을 라인이 지원하고 있을지 어떨지를 나타냅니다.
 boolean isOpen ()
          라인이 열려 있을지 어떨지, 즉 현재는 사운드를 재생 또는 수집하고 있지 않아도 system resource를 확보해 조작 가능한지 어떤지를 나타냅니다.
 void open ()
          라인을 열어, 필요한 system resource를 획득해 조작 가능하게 되어 있는 것을 나타냅니다.
 void removeLineListener (LineListener  listener)
          이 라인의 청취자의 리스트로부터, 지정된 청취자를 삭제합니다.
 

메소드의 상세

getLineInfo

Line.Info  getLineInfo()
이 라인을 설명하는 Line.Info 객체를 가져옵니다.

반환값:
라인의 설명

open

void open()
          throws LineUnavailableException 
라인을 열어, 필요한 system resource를 획득해 조작 가능하게 되어 있는 것을 나타냅니다. 이 조작이 완료하면(자), 라인은 여는 것으로서 마크 되어OPEN 이벤트가 라인의 청취자에게 발송 됩니다.

라인에 따라서는, 한 번 닫으면(자) 재차 열 수가 없는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException 가 표시됩니다.

라인의 종류에 따라서는, 자원의 할당에 영향을 주는 설정 가능한 프로퍼티을 가지고 있는 것도 있습니다. 예를 들어,DataLine 는 특정의 포맷 및 버퍼 사이즈로 열릴 필요가 있습니다. 이러한 라인은,open 메소드, 또는 바람직한 설정을 어플리케이션으로 지정할 수 있는 메소드를 추가하는 등 해, 이러한 프로퍼티을 설정하는 기능을 제공합니다.

이 메소드는 인수를 취하지 않고, 현재의 설정으로 라인을 엽니다. 이것은,SourceDataLine 객체나 TargetDataLine 객체의 경우, 라인이 디폴트 설정으로 열리는 것을 의미합니다. 그러나 Clip 의 경우, 버퍼 사이즈는 데이터의 로드시로 결정됩니다. 이 메소드에서는 로드하는 데이터를 어플리케이션으로 지정할 수 없기 때문에, IllegalArgumentException 가 throw 됩니다. 따라서, 이 대신에,Clip 인터페이스에 갖춰지고 있는 open 메소드의 1 개를 사용해, 데이터를 Clip 에 로드합니다.

DataLine 에서는, 라인의 취득에 사용된 DataLine.Info 객체가, 1 개(살) 이상의 완전 수식 오디오 형식을 지정하는 경우, 마지막 형식이 디폴트가 됩니다.

예외:
IllegalArgumentException - 이 메소드가 Clip 인스턴스에 대해서 불려 갔을 경우
LineUnavailableException - 자원의 제약을 위해서(때문에) 라인을 열지 않는 경우
SecurityException - 시큐리티의 제약을 위해서(때문에) 라인을 열지 않는 경우
관련 항목:
close() , isOpen() , LineEvent , DataLine , Clip.open(AudioFormat, byte[], int, int) , Clip.open(AudioInputStream)

close

void close()
라인을 닫아 라인으로 사용하고 있던 system resource를 해제할 수 있는 것을 나타냅니다. 이 조작이 완료하면(자), 라인은 닫는 것으로서 마크 되어CLOSE 이벤트가 라인의 청취자에게 발송 됩니다.

예외:
SecurityException - 시큐리티의 제약을 위해서(때문에) 라인을 닫을 수가 없는 경우
관련 항목:
open() , isOpen() , LineEvent

isOpen

boolean isOpen()
라인이 열려 있을지 어떨지, 즉 현재는 사운드를 재생 또는 수집하고 있지 않아도 system resource를 확보해 조작 가능한지 어떤지를 나타냅니다.

반환값:
라인이 열려 있는 경우는 true, 그렇지 않은 경우는 false
관련 항목:
open() , close()

getControls

Control [] getControls()
이 라인에 관련하는 컨트롤세트를 가져옵니다. 일부의 컨트롤은 라인이 열려 있을 때 밖에 사용할 수 없습니다. 컨트롤이 없는 경우, 이 메소드는 길이 0 의 배열을 돌려줍니다.

반환값:
컨트롤의 배열
관련 항목:
getControl(javax.sound.sampled.Control.Type)

isControlSupported

boolean isControlSupported(Control.Type  control)
지정된 타입의 컨트롤을 라인이 지원하고 있을지 어떨지를 나타냅니다. 일부의 컨트롤은 라인이 열려 있을 때 밖에 사용할 수 없습니다.

파라미터:
control - 지원가 조회되는 컨트롤의 타입
반환값:
지정된 타입의 컨트롤의 적어도 1 개(살)이 지원되고 있는 경우는 true, 그렇지 않은 경우는 false

getControl

Control  getControl(Control.Type  control)
지정된 타입의 컨트롤이 있는 경우, 그 컨트롤을 가져옵니다. 일부의 컨트롤은 라인이 열려 있을 때 밖에 사용할 수 없습니다.

파라미터:
control - 요구된 컨트롤의 타입
반환값:
지정된 타입의 컨트롤
예외:
IllegalArgumentException - 지정된 타입의 컨트롤이 지원되어 있지 않은 경우
관련 항목:
getControls() , isControlSupported(Control.Type control)

addLineListener

void addLineListener(LineListener  listener)
청취자에게 이 라인을 추가합니다. 라인 상태가 변화할 때마다, 청취자의 update() 메소드가 불려 가 변화를 설명하는 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 Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.