안녕하세요.

이전에 아이피카메라 관련 질문을 무지무지 올렸던 질문자입니다.. -,.-;



오디오 관련 메소드를 접했는데, API를 참고해도 도무지 무슨말인지를 몰라 답답한 마음에 질문을 드리게 됬습니다.

아이피 카메라와 안드로이드 디바이스간 마이크 및 스피커 통신을 구현하려고 하고 있습니다.


  protected void audioCapture()
  {
    this.minRecorderBuffersize = AudioRecord.getMinBufferSize(8000, 16, 2);
    if (this.minRecorderBuffersize < 6400)
      this.minRecorderBuffersize = 6400;
    this.audioCapture = new AudioRecord(1, 8000, 16, 2, this.minRecorderBuffersize);
    this.audioCapture.startRecording();
  }

* 오디오캡쳐 메소드입니다. AudioRecord클래스의 getMinBufferSize 메소드는 해당 클래스가 성공적인 제작을 위해 최소 버퍼 크기를 반환한다고 합니다. ?
다음 if문에서 6400이라는 값으로 판단을 하고 있는데, 왜 6400일까요...? ㅡ.ㅡ;
* 오디오레코드 클래스의 생성자는 다음과 같습니다.

(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)

 - 5번째 매개변수는 버퍼의 기본 사이즈가 레코드버퍼사이즈의 최소값 이상이라는 조건이 있어, this.minRecordBuffer 메소드를 사용한 것 같습니다.

다음 오디오플레이 메소드 입니다.

  protected void audioPlayer()
  {
    int i = AudioTrack.getMinBufferSize(8000, 2, 2);
    if (i < 6400)
      i = 6400;
    AudioTrack localAudioTrack = new AudioTrack(3, 8000, 2, 2, i, 1);
    localAudioTrack.play();
    byte[] arrayOfByte = new byte[i];
    while (this.isListenAudio)
    {
      int j = getlistenaudiodata(arrayOfByte, i);
      if (j < i)
        continue;
      localAudioTrack.write(arrayOfByte, 0, j);
    }
}

* 오디오레코드 메소드도 마찬가지로 getMinBufferSize는 생성해야 할 최소의 버퍼를 반환합니다.

* 오디오트랙 클래스의 생성자는 다음과 같습니다.

(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode)



이외에도 리슨오디오, talk오디오 등의 메소드가 있는데.. 라인이 더 길고 복잡하여 삽질을 아무리해도 분석이 안됩니다.

혹, 제가 나열한 메소들의 기능이나 AudioRecord, AudioTrack 클래스를 사용해 보신 분이 있으십니까..?