1、请求录制音频权限

<user-permission android:name="android.permission.RECORD_AUDIO"/>

RECORD_AUDIO 权限从6.0后需要进行用户授权,通过ActivityCompat.requestPermissions();

2、创建运行MediaRecorder

2.1 设置音频源setAudioSource(int audio_source) ,多少情况使用MediaRecorder.AudioSource.MIC

2.2 设置输出音频文件格式 setOutputFormat(int output_format)

*(Android 8.0 开始支持MPEG2_TS 格式)

2.3  设置输出文件名 setOutputFile(String filepath)

2.4 设置音频编码器 setAudioEncoder(int audio_encoder)

2.5 通过完成初始化 prepare()

2.6  start()

3 停止释放资源

stop()  release()

4、创建MediaPlayer

MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource(recordFile.getPath());
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
}
});
package com.rexkell.mediaapplication;

import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button; import java.io.File;
import java.io.IOException; /**
* author: rexkell
* explain:MediaRecord 录制音频
*/
public class MediaRecordActivity extends AppCompatActivity {
private boolean isRecording=false;
MediaRecorder mediaRecorder;
MediaPlayer mediaPlayer;
File recordFile;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_mediarecord);
init();
}
public void init(){
mediaRecorder=new MediaRecorder();
//设置音频的来源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置音频的输出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
//设置音频文件的编码
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
mediaPlayer=new MediaPlayer();
recordFile=new File(getExternalFilesDir(null).getPath()+"/test.amr"); }
public void record(View v){
isRecording=!isRecording;
String text=isRecording?"暂停":"录制";
((Button)v).setText(text);
if (isRecording){
startRecord();
}else {
stopRecord();
}
}
public void play(View v){ if (mediaPlayer.isPlaying()){
return;
}
//设置数据源
try {
mediaPlayer.setDataSource(recordFile.getPath());
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
}
});
} catch (IOException e) {
e.printStackTrace();
} }
public void startRecord(){
if (recordFile.exists()){
recordFile.delete();
}
try {
recordFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
} mediaRecorder.setOutputFile(recordFile.getPath());
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public void stopRecord(){
if (mediaRecorder!=null&&isRecording){
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder=null;
}
}
public void stopPlay(){
if(mediaPlayer!=null){
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer=null;
}
}
}

  

Android MediaRecorder录制播放音频的更多相关文章

  1. Android MediaRecorder录制音频

    今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤: 1.创建MediaRecorder对象. 2.调用MediaRecorder对象的set ...

  2. Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据

    一.实现说明 OpenSL ES的录音要比播放简单一些,在创建好引擎后,再创建好录音接口基本就可以录音了.在这里我们做的是流式录音,所以需要用至少2个buffer来缓存录制好的PCM数据,这里我们可以 ...

  3. Android 中MediaPlayer播放音频

    1.播放/res/raw/目录下的音频资源 public class MainActivity extends Activity { MediaPlayer mediaPlayer; int posi ...

  4. Android使用的开发MediaRecorder录制声音

    至 Android 录制声音的应用,Android提供 MediaRecorder 类别.大约MediaRecorder可以参考一个特定的解释<Android开发之MediaRecorder类具 ...

  5. Android多媒体-MediaRecorder 录制音视频

    不多说,直接上代码,有具体凝视 MyAudioRecord.java import java.io.File; import java.io.IOException; import android.a ...

  6. AudioRecord 录制播放PCM音频

    AudioRecord 与 MediaRecorder 区别 AudioRecord 基于字节流录制,输出的是pcm数据,未进行压缩,直接保存的pcm文件不能被播放器识别播放. 可以对音频文件进行实时 ...

  7. 使用MediaRecorder录制音频

    手机一般都提供了麦克风硬件,而Android系统就可以利用该硬件来录制音频了. 为了在Android应用中录制音频,Android提供了MediaRecorder类,使用MediaRecorder录制 ...

  8. Android使用的开发MediaRecorder录制视频

    MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...

  9. Android音视频之AudioTrack播放音频(二)

    前一篇讲了如何录制wav音频文件,本篇就来讲讲如何播放wav文件,这里就是使用AudioTrack来播放音频,确切的说是播放pcm格式数据,使用AudioTrack播放也没什么难度,主要就是将数据写入 ...

随机推荐

  1. 【分享】nginx负载均衡全套视频教程

    1.课件 百度网盘链接:https://pan.baidu.com/s/1On2oONVZmPwI9yIDekgRiA        提取码:c4fw 2.教程列表 3.教程下载 3.1.直接在线学习 ...

  2. springmvc+hibernate+layui+Jackson开发的一个小例子

    今天用springmvc+hibernate+layui开发了一个增删改查的例子,运行效果如下图: 下面是spring-servlet.xml的配置文件 主要的一些文件路径 数据库一张表,user表, ...

  3. DenyHosts

    下载软件并解压cd DenyHosts-2.6 #进入安装解压目录python setup.py install #安装DenyHostscd /usr/share/denyhosts/ #默认安装路 ...

  4. Python Django,事务,transaction.atomic,事务保存点

    from django.shortcuts import renderfrom django.http import HttpResponsefrom django.views.generic imp ...

  5. 大数据量数据库设计与优化方案(SQL优化)

    转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...

  6. LeetCode 5275. 找出井字棋的获胜者 Find Winner on a Tic Tac Toe Game

    地址 https://www.acwing.com/solution/LeetCode/content/6670/ 题目描述A 和 B 在一个 3 x 3 的网格上玩井字棋. 井字棋游戏的规则如下: ...

  7. tarjan图论算法

    tarjan图论算法 标签: tarjan 图论 模板 洛谷P3387 [模板]缩点 算法:Tarjan有向图强连通分量+缩点+DAGdp 代码: #include <cstdio> #i ...

  8. 第05组 Alpha冲刺(2/4)

    第05组 Alpha冲刺(2/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了 ...

  9. linux 判断文件夹或文件是否存在

    文件夹不存在则创建 if [ ! -d "/data/" ];then mkdir /data else echo "文件夹已经存在" fi 文件存在则删除 i ...

  10. linux--解决anaconda升级pip问题

    Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 在用pip install命令安装东西时,有时会提示如下错误:升级pip You ...