У меня есть следующий поток с 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? Я не уверена. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Любая возможная идея будет очень полезна. Спасибо