Аудиозапись в ОС Android 14 не работает должным образомAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Аудиозапись в ОС Android 14 не работает должным образом

Сообщение Anonymous »

Я использую Audio Recorder для записи звука до ОС Android 13, он работал нормально, но с ОС Android 14 он работает неправильно.
В основном внутри приложения Пользователь записывает звук в течение 15 секунд, а затем можно воспроизводить записанный звук.
Я создал ветку аудиозаписи следующим образом

Код: Выделить всё

public class AudioRecordThread implements Runnable {
public static final int MAX_FREQUENCY = 10000;
public static final int SAMPLE_RATE = 44100;
public static final int BUFFER_SIZE = 1024;
private static final int SAMPLE_RATE_INDEX = 4;
private static final int CHANNELS = 1;
private static final int BIT_RATE = 32000;

public AudioRecordThread(File file, OnRecorderListener listener) throws IOException {
this.bufferSize = BUFFER_SIZE;
this.audioRecord = createAudioRecord(this.bufferSize);
this.mediaCodec = createMediaCodec(this.bufferSize);
this.audioData = new AudioData(this.bufferSize);
this.outputStream = outputStream(file);
this.listener = listener;
this.list_frequency = new ArrayList();
this.mediaCodec.start();

try {
audioRecord.startRecording();
} catch (Exception e) {
e.printStackTrace();
mediaCodec.release();
throw new IOException(e);
}
}

private byte[] createAdtsHeader(int length) {
int frameLength = length + 7;
byte[] adtsHeader = new byte[7];

adtsHeader[0] = (byte) 0xFF; // Sync Word
adtsHeader[1] = (byte) 0xF1; // MPEG-4, Layer (0), No CRC
adtsHeader[2] = (byte) ((MediaCodecInfo.CodecProfileLevel.AACObjectLC - 1)  2);
adtsHeader[3] = (byte) (((CHANNELS & 3) > 11) & 0x03));
adtsHeader[4] = (byte) ((frameLength >> 3) & 0xFF);
adtsHeader[5] = (byte) (((frameLength & 0x07) = Build.VERSION_CODES.JELLY_BEAN) {
if (android.media.audiofx.NoiseSuppressor.isAvailable()) {
android.media.audiofx.NoiseSuppressor noiseSuppressor = android.media.audiofx.NoiseSuppressor
.create(audioRecord.getAudioSessionId());
if (noiseSuppressor != null) {
noiseSuppressor.setEnabled(true);
}
}
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
if (android.media.audiofx.AutomaticGainControl.isAvailable()) {
android.media.audiofx.AutomaticGainControl automaticGainControl = android.media.audiofx.AutomaticGainControl
.create(audioRecord.getAudioSessionId());
if (automaticGainControl != null) {
automaticGainControl.setEnabled(true);
}
}
}

return audioRecord;
}

private MediaCodec createMediaCodec(int bufferSize) throws IOException {
MediaCodec mediaCodec = MediaCodec.createEncoderByType("audio/mp4a-latm");
MediaFormat mediaFormat = new MediaFormat();

mediaFormat.setString(MediaFormat.KEY_MIME, "audio/mp4a-latm");
mediaFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, SAMPLE_RATE);
mediaFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, CHANNELS);
mediaFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, bufferSize);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
mediaFormat.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);

try {
mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
} catch (Exception e) {
e.printStackTrace();
mediaCodec.release();
throw new IOException(e);
}

return mediaCodec;
}

}
Итак, теперь с ОС Android 14 он записывает звук, но только за 5 секунд, и воспроизводит записанный звук продолжительностью 15 секунд за 5 секунд, как на тройной скорости. Как записать 15-секундный звук с правильной скоростью 1X в ОС Android 14?

Подробнее здесь: https://stackoverflow.com/questions/787 ... g-properly
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Реализуется ли Context Manager (должным образом) HuggingFace Accelerate's init_empty_ewheways (должным образом)?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Реализуется ли Context Manager (должным образом) HuggingFace Accelerate's init_empty_ewheways (должным образом)?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Реализуется ли Context Manager (должным образом) HuggingFace Accelerate's init_empty_ewheways (должным образом)?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Аудиозапись, глючный звук
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Аудиозапись, глючный звук
    Гость » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»