android 通过MediaRecorder实现简单的录音示例
作者:Big_Centaur 发布时间:2023-07-29 06:03:54
标签:mediarecorder,android
整理文档,搜刮出一个android 通过MediaRecorder实现简单的录音示例,稍微整理精简一下做下分享。
MainActivity
package com.centaur.collectvoice;
import android.media.MediaRecorder;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private final static String TAG = "collectvoice";
MediaRecorder mediaRecorder = new MediaRecorder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 开始按钮
* @param view
* @throws IOException
*/
public void onStart(View view) throws IOException {
Toast.makeText(this, "开始收集", Toast.LENGTH_SHORT).show();
// 第1步:设置音频来源(MIC表示麦克风)
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//第2步:设置音频输出格式(默认的输出格式)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
//第3步:设置音频编码方式(默认的编码方式)
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//创建一个临时的音频输出文件
// audioFile = File.createTempFile("record_", ".amr");
if (FileUtils.makeFolder("VOICE")){//一个简单的判断文件夹是不是存在 不存在就创建
String path = Environment.getExternalStorageDirectory().toString() + "/" + "VOICE/";
String filePath =path+"record_.amr";
File file = new File(filePath);
//第4步:指定音频输出文件
mediaRecorder.setOutputFile(file.getAbsolutePath());
//第5步:调用prepare方法
mediaRecorder.prepare();
//第6步:调用start方法开始录音
mediaRecorder.start();
}
}
/**
* 关闭按钮
* @param view
*/
public void onStop(View view) {
Toast.makeText(this, "停止收集", Toast.LENGTH_SHORT).show();
mediaRecorder.stop();
}
}
工具类中用到的方法
public static boolean makeFolder(String folder){
File filefolder = new File(Environment.getExternalStorageDirectory().toString() + "/" + folder);
if(!filefolder.exists()){
filefolder.mkdir();
if(filefolder.exists()){
Log.d(TAG,folder+"创建成功");
}
else {
Log.d(TAG,folder+"创建失败");
}
}
return true;
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.centaur.collectvoice.MainActivity">
<Button
android:onClick="onStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="收集声音" />
<Button
android:onClick="onStop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="停止声音" />
</LinearLayout>
来源:http://blog.csdn.net/u012222078/article/details/56857062?locationNum=13&fps=1
0
投稿
猜你喜欢
- 学习要求:知道一点儿函数式接口和Lambda表达式的基础知识,有利于更好的学习。1.先体验一下Stream的好处需求:给你一个ArrayLi
- 之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,
- 一、Redis分布式锁概念篇建议直接采用Redis的官方推荐的Redisson作为redis的分布式锁1.1、为什么要使用分布式锁 
- 方式一:if语句控制// 例如:Column( mainAxisAlig
- 1、判断实体对象是否为空2、判断对象所有属性是否为空3、特别注意,实体类中如果有基本数据类型,会影响判断package com.liuxd.
- .net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知
- XY个人记SparkSQL是spark的一个模块,主入口是SparkSession,将SQL查询与Spark程序无缝混合。DataFrame
- 1、SpringMVC验证@Validated的使用第一步:编写国际化消息资源文件编写国际化消息资源ValidatedMessage.pro
- Spring MVC Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:收集、验证请求参
- 一、系统介绍1.开发环境开发工具:Eclipse2021JDK版本:jdk1.8Mysql版本:8.0.132.技术选型Java+Swing
- webclient在调用DownloadData或者DownloadString的时候请求回来的数据出现乱码问题,解决办法如下:1、设置we
- 写在前面:接下来很长一段时间的文章主要会记录一些项目中实际遇到的问题及对应的解决方案,在相应代码分析时会直指问题所在,不会将无关的流程代码贴
- 1、什么是Java反射机制?在程序运行中动态地获取类的相关属性,同时调用对象的方法和获取属性,这种机制被称之为Java反射机制下面给出一个反
- 文章来源:互联网 作者:skywoo/CSDNWindows2000+Apache2.0.48+resin2.1.6 &nbs
- 实现一个自定义的 @Conditional 派生注解自定义一个注解,继承 @Conditional 注解// 派生注解@Retention(
- 循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件不满足时退出循环。Java提供了while条件循环。它的基本用法是:whi
- @ModelAttribute在父类、子类的执行顺序被 @ModelAttribute 注解的方法会在Controller每个方法执行之前都
- 基于jsr303 通过自定义注解实现,实现思路:存在一些瑕疵,后续补充完善。加入依赖部分版本已不默认自动引入该依赖,选择手动引入<de
- 在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串。我们可以通过@Request
- 在之前项目中有用到关于获取手机联系人的部分,闲置就想和大家分享一下,话不多说,上代码:java部分:package com.example.