주파수를 좌우로 각각 출력하는 코드를 작성하였습니다.
근데 이전까지 왼쪽 오른쪽 나뉘어서 잘 출력 되었는데 
안드로이드 버전 11을 사용하는 태블릿으로 바꾼 다음 테스트를 하니까
양쪽에서 동시에 소리가 출력되는 현상이 발생합니다..
안드로이드 버전 8~9를 사용하는 태블릿은 여전히 좌 우 각각 출력 됩니다..
안드로이드 11은 양쪽 소리를 각각 출력을 못하게 되어 있나요?...
주파수를 각각 출력하는 코드는 대략 이렇습니다.
 
 
public void generate(int frequency, int duration, double toneVol){
        if(at != null ) {
            Log.d("audioTrack is " , "not null");
            at.stop();
            at.release();
            at = null;
        }
        double dnumSamples =  (double) sampleRate * duration ;
        dnumSamples = Math.ceil(dnumSamples);
        numSamples = (int) dnumSamples;
        double[] sampleTone  = new double[sampleRate * duration];
        for (int i = 0; i < numSamples; ++i) {
            sampleTone[i]  = Math.sin(2 * frequency * Math.PI * i / (sampleRate));
        }
        geneatedSound = new byte[numByte * numSamples * ch];
        int idx = 0;
        for (int i = 0; i < numSamples; i++) {
            double value = sampleTone[i];
            final short val = (short) (value * 32767 * toneVol);
            if(Sound) {   // Sound가 true면 왼쪽에서 출력
                geneatedSound[idx++] = (byte) (val & 0x00ff);    
                geneatedSound[idx++] = (byte) ((val & 0xff00) >>> 8);
                geneatedSound[idx++] = 0;
                geneatedSound[idx++] = 0;
            } else {   // Sound가 false면 오른쪽에서 출력
                geneatedSound[idx++] = 0;
                geneatedSound[idx++] = 0;
                geneatedSound[idx++] = (byte) (val & 0x00ff);
                geneatedSound[idx++] = (byte) ((val & 0xff00) >>> 8);
            }
        }
        try {
            int bufferSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_STEREO,
                    AudioFormat.ENCODING_PCM_16BIT);
            bufferSize *= 2;
            at = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_STEREO,
                    AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);
            at.setNotificationMarkerPosition(numSamples);
            at.setPlaybackPositionUpdateListener(
                    new AudioTrack.OnPlaybackPositionUpdateListener() {
                        @Override public void onPeriodicNotification(AudioTrack track) {
                        }
                        @Override public void onMarkerReached(AudioTrack track) {
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    void play() {
        Thread t1 = new Thread() {
            @Override
            public void run() {
                at.play();
                at.write(geneatedSound, 0, geneatedSound.length);
            }
        };
        t1.start();
    }