首页
学习
活动
专区
工具
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。

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

相关·内容

领券