1.1 mediaRecord的简单使用,单录制mp3的效果

本文详细描述了在Android应用中使用MediaRecorder录制MP3时的关键步骤,包括创建并检查文件是否存在、设置录音参数、开始和停止录音。重点在于`setOutputFile`方法的应用和处理可能出现的文件创建异常。
摘要由CSDN通过智能技术生成
录制mp3的过程中,主要是将数据写入到文件中,其中一段关键的方法是setOutputFile,设置数据输出的文件,如果文件不存在的话,则无法进行录制的效果

1、创建文件,用于将数据写入,如果不存在数据的话无法进行录音

private String mp3Path = getDiskCachePath(EasyApplication.getEasyApplication()) +"/mp4-pcm" + "/" + "sign.mp3";
File mp3File = new File(mp3Path);
if (!mp3File.exists()) {
try (FileOutputStream fos = new FileOutputStream(mp3File)) {
Log.d(TAG, "initView: " + fos);
// 如果文件不存在,创建文件。这里实际上没有写入任何内容到文件,
// 只是打开了一个输出流来创建文件。如果需要写入内容,可以在这里做。
} catch (IOException e) {
e.printStackTrace();
// 处理文件创建失败的情况
}
}

2、录音工作的准备

private void prepareRecord(){
File mp3File = new File(mp3Path);
Log.d(TAG, "prepareRecord: " + mp3File.getAbsolutePath());
if (mp3File.exists()){
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置音频来源为麦克风
recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS); // 设置输出格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); // 设置音频编码器
//设置音质频率
recorder.setAudioEncodingBitRate(96000);
//所有android系统都支持的适中采样的频率
recorder.setAudioSamplingRate(44100);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
recorder.setOutputFile(mp3File); // 假设recorder接受File对象作为参数
}
// 现在recorder已经准备好开始录制到mp3File
} catch (IllegalStateException e) {
Log.e(TAG, "initView: ", e );
e.printStackTrace();
// 处理设置输出文件失败的情况
}
}else {
// mp3File.mkdirs();
if (!mp3File.exists()) {
Toast.makeText(getActivity(),"",Toast.LENGTH_SHORT).show();
try (FileOutputStream fos = new FileOutputStream(mp3File)) {
Log.d(TAG, "initView: " + fos);
// 如果文件不存在,创建文件。这里实际上没有写入任何内容到文件,
// 只是打开了一个输出流来创建文件。如果需要写入内容,可以在这里做。
} catch (IOException e) {
e.printStackTrace();
// 处理文件创建失败的情况
}
}
Log.d(TAG, "prepareRecord: " + mp3File.getAbsolutePath());
}
}

3、开始进行录音

private void startReading() {
if (recorder != null){
mOnReading = true;
try {
recorder.prepare();
recorder.start();
} catch (IOException e) {
Log.e(TAG, "startReading: ", e );
}
}else {
prepareRecord();
}
}

4、停止录音

private void stopReading() {
mOnReading = false;
if (recorder != null){
recorder.stop();
recorder.release();
recorder = null;

}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值