2012-09-04 3 views
3

AudioTrack의 wav 파일을 리소스 폴더 raw에서 재생할 수 있습니까? 그것은 내 안드로이드 프로젝트에서 원시 파일을 참조하는 많은 방법을 시도했지만, 나는 많은 예외를 가지고.AudioTrack Android 폴더에서 재생하는 소리

이것은 내가 지금 가지고있는 것이지만 버튼을 누르면 소리가 들리지 않습니다.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Button buttonPlayAudioTrack = (Button) findViewById(R.id.buttonPlayAudioTrack); 
    buttonPlayAudioTrack.setOnClickListener(this); 

    int minBufferSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
         AudioFormat.ENCODING_PCM_16BIT); 

    audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM); 
} 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if(v.getId() == R.id.buttonPlayAudioTrack) 
     playSound(); 
} 

private void playSound() { 
    audioTrack.play(); 
    int i = 0; 
    int bufferSize = 512; 
    byte [] buffer = new byte[bufferSize]; 
    InputStream inputStream = getResources().openRawResource(R.raw.piano12); 
    try { 
     while((i = inputStream.read()) != -1) 
      audioTrack.write(buffer, 0, i); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     inputStream.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

답변

7

모든 것이 당신의 코드 괜찮습니다, 당신은 변경해야

while((i = inputStream.read()) != -1) 

while((i = inputStream.read(buffer)) != -1) 
+0

안녕하세요, 감사합니다, 난 이미 고정했습니다) – sNore

관련 문제