首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在android中创建音频文件的波形

在Android中创建音频文件的波形,需要使用MediaPlayer和MediaRecorder来录制音频,并使用AudioRecord来获取音频数据。以下是一个简单的示例代码:

代码语言:java
复制
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private static final int SAMPLE_RATE = 44100;
    private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO;
    private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
    private static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT);

    private AudioRecord audioRecord;
    private MediaPlayer mediaPlayer;
    private MediaRecorder mediaRecorder;
    private File audioFile;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button recordButton = findViewById(R.id.record_button);
        Button playButton = findViewById(R.id.play_button);

        recordButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startRecording();
            }
        });

        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startPlaying();
            }
        });

        audioFile = new File(Environment.getExternalStorageDirectory(), "audio.wav");
        if (audioFile.exists()) {
            audioFile.delete();
        }

        try {
            audioFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        audioRecord = new AudioRecord.Builder()
                .setAudioSource(MediaRecorder.AudioSource.MIC)
                .setAudioFormat(new AudioFormat.Builder()
                        .setEncoding(AUDIO_FORMAT)
                        .setSampleRate(SAMPLE_RATE)
                        .setChannelMask(CHANNEL_CONFIG)
                        .build())
                .setBufferSizeInBytes(BUFFER_SIZE)
                .build();

        mediaPlayer = new MediaPlayer();

        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mediaRecorder.setOutputFile(audioFile.getAbsolutePath());
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    }

    private void startRecording() {
        audioRecord.startRecording();
        mediaRecorder.start();
    }

    private void startPlaying() {
        try {
            mediaPlayer.setDataSource(audioFile.getAbsolutePath());
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例代码中,我们使用了AudioRecord来录制音频,并使用MediaRecorder来保存音频文件。我们还使用了MediaPlayer来播放音频文件。

在这个示例代码中,我们使用了一个按钮来开始录制音频,并使用另一个按钮来开始播放音频。

在这个示例代码中,我们使用了WAV格式来保存音频文件。如果需要创建音频文件的波形,可以使用第三方库,例如AudioWaveform。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android音频播放(本地/网络)绘制数据波形,根据特征有节奏的改变颜色

    上一期刚刚掀完桌子没多久《Android MP3录制,波形显示,音频权限兼容与播放》,就有小伙伴问我:“一个音频的网络地址,如何根据这个获取它的波形图?”··· WTF(ノಠ益ಠ)ノ彡┻━┻,那一瞬间那是热泪盈眶啊,为什么我就没想到呢···反正肯定不是为了再水一篇文章就对了<( ̄︶ ̄)>。

    我是DEMO

    02

    mac上用什么软件编辑音频简单?

    mac上用什么软件编辑音频简单?Celemony Melodyne Studio5是个好选择,Celemony Melodyne Studio5是一款专业的音频编辑软件,它可以让用户轻松地编辑和修复音频文件中的音调、节奏和时间。它可以让用户在音频波形上直接对音调进行调整,而不会影响到其他元素。Celemony Melodyne Studio5还提供了一系列工具,包括音调校正、时间扭曲、音高和时间编辑等功能,可以让用户更加精确地编辑音频。此外,它还提供了多个音频处理效果,如合唱效果、谐波增强、噪声消除等,可以让用户轻松地对音频进行处理和修复。Celemony Melodyne Studio5还支持多种文件格式,包括WAV、MP3、AIFF、AAC等。总之,如果你需要一个强大的音频编辑软件,Celemony Melodyne Studio5是一个不错的选择。

    04

    使用 FastAI 和即时频率变换进行音频分类

    目前深度学习模型能处理许多不同类型的问题,对于一些教程或框架用图像分类举例是一种流行的做法,常常作为类似“hello, world” 那样的引例。FastAI 是一个构建在 PyTorch 之上的高级库,用这个库进行图像分类非常容易,其中有一个仅用四行代码就可训练精准模型的例子。随着v1版的发布,该版本中带有一个data_block的API,它允许用户灵活地简化数据加载过程。今年夏天我参加了Kaggle举办的Freesound General-Purpose Audio Tagging 竞赛,后来我决定调整其中一些代码,利用fastai的便利做音频分类。本文将简要介绍如何用Python处理音频文件,然后给出创建频谱图像(spectrogram images)的一些背景知识,示范一下如何在事先不生成图像的情况下使用预训练图像模型。

    04
    领券