android利用MediaRecorder实现录音功能
android用手机录音保存到sd卡中;
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/bt_start"android:layout_width="match_parent"android:text="start"android:layout_height="wrap_content"></Button><Buttonandroid:id="@+id/bt_end"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="stop"></Button></LinearLayout>
- 准备保存文件的路径及文件;
- 创建MediaRecorder对象,
- 调用MediaRecorder的start方法;
- 结束录音
- .调用MediaRecorder的stop方法;
- 释放资源;
开始录音:
private void startRecord(){if (recorder==null){File dir = new File(Environment.getExternalStorageDirectory(),"sound");if (!dir.exists()){dir.mkdir();}File file=new File(dir,System.currentTimeMillis()+".amr");if (!file.exists()){try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}recorder =new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;try {recorder.prepare();recorder.start();} catch (IOException e) {e.printStackTrace();}}}
结束录音:
private void endRecord(){if (recorder!=null){recorder.stop();recorder.release();recorder=null;}}
具体代码实现:
package com.example.record;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.IOException;public class MainActivity extends AppCompatActivity {private Button bt_1,bt2;private MediaRecorder recorder ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.bt_start).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startRecord();}});findViewById(R.id.bt_end).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {endRecord();}});}private void startRecord(){if (recorder==null){File dir = new File(Environment.getExternalStorageDirectory(),"sound");if (!dir.exists()){dir.mkdir();}File file=new File(dir,System.currentTimeMillis()+".amr");if (!file.exists()){try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}recorder =new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//输入源通过话筒录音;recorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//音频编码recorder.setOutputFile(file.getAbsolutePath());//设置写出文件;try {recorder.prepare();recorder.start();} catch (IOException e) {e.printStackTrace();}}}private void endRecord(){if (recorder!=null){recorder.stop();recorder.release();recorder=null;}}
}
最后记得添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
写入文件的权限,调用录音的权限
android利用MediaRecorder实现录音功能相关推荐
- Android之mediarecorder中的方法以及工作流程的过程
嵌套.关联的类 class MediaRecorder.AudioEncoder 定义音频编码 class MediaRecorder.AudioSource 定义声音资源 interface Med ...
- Android使用MediaRecorder和Camera实现视频录制及播放功能整理
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51878566 这两天产品经理向我丢来一个新需求,需要在项目里添加一个视频录制的 ...
- android p通话录音功能,Android编程实现通话录音功能的方法
本文实例讲述了Android编程实现通话录音功能的方法.分享给大家供大家参考,具体如下: 因受系统限制,只能录自已麦的声音,录不到对方的声音,可能需要改内核才能实现双向录音: 接通电话和挂断电话时,震 ...
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...
原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html 之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...
- android列表实现置顶,Android利用RecyclerView实现全选、置顶和拖拽功能示例
Android利用RecyclerView实现全选.置顶和拖拽功能示例 发布时间:2020-08-23 16:26:42 来源:脚本之家 阅读:159 作者:爱开发 前言 今天给大家分享是如何在Rec ...
- android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...
想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...
- 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
今天在调用MediaRecorder.stop(),报错了,java.lang.RuntimeException: stop failed. E/AndroidRuntime(7698): Cause ...
- (转)[Android] 利用 ant 脚本修改项目包名
[Android] 利用 ant 脚本修改项目包名在开发android应用项目的时候,经常会有这样的需求,一个应用项目,要求 房价上半年下行 下半年或回暖 在不同的OEM下有不同的包名,不同的资源,不 ...
- android 利用eclipse观察内存变化情况
android 利用eclipse观察内存变化情况 使用方法比较简单: · 选择DDMS视图,并打开Devices视图和Heap视图 · 点击选择要监控的进程,比如:上图中我选择的是system_pr ...
最新文章
- IDEA/Git 设置多个push远程仓库或者同时提交多个push仓库
- mysql 会用文件系统吗_MySQL的文件系统_MySQL
- 一个古帝国做产品的故事
- toft 测试用例rat_一篇文章详述配对测试的测试用例设计!强烈建议收藏
- eclipse启动tomcat不能正常访问问题
- Android 调整屏幕分辩率
- Eclipse中安装Ext插件(Spket IDE)
- php中echo有哪些,php中echo和print有什么区别
- python用代码执行另一个python文件
- 85-scala版spark2.x读取es6.x
- java中多态案例工厂类,Java中构造器内部的多态方法的行为实例分析
- 【算法】普通方法和筛选法求素数
- Redis 如何简化实现微服务的设计模式?
- 2021-09-28智能门锁的设计新方案
- 经纬度PLT文件格式说明
- 最原始的yuv图像叠加文字的实现--手动操作像素
- 基于STM32的卧室智慧监测系统
- linux开机引导界面美化,Ubuntu16.04引导界面美化(burg)
- 扶贫?教育?地铁?这里有跨界也能实现的企业数字化新操作!
- samba共享文件时端口问题
热门文章
- VITAL视频目标跟踪源码运行笔记——Testing模式
- VMware Horizon Client for Windows 7 64bit实测可用
- 全套S7-1200一拖三恒压供水程序样例+PID样例+触摸屏样例
- CLion:The C compiler identification is unknown, CMake Error;Cygwin的安装配置方法
- 幼儿教师计算机考核方案,欢欢民艺幼儿园语言文字规范化工作教师考核标准
- Atik工业相机应用案例研究——涡轮叶片氧化铝检测成像系统
- 3d游戏项目实训一周总结 2
- 3. “强人”对公司运营成本核算的影响
- 修改植物大战僵尸游戏存档,二进制绘制字符或图形
- PROTAC与抗体偶联药物的结合