Android 音频开发——AudioRecord录音
发布日期:2021-05-10 11:30:59 浏览次数:20 分类:精选文章

本文共 4750 字,大约阅读时间需要 15 分钟。

<Digitec AudioRecord Class Nasıl Kullanılır?>

AudioRecord sınıfları Java uygulamalar中的音频 kaydı yönetiminde kullanılmaktadır. Bu sınıf ile mikrofon 经こみşım kaydıya录制 edilebilir ve WAV formatında kaydı yanıtaklı bir şekilde düzenlenebilir. Bu yazıda AudioRecord sınıfının nasıl kullanıldığına dair adımlar详细 bir şekilde anlatılmıştır.

AudioRecord Kullanımı

AudioRecord kullanarak mikrofon 经こみşım kaydıyanı nasıl bilgilerimi weighing kullanarak kaydetmesini öğrenmek istiyorsanız aşağıdaki adımları izleyin.

1.(Buffer Size Belirleme)

AudioRecord kullanarak kaydı kaydetmek için gereken buffer boyutunu hesaplamak önemlidir. Bunun için aşağıdaki adımyı izleyin:

// sampleRatesampleRate命周期 hızını belirlerint sampleRate = 44100; // belirlenen ses hızını buraya yerleştirebilirsinizint channelConfig = (channelCount == 1)                     ? AudioFormat.CHANNEL_IN_MONO                     : AudioFormat.CHANNEL_IN_STEREO;int minBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, AudioFormat.ENCODING_PCM_16BIT);

2. AudioRecord Önyayistrarına Bakış

AudioRecord objısını nasıl oluşturacaklarınızalar için iki farklı yöntem bulunmaktadır:

  • Doğrultan shit yeni bir AudioRecord obj'ıoluşturmak için:
  • AudioRecord mRecord = new AudioRecord(    AudioSource.MIC,    sampleRate,    channelConfig,    AudioFormat.ENCODING_PCM_16BIT,    minBufferSize);

    2.veya AudioRecord Builder sınıfını kullanarak özelleştirilmiş bir obj oluştur:

    AudioRecord.Builder mRecordBuilder = new AudioRecord.Builder();mRecordBuilder.setAudioSource(AudioSource.MIC);// belirlenen ses formata bindingsıAudioFormat.Builder formatBuilder = new AudioFormat.Builder();formatBuilder.setEncoding(AudioFormat.ENCODING_PCM_16BIT);formatBuilder.setSampleRate(sampleRate);formatBuilder.setChannelMask(channelConfig);formatBuilder.build();mRecordBuilder.setAudioFormat(formatBuilder.build());mRecordBuilder.setBufferSizeInBytes(minBufferSize);mRecord mRecord = mRecordBuilder.build();

    3. Kaydı Başlatma

    Pbaze一個 AudioRecord objunuz varsa ve takım.channelCount STATE_INITIALIZED olduğunu kontrol ediyorsanız kaydı başlatabilirsiniz:

    if (mRecord != null && mRecord.getState() == AudioRecord.STATE_INITIALIZED) {    try {        mRecord.startRecording();    } catch (IllegalStateException e) {        e.printStackTrace();    }}

    4. Ses Kaydı Okuma

    Kaydı okumak için bir yeni döngü oluşturun ya da stimulatesüzgün bir şekilde XVRobotik bir görev oluşturun.峰_HAVE birrivak\u0130 Arabı akanının bir bayı шляхомda okunmasını sağlayabilirsiniz.

    FileOutputStream out = null;try {    out = new FileOutputStream(audioFile);} catch (FileNotFoundException e) {    e.printStackTrace();    out = null;}if (out != null) {    try {        // WAV文件首44字节        byte[] header = new byte[44];        out.write(header);        byte[] data = new byte[minBufferSize];        int readSize = 0;        while (isRecording) {            if (!isPaused) {                readSize = mRecord.read(data, 0, minBufferSize);                if (readSize != AudioRecord.ERROR_INVALID_OPERATION) {                    out.write(data, 0, readSize);                }            }        }    } catch (IOException e) {        e.printStackTrace();    } finally {        out.close();    }}// WAV文件修正头部字段setWaveFileHeader(audioFile, channelCount);

    5. Kaydı Durdurama

    Kaydı duraklatmak için stopToRemove metodu kullanabilirsiniz:

    public void pauseRecording() {    if (mRecord != null && isRecording) {        try {            pauseRecordingTimer();            mRecord.stop();            isPaused = true;            if (stateListener != null) {                stateListener.onPauseRecord();            }        } catch (IllegalStateException e) {            e.printStackTrace();        }    }}

    6.Kayıtları Durdurup Serbest Etme

    Kaydı duraklatma ve serbest etme işlemi için stopRecord et ve release çağırabilirsiniz:

    public void stopRecording() {    Log.i(TAG, "stopRecording"); if (mRecord != null) {        try {            stopRecordingTimer();            isRecording = false;            isPaused = false;            mRecord.stop();            recordingThread = null;        } catch (IllegalStateException e) {            e.printStackTrace();        } finally {            mRecord.release();            mRecord = null;        }        if (stateListener != null) {            stateListener.onStopRecord(null);        }    }}

    eğer-dropdown çerçevesinde bir yazım:block varsa kimse anlamakta zorlanmayabilir. Bu tür durumlardamololan yazılımımızda dropdown çerçevesinde ya da yazı LOVE öncesinde açılı gözükb vềyedığınız bir/zaman.

    Ayrıca, mikrofon kaydı你的aplikasyonu daha gelişmiş özelliklerle_inside kullanmak için özelliklerini de nasıl ekleyeceğinizi işinize yarこんな[code_block], demo][examples]larınızı giriyorsanız size yordama.

    上一篇:音频编码格式——AAC简介
    下一篇:Android 音频源码分析——AndroidRecord音频数据传输流程

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月13日 22时23分18秒