AudioTrack вызывает утечку памяти - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующий поток с AudioTrack в качестве инициализации. В общем, настройка работает отлично 9 из 10 раз. Но в некотором случайном сценарии ios это приводит к полному отключению телефона [реального устройства].

 audioThread = new Thread() {
        @Override
        public void run() {

            int bufferSizeInBytes = AudioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);

            AudioTrack audioTrack = new AudioTrack(
                    AudioManager.STREAM_MUSIC,
                    16000,
                    AudioFormat.CHANNEL_OUT_MONO,
                    AudioFormat.ENCODING_PCM_16BIT,
                    bufferSizeInBytes,
                    AudioTrack.MODE_STREAM);

            if (audioTrack.getState() == AudioTrack.STATE_INITIALIZED) {
                audioTrack.play();

                byte[] receiveData = new byte[PACKET_LENGTH * 2];
                int count = 0;

                while (UdpclientSocket != null && !UdpclientSocket.isClosed()) {
                    try {
                        is_receiving = true;
                        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                        UdpclientSocket.receive(receivePacket);
                        audioTrack.write(receivePacket.getData(), HEADER_LENGTH, receivePacket.getLength() - HEADER_LENGTH);
                        if (count++ > 3) {
                            audioTrack.play();
                        }
                    } catch (SocketException e) {
                        Log.i(TAG, "SocketException: " + e.toString());
                    } catch (IOException e) {
                        Log.i(TAG, "IOException: " + e.toString());
                    } finally {
                        is_receiving = false;
                    }
                }
                audioTrack.stop();
                //audioTrack.flush();
                audioTrack.release();
                Close();
            } else {
                Log.e(TAG, "AudioTrack is not Initialized");
            }
        }
    };

Я попытался отследить журналы, где я смог найти следующий журнал. К сожалению, я не могу воспроизвести это каждый раз. Я подозреваю, что это может быть связано с созданием более 32 экземпляров AudioTrack? Я не уверена. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Любая возможная идея будет очень полезна. Спасибо

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...