나는 지난 몇 시간 동안이 코드 조각을 작동 시키려고 노력해 왔습니다. AudioTrack 예제가 최소한으로 작동한다는 것을 의미합니다. 많은 예제가 복잡하지 않다는 것을 알았 기 때문에입니다. Android : Audiotrack이 사인파를 재생하면 윙윙 거리는 소리가납니다.
private void playSound() {
// AudioTrack definition
int mBufferSize = AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_8BIT);
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT,
mBufferSize, AudioTrack.MODE_STREAM);
// Sine wave
double[] mSound = new double[4410];
short[] mBuffer = new short[4410];
for (int i = 0; i < mSound.length; i++) {
mSound[i] = Math.sin((2.0*Math.PI * 440.0/44100.0*(double)i));
mBuffer[i] = (short) (mSound[i]*Short.MAX_VALUE);
}
mAudioTrack.setStereoVolume(0.1f, 0.1f);
mAudioTrack.play();
mAudioTrack.write(mBuffer, 0, mSound.length);
mAudioTrack.stop();
mAudioTrack.release();
}
나는 기능 playSound()
를 호출
mBuffer
의 내용을 내보내는 경우 사인파가 올바르게 생성되었음을 알 수 있습니다. 그것은 비록 피치가 너무 높지만 Matlab으로 재생하면 정확하게 재생됩니다.
내가 올바르게하지 못하는 것이 있습니까? 또한 16 비트 인코딩을 시도하면 전혀 소리가 들리지 않습니다.
안녕하세요 loadstar, 나는 반대 기능을하고 싶습니다, 오디오를 녹음하고 동시에 그 사인파, 어떤 도움 음모를 꾸미고 싶습니까 ?? – Neji