Аудио выход в реальном времени - PullRequest
0 голосов
/ 03 февраля 2020

Привет, парень, я реализовал голосовой вызов в android, и я играю потоковый аудио-байт со звуковой дорожкой, используя следующий код

 track = new AudioTrack(AudioManager.STREAM_VOICE_CALL, SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO,
            AudioFormat.ENCODING_PCM_16BIT, BUF_SIZE, AudioTrack.MODE_STREAM);


            Thread receiveThread = new Thread(() -> {

            track.play();


            try {
                // Define a socket to receive the audio
                byte[] buf = new byte[BUF_SIZE_AUDIO];
                while (speakers) {
                    // Play back the audio received from packets
                    DatagramPacket packet = new DatagramPacket(buf, BUF_SIZE_AUDIO);
                    SocketSingleton.socket.receive(packet);
                    String dataReceive = new String(packet.getData());
                    dataReceive = dataReceive.substring(0, 4);

                    if (dataReceive.equals("END:")) {
                        endCall(true);
                    } else {
                        Log.i(LOG_TAG, "Packet received: " + packet.getLength());
                        track.write(packet.getData(), 0, BUF_SIZE_AUDIO);
                    }
                }
                track.stop();
                track.flush();
                track.release();
            } catch (SocketException e) {

                Log.e(LOG_TAG, "SocketException: " + e.toString());
                speakers = false;
            } catch (IOException e) {

                Log.e(LOG_TAG, "IOException: " + e.toString());
                speakers = false;
            }

        });

, но я хочу переключить динамик динамика в нормальное реальное время, не могли бы вы пожалуйста, помогите мне исправить это

...