在android中进行录音相对来说是比较简单的,使用系统提供的MediaRecorder类进行录音并保存,然后调用MediaPlayer进行播放。以下为xml配置文件代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.kk.soundrecording.MainActivity" ><Buttonandroid:id="@+id/start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:text="@string/start" /><Buttonandroid:id="@+id/stop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/start"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:text="@string/stop" /><Buttonandroid:id="@+id/paly"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/stop"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:text="@string/paly" /><Buttonandroid:id="@+id/pause_paly"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/paly"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:text="@string/pause_paly" /><Buttonandroid:id="@+id/stop_paly"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/pause_paly"android:layout_centerHorizontal="true"android:layout_marginTop="40dp"android:text="@string/stop_paly" /></RelativeLayout>

在MainActivity中进行录音,代码如下:

package com.example.kk.soundrecording;import java.io.File;
import java.io.IOException;
import com.example.kk.util.RecordPlayer;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;/*** * @author kk**/public class MainActivity extends Activity implements OnClickListener {// 开始录音private Button start;// 停止按钮private Button stop;// 播放按钮private Button paly;// 暂停播放private Button pause_paly;// 停止播放private Button stop_paly;// 录音类private MediaRecorder mediaRecorder;// 以文件的形式保存private File recordFile;private RecordPlayer player; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);recordFile = new File("/mnt/sdcard", "kk.amr");initView();Listener();}private void initView() {start = (Button) findViewById(R.id.start);stop = (Button) findViewById(R.id.stop);paly = (Button) findViewById(R.id.paly);pause_paly = (Button) findViewById(R.id.pause_paly);stop_paly = (Button) findViewById(R.id.stop_paly);}private void Listener() {start.setOnClickListener(this);stop.setOnClickListener(this);paly.setOnClickListener(this);pause_paly.setOnClickListener(this);stop_paly.setOnClickListener(this);}@Overridepublic void onClick(View v) {player = new RecordPlayer(MainActivity.this);int Id = v.getId();switch (Id) {case R.id.start:startRecording();break;case R.id.stop:stopRecording();break;case R.id.paly:playRecording();break;case R.id.pause_paly:pauseplayer();break;case R.id.stop_paly:stopplayer();break;}}private void startRecording() {mediaRecorder = new MediaRecorder();// 判断,若当前文件已存在,则删除if (recordFile.exists()) {recordFile.delete();}mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);mediaRecorder.setOutputFile(recordFile.getAbsolutePath());try {// 准备好开始录音mediaRecorder.prepare();mediaRecorder.start();} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void stopRecording() {if (recordFile != null) {mediaRecorder.stop();mediaRecorder.release();}}private void playRecording() {player.playRecordFile(recordFile);}private void pauseplayer() {player.pausePalyer();}private void stopplayer() {// TODO Auto-generated method stubplayer.stopPalyer();}
}

同时,新建一个RecordPlayer类,用来播放保存好的录音,如下:

package com.example.kk.util;import java.io.File;import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.util.Log;
import android.widget.Toast;import com.example.kk.soundrecording.R;/*** * * @author kk   录音播放类**/public class RecordPlayer {private static MediaPlayer mediaPlayer;private Context mcontext;public RecordPlayer(Context context) {this.mcontext = context;}// 播放录音文件public void playRecordFile(File file) {if (file.exists() && file != null) {if (mediaPlayer == null) {Uri uri = Uri.fromFile(file);mediaPlayer = MediaPlayer.create(mcontext, uri);}mediaPlayer.start();//监听MediaPlayer播放完成mediaPlayer.setOnCompletionListener(new OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer paramMediaPlayer) {// TODO Auto-generated method stub//弹窗提示Toast.makeText(mcontext,mcontext.getResources().getString(R.string.ok),Toast.LENGTH_SHORT).show();}});}}// 暂停播放录音public void pausePalyer() {if (mediaPlayer.isPlaying()) {mediaPlayer.pause();Log.e("TAG", "暂停播放");}}// 停止播放录音public void stopPalyer() {// 这里不调用stop(),调用seekto(0),把播放进度还原到最开始if (mediaPlayer.isPlaying()) {mediaPlayer.pause();mediaPlayer.seekTo(0);Log.e("TAG", "停止播放");}}
}

此时,功能代码都已实现,但是运行时会报错!为什么呢,这个是被很多初学者会忘记的,那就是android开发中调用相应的功能时,必须在主配置文件中授予相应的权限,在配置文件中添加如下代码:

   <uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WAKE_LOCK" />   

好了,现在就可以使用了,觉得有用的朋友请点个赞。

demo下载地址:http://download.csdn.net/detail/myname_kk/9280417

android进行录音功能并保存播放相关推荐

  1. Android实现录音功能实现实例(MediaRecorder)

    Android实现录音功能实现实例(MediaRecorder) - 腾讯云开发者社区-腾讯云 本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下: And ...

  2. Android之简单本地音乐播放器

    平台:Android studio APK:http://fir.im/apps/56ea5187e75e2d69af000042 本地的音乐播放器,主要功能就是可以播放音乐,能够读取本地的音乐,并显 ...

  3. 基于Android的MediaPlayer的音乐播放器的封装

    基于Android的MediaPlayer的音乐播放器的封装 使用过android原生的mediaplayer来做音频播放的同学们,肯定是经历过一些痛苦的,因为android提供了一个状态机,确实这个 ...

  4. android 音频在手机上测试播放不流畅问题

    今天看了视频<24考研全程复习规划>,背了50个单词,看了25%的<终身学习:哈佛毕业后的六堂课>,看完第一章<JAVA编程思想>.做了一道算法题,没做出来,看了讲 ...

  5. android实现录音功能demo

    android实现录音功能demo 主要功能实现 视频演示 录音相关代码 下载链接 主要功能实现 主要实现录音功能,录音,停止录音,保存录音,然后可以查看录音列表,还用sqlite数据库实现了用户的注 ...

  6. 【黑马Android】(11)音乐播放器/视频播放器/照相机/常见对话框/notification通知/样式和主题/帧动画/传感器/应用程序反编译与安装

    音乐播放器api <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns: ...

  7. Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案

    Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 参考文章: (1)Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 (2)https://www.cn ...

  8. 音乐应用开发Android应用开发--MP3音乐播放器界面设计(2)

    在写这篇文章之前,xxx已写过了几篇关于改音乐应用开发主题的文章,想要了解的朋友可以去翻一下之前的文章 Android应用开发--MP3音乐播放器界面计划(2) 2013年5月25日 简.美音乐播放器 ...

  9. 如何阻止YouTube在iOS,Android和Web上自动播放视频

    Over at YouTube, they love it when you watch more YouTube. If you're sick of YouTube automatically q ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置图例位置、移除图例)实战
  2. CV公开课报名 | 快速搭建基于Python的车辆信息识别系统
  3. mysql bin.000013_mysql的binlog安全删除的一种方法
  4. Mycat - 实现数据库的读写分离与高可用
  5. android学习笔记---36_Activity生命周期
  6. linux上mysql定时备份数据库数据_Linux下如何实现MySQL数据库每天定时自动备份
  7. 机器学习算法之KNN算法,python实现
  8. Linux下Apache、PHP、MySQL默认安装路径
  9. java坦克大战生成_Java坦克大战 (一) 之产生一个窗口
  10. 北京今日起最低工资和养老金标准全部上调
  11. cpu压力测试 Android,测试CPU和GPU性能压力(StressMyPC)
  12. C++春招实习和秋招面试过程记录
  13. css3的媒体查询(Media Queries)
  14. Checking Table 设计模式 - 从概念、建模、设计到实现——兼谈基于业务需求驱动的设计模式创新
  15. Deep Representation Learning for Trajectory Similarity Computation
  16. 870987-63-6,Ir[dF(CF3)ppy]2(dtbbpy)PF6,(Ir[dF(CF3)ppy]2(dtbpy))PF6铱催化剂
  17. 软件开发中的瀑布模型
  18. unity 使用超椭圆方程对图片进行裁切制作圆角矩形
  19. Java程序设计 多线程 基础知识题
  20. Java实现MD5加密及验证(两种方式,加盐md5与未加盐md5)

热门文章

  1. MFC编程 -- 读取文件内容
  2. 【OpenCV】32 图像梯度–更多梯度算子(rober算子、prewitt算子)
  3. P45 lets talk in english
  4. java searchview_Android SearchView搜索框组件的使用方法
  5. 二建课件网课视频下载二建证书为什么现在不能立即实行“全国执业”?
  6. 文盲的Python入门日记:第六天,继续完善我们的MsSql类,支持查询结果的筛选和排序,以及日期类型
  7. word文档通配符换行_Word中有哪些实用技巧?Word文件怎么转换成PDF文件?
  8. linux内核强制网卡为100m,linux系统 查看网卡是100M还是1000M
  9. 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】...
  10. 松耦合和紧耦合的架构设计及性能对比