添加权限

    <!-- AUX --><uses-permission android:name="android.permission.RECORD_AUDIO" /><!-- write --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

一、录音(存文件)输出

1、录音至本地文件

import android.media.MediaRecorder;
import android.util.Log;import java.io.File;
import java.io.IOException;/*** @description* create by 2022/7/28 20:07* 录音*/
public class MicrophoneRecording {private static final String TAG = "MicrophoneRecording";private MediaRecorder mRecorder;private File audioFile;public void startRecording() {mRecorder = new MediaRecorder();mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);try {audioFile = File.createTempFile("recording", ".amr");mRecorder.setOutputFile(audioFile.getAbsolutePath());mRecorder.prepare();Log.d(TAG, "startRecording");} catch (IOException e) {e.printStackTrace();}mRecorder.start();}public String getAudioFile() {return this.audioFile.getAbsolutePath();}public void stopRecording() {if (mRecorder != null) {mRecorder.stop();mRecorder.release();mRecorder = null;}}}

2、音源播放器

import android.media.MediaPlayer;
import android.util.Log;import java.io.IOException;/*** @description* create by 2022/7/28 20:09*  播放*/
public class AudioSourcePlay {private static final String TAG = "AudioSourcePlay";private MediaPlayer mPlayer;public void startPlaying(String fileName) {mPlayer = new MediaPlayer();try {mPlayer.setDataSource(fileName);mPlayer.prepare();mPlayer.start();Log.d(TAG, "startPlaying");} catch (IOException e) {e.printStackTrace();}}public void stopPlaying() {if (mPlayer != null) {mPlayer.release();mPlayer = null;}Log.d(TAG, "stopPlaying");}
}

3、调用

        ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//开启录音startRecording();}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 停止录音stopRecording();}});mUpgrade.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 播放AudioSourcePlay();}});private void startRecording() {mMicrophoneRecording = new MicrophoneRecording();mMicrophoneRecording.startRecording();Log.d("ModuleService", "openMicrophone: ");}private void stopRecording(){mMicrophoneRecording.stopRecording();Log.d("ModuleService", "stopMicrophone: ");}private void AudioSourcePlay(){mAudioSourcePlay = new AudioSourcePlay();mAudioSourcePlay.startPlaying(mMicrophoneRecording.getAudioFile());Log.d("ModuleService", "playing: ");}@Overrideprotected void onDestroy() {super.onDestroy();if (mMicrophoneRecording != null) {stopRecording();mMicrophoneRecording = null;}if (mAudioSourcePlay != null){mAudioSourcePlay.stopPlaying();mAudioSourcePlay = null;}}

二、实时录音并播放

1、

    // 线程处理数据流private  class RecordThread extends Thread{static final int frequency = 44100;static final int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;@Overridepublic void run() {int recBufSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding)*2;int plyBufSize = AudioTrack.getMinBufferSize(frequency, channelConfiguration, audioEncoding)*2;audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, channelConfiguration, audioEncoding, recBufSize);audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, frequency, channelConfiguration, audioEncoding, plyBufSize, AudioTrack.MODE_STREAM);byte[] recBuf = new byte[recBufSize];audioRecord.startRecording();audioTrack.play();while(true){int readLen = audioRecord.read(recBuf, 0, recBufSize);audioTrack.write(recBuf, 0, readLen);}}}

2、调用

    private MicrophoneRecording mMicrophoneRecording;private AudioSourcePlay mAudioSourcePlay;private  AudioRecord audioRecord;private  AudioTrack audioTrack;      mUpgrade.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 播放RecordThread recordThread = new RecordThread();recordThread.start();}});@Overrideprotected void onDestroy() {super.onDestroy();audioTrack.stop();audioRecord.stop();}

android 麦克风录音输出相关推荐

  1. Android 麦克风录音动画

    Android 麦克风录音动画 源代码 RecordView.java R.drawable.voice_recording 源代码 RecordView.java import android.co ...

  2. Android麦克风录音的实现

    最近公司有一个业务,就是通过IM发送音频,我用的是环信的第三方,自定义发送音频,写了一个录音的demo,录制完成之后发送. 这个Demo测试之后感觉还不错,分享一下. 一.添加权限: <uses ...

  3. android麦克风录音权限设置,小米9 SE怎么设置麦克风权限 小米9 SE打开录音权限的设置方法...

    小米9 SE怎么设置麦克风权限?平时我们用小米9 se第一次打开软件时,会遇到要打开麦克风权限的提示,如果第一次拒绝了这个麦克风权限的话,后面要打开,就需要来进行设置一下了,今天新机汇小编为大家分享一 ...

  4. android按住录音按钮_Android实现录音方法(仿微信语音、麦克风录音、发送语音、解决5.0以上BUG)...

    先给大家展示下效果图,如果大家感觉不错,请参考使用方法, 效果图如下所示: 使用方法: 录音工具类:AudioRecoderUtils.java,代码如下: public class AudioRec ...

  5. Android 录音实现方法、仿微信语音、麦克风录音、发送语音

    效果图(注!由于使用的模拟器录制,所以图片中的录音时候话筒上下波动比较小,手机上正常!): 使用方法: 录音工具类:AudioRecoderUtils.java,代码如下: public class ...

  6. Android 录音实现方法、仿微信语音、麦克风录音、发送语音、解决5.0以上BUG

    原文地址:https://blog.csdn.net/fan7983377/article/details/51750583 本文修改自:http://www.jianshu.com/p/06eca5 ...

  7. Android之录音--AudioRecord、MediaRecorder

    Android提供了两个API用于实现录音功能:android.media.AudioRecord.android.media.MediaRecorder. 网上有很多谈论这两个类的资料.现在大致总结 ...

  8. android java 录音放大_Android实现录音功能实现实例(MediaRecorder)

    本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下: Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord, ...

  9. Android录音器实验报告,Android实现录音(MediaRecorder)

    Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...

最新文章

  1. java web 默认页面配置文件_Tomcat中配置全局的错误页面(如404)+删除Tomcat中webapps目录下的自带项目,防止Tomcat默认文件泄露...
  2. leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)
  3. 常见的时间复杂度函数
  4. 《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习
  5. 自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串
  6. 一款简单易用的mp3录音软件
  7. sqlserver中创建包含事务的存储过程
  8. Cheatsheet: 2014 06.01 ~ 06.30
  9. java编程菜鸟入门02
  10. Maven系列(一):Maven简介
  11. iPhone唯一标识符
  12. python加法赋值运算符为_Python中什么是算术运算符、赋值运算符和复合运算符?...
  13. html倒计时代码执行操作,js实现网页倒计时、网站已运行时间功能的代码3例
  14. Dev中ChartControl——属性熟悉与简单应用
  15. Tomcat的实现原理
  16. 江苏科技大学计算机学院院长高尚,江苏科技大学计算机学院导师介绍:高尚
  17. 基础I/O【Linux】
  18. 区块链与大数据结合分析
  19. win10彻底关闭休眠状态(1909以上版本)
  20. 2020腾讯阅文集团-前端笔试题

热门文章

  1. 3D点云深度学习PointNet源码解析——pointnet_cls.py.py
  2. 使用pydicom实现Dicom文件读取与CT图像窗宽窗位调整
  3. JFinal 极速开发框架--5.ActiveRecord
  4. arcsde mysql_ArcSDE空间数据库安装配置问题
  5. 机器学习中的概率模型
  6. 电子体温计方案温度传感器的解析
  7. 零基础学电路(一):白噪声电子催眠器电子温度计
  8. 通过抓包判断是否支持 802.11k and 11r
  9. python写一个简单的接口
  10. 重启网卡提示Bringing up interface eth0