2014-11-21 4 views
0

내 APP에서 AudioTrack을 사용하여 사운드를 재생하고 있지만 특정 스피커/귀에 왼쪽 스피커 또는 오른쪽 스피커 또는 두 스피커에서 소리를 재생하고 싶습니다.안드로이드를 사용하여 왼쪽 또는 오른쪽 스피커에서 사운드 재생 AudioTrack

다음 코드는 소리를 재생하는 데 사용하고 있습니다.

private AudioTrack generateTone(double freqHz, int durationMs) 
{ 
    int count = (int)(44100.0 * 2.0 * (durationMs/1000.0)) & ~1; 
    short[] samples = new short[count]; 
    for(int i = 0; i < count; i += 2){ 
     short sample = (short)(Math.sin(2 * Math.PI * i/(44100.0/freqHz)) * 0x7FFF); 
     samples[i + 0] = sample; 
     samples[i + 1] = sample; 
    } 
    AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, 
     AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, 
     count * (Short.SIZE/8), AudioTrack.MODE_STATIC); 

    track.write(samples, 0, count); 
    return track; 
} 

다음 코드에서는 사운드를 재생하기 위해이 함수를 호출하고 있습니다.

AudioTrack soundAtSpecificFrequency = generateTone(500, 6000); 
soundAtSpecificFrequency.play(); 

소리 재생을 중지하는 코드입니다.

soundAtSpecificFrequency.pause(); 

이 경우 가능한 해결책이나 다른 대안 솔루션을 알려주십시오.

소중한 시간을 보냈습니다.

+0

그리고 당신의 질문은 무엇인가 : 귀하의 경우

는 다음을 수행? 왼쪽 또는 오른쪽 스피커에서만 사운드를 재생하는 방법을 모르십니까? 또는 무엇을? –

+0

예 왼쪽 또는 오른쪽 스피커에서만 사운드를 재생하는 방법은 무엇입니까? – user3603789

답변

1

AudioTrack은 원시 PCM 샘플을 사용하여 사운드를 재생합니다. PCM 샘플 (첫 번째 샘플은 왼쪽 스피커로 재생되는 두 번째 샘플이 오른쪽 스피커로 재생됩니다) 다음과 같은 순서로 재생됩니다 :

LRLRLRLRLR

그래서 당신은 당신의 샘플 배열을 수정해야 당신을 AudioTrack으로 전달하십시오.

This도 도움이 될 수 있습니다.

// only play sound on left 
for(int i = 0; i < count; i += 2){ 
    short sample = (short)(Math.sin(2 * Math.PI * i/(44100.0/freqHz)) * 0x7FFF); 
    samples[i + 0] = sample; 
    samples[i + 1] = 0; 
} 
// only play sound on right 
for(int i = 0; i < count; i += 2){ 
    short sample = (short)(Math.sin(2 * Math.PI * i/(44100.0/freqHz)) * 0x7FFF); 
    samples[i + 0] = 0; 
    samples[i + 1] = sample; 
} 
+0

좀 더 자세하게 설명해 주시겠습니까? 나는 안드로이드 개발에 새로운 오전 및 또한 지정된 솔루션을 시도했지만 여전히 문제가 직면하고있다. – user3603789

+0

많은 도움을 주셔서 감사 드리며 소중한 시간을내어 고맙습니다. 내 경우 엔 효과가있어. – user3603789