У меня есть звук, записанный с устройства ASIO, который хранится в виде массива с плавающей точкой.Кажется, что типом сэмпла аудио является «ASIOSTInt32LSB».Я пытаюсь понять, как воспроизвести этот звук на устройстве Android.
Я попытался создать AudioTrack и записать байтовый массив аудио с устройства ASIO на дорожку, но я получаю сообщения об ошибках, которые можно увидеть ниже.Я пытался нормализовать значения массива с плавающей точкой в диапазоне от -1,0 до 1,0, но это не имело никакого эффекта.Я также попытался использовать MediaPlayer вместо AudioTrack и создать временный файл, который принимает значение байтового массива, но это тоже не сработало.
private void playSound(byte[] soundArray)
{
final int TEST_SR = 22050; //This is from an example I found online.
final int TEST_CONF = AudioFormat.CHANNEL_OUT_MONO;
final int TEST_FORMAT = AudioFormat.ENCODING_PCM_FLOAT;
final int TEST_MODE = AudioTrack.MODE_STATIC;.
final int TEST_STREAM_TYPE = AudioManager.STREAM_ALARM;
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT, soundArray.length, TEST_MODE);
track.write(soundArray, 0, soundArray.length);
}
Я хочу, чтобы звук воспроизводился,но вместо этого выдаются следующие ошибки:
2019-02-13 20:19:29.665 16618-16653/com.xx.yy E/AudioTrack: AudioFlinger could not create track, status: -12
2019-02-13 20:19:29.666 16618-16653/com.xx.yy E/AudioTrack-JNI: Error -12 initializing AudioTrack
2019-02-13 20:19:29.667 16618-16653/com.xx.yy E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.