Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Android Audio I/O routing
#15
TYPE_BUILTIN_MIC >> TYPE_USB_DEVICE (IN)
+
TYPE_USB_DEVICE (OUT) >> TYPE_BUILTIN_SPEAKER

To mi je konkretno potrebno rutiranje.

public void bljuc1 () {
    new Thread  (new Runnable() {
        @Override
        public void run() {
            boolean isRecording = true;
            AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            AudioDeviceInfo[] devices1Xins = audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS);
            AudioDeviceInfo[] devices1Xouts = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);

            int buffersize = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT) ;
            AudioRecord arec1 = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize);
            AudioTrack atrack1 = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize, AudioTrack.MODE_STREAM);
            atrack1.setPlaybackRate(16000);

            for (AudioDeviceInfo deviceX : devices1Xins) {
                if (deviceX.getType() == AudioDeviceInfo.TYPE_BUILTIN_MIC) {
                    arec1.setPreferredDevice(deviceX);
                }
            }
            for (AudioDeviceInfo deviceX : devices1Xouts) {
                if (deviceX.getType() == AudioDeviceInfo.TYPE_USB_DEVICE) {
                    atrack1.setPreferredDevice(deviceX);
                }
            }
            byte[] buffer1 = new byte[buffersize];
            arec1.startRecording();
            atrack1.play();
            while (isRecording) {
                arec1.read(buffer1, 0, buffersize);
                atrack1.write(buffer1, 0, buffer1.length);
            }
        }
    }).start();
}


public void bljuc2 () {
    new Thread(new Runnable() {
        @Override
        public void run() {

            boolean isRecording = true;
            AudioManager audioManager2 = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            AudioDeviceInfo[] devices2Xins = audioManager2.getDevices(AudioManager.GET_DEVICES_INPUTS);
            AudioDeviceInfo[] devices2Xouts = audioManager2.getDevices(AudioManager.GET_DEVICES_OUTPUTS);

            int buffersize2 = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT) ;
            AudioRecord arec2 = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize2);
            AudioTrack atrack2 = new AudioTrack(AudioManager.MODE_IN_CALL, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize2, AudioTrack.MODE_STREAM);
            atrack2.setPlaybackRate(16000);

            for (AudioDeviceInfo deviceX : devices2Xins) {
                if (deviceX.getType() == AudioDeviceInfo.TYPE_USB_DEVICE) {
                    arec2.setPreferredDevice(deviceX);
                }
            }
            for (AudioDeviceInfo deviceX : devices2Xouts) {
                if (deviceX.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
                    atrack2.setPreferredDevice(deviceX);
                }
            }
            byte[] buffer2 = new byte[buffersize];

            arec2.startRecording();
            atrack2.play();
            while (isRecording) {
                arec2.read(buffer2, 0, buffersize);
                atrack2.write(buffer2, 0, buffer2.length);
            }

        }
    }).start();
}


Ovo je primer u Java za Android koji radi za jedan ili za drugi smer, kada se puste zajedno ovaj drugi ne proradi, ostane aktivan prvi koji je startovan. To je li limit Androida i telefona, na Linux / Unix je to inace izvodljivo ali ovaj muceni Android pravi problem, znaci ne moze da snima vise razlicitih trackova istovremeno sto je preduslov da ovaj code radi.
Reply


Messages In This Thread
Android Audio I/O routing - by mikikg - 05-19-2020, 11:30 AM
RE: Android Audio I/O routing - by nik - 05-19-2020, 12:26 PM
RE: Android Audio I/O routing - by mikikg - 05-19-2020, 12:38 PM
RE: Android Audio I/O routing - by nik - 05-19-2020, 12:48 PM
RE: Android Audio I/O routing - by nik - 05-19-2020, 01:04 PM
RE: Android Audio I/O routing - by mikikg - 05-19-2020, 01:06 PM
RE: Android Audio I/O routing - by nik - 05-19-2020, 01:26 PM
RE: Android Audio I/O routing - by mikikg - 05-19-2020, 01:32 PM
RE: Android Audio I/O routing - by nik - 05-19-2020, 01:44 PM
RE: Android Audio I/O routing - by mikikg - 05-19-2020, 01:50 PM
RE: Android Audio I/O routing - by nik - 05-19-2020, 02:00 PM
RE: Android Audio I/O routing - by me[R]a - 05-19-2020, 03:19 PM
RE: Android Audio I/O routing - by mikikg - 05-27-2020, 08:45 AM
RE: Android Audio I/O routing - by mikikg - 07-03-2020, 12:30 PM
RE: Android Audio I/O routing - by mikikg - 07-03-2020, 09:38 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)