2013-04-19 4 views
0

결과, 그래서 나는 길이 60000와 임의의 짧은 배열을 생성하고, AudioTrack 그것을 재생하려고 :내가 Audiotrack가 어떻게 작동하는지 알고 싶어 아무것도

public short[] generatedNoise=new short[60000]; 
for(int i=0;i<=59999;i++){ 
       generatedNoise[i]=(short) random.nextInt(Short.MAX_VALUE + 1); 
      } 
AudioTrack at=new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO, 
         AudioFormat.ENCODING_PCM_16BIT, 48000*7 /* 1 second buffer */, 
         AudioTrack.MODE_STREAM); 
       at.write(generatedNoise, 0, generatedNoise.length); 
       at.play();  

을하지만 스피커 출력 아무것도, 내 콘솔에 오류 메시지가 없습니다. wav 파일을 재생하는이 메서드를 사용하여 시도하고 완벽하게 작동합니다, 누군가 내게 이유를 말할 수 있습니까? 내 목표는 스피커에서 약간의 노이즈를 출력하는 것입니다.

업데이트 : I는 다음 코드 아직 출력되지 얻을 같은 짧은 배열 생성 : 해결

  short[] wave=new short[100000]; 

      int i=0; 
      while(i<=99997){ 
       wave[i]=32767; 
       wave[i+1]=0; 
       wave[i+2]=-32767; 
       wave[i+3]=0; 
       i=i+4; 
      } 
+0

무언가 발생하는지 얼마나 오래 기다렸습니까? 60,000은 많은 반복 작업입니다. 어쩌면 루프가 완료된 후에 로그 출력을 추가하여 실제로 완료되었는지 확인해야합니다. –

+1

예 B4 재생을 인쇄했습니다. –

답변

0

문제, I 단지 어레이의 실제 크기로 변경된 버퍼 사이즈를, 그리고 그것은 잘 작동합니다. 귀하의 우려에 감사드립니다.

+0

안녕하세요, "배열의 실제 크기"에 대해 물어볼 수 있습니까? "generatedNoise.length"실제 크기가 아닌가요? – RRTW

+0

"버퍼 크기"는 AudioTrack 생성자의 다섯 번째 매개 변수를 나타냅니다. 나는 이것을했고 나는 여전히 어떤 소리도들을 수 없다. – Curtis

관련 문제