Android录制和播放AudioRecord和AudioTrack

1package com.esa.audio; 2 3import android.media.AudioFormat; 4import android.media.AudioManager; 5import android.media.AudioRecord; 6import android.media.AudioTrack; 7import android.media.MediaRecorder; 8 9public class Audio { 10 11 public static final int AUDIO_SOURCE = MediaRecorder.AudioSource.MIC; 12 public static final int STREAM_TYPE = AudioManager.STREAM_MUSIC; 13 public static final int SAMPLE_RATE_IN_HZ = 8000;// 44100 14 public static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO;// AudioTrack和AudioRecord都能用 15 public static final int RECORD_CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; 16 public static final int TRACK_CHANNEL_CONFIG = AudioFormat.CHANNEL_OUT_MONO; 17 public static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; 18 public static final int TRACK_BUFFER_SIZE_IN_BYTES = AudioTrack.getMinBufferSize(SAMPLE_RATE_IN_HZ, TRACK_CHANNEL_CONFIG, AUDIO_FORMAT); 19 public static final int RECORD_BUFFER_SIZE_IN_BYTES = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ, RECORD_CHANNEL_CONFIG, AUDIO_FORMAT);; 20 public static final int MODE = AudioTrack.MODE_STREAM; 21 22 private static Audio audio; 23 private AudioTrack track = null; 24 private AudioRecord record = null; 25 26 public static Audio getAudio() { 27 if (audio == null) { 28 audio = new Audio(); 29 } 30 return audio; 31 } 32 33 public AudioTrack getTrack() { 34 if (track == null) { 35 track = new AudioTrack(STREAM_TYPE, SAMPLE_RATE_IN_HZ, TRACK_CHANNEL_CONFIG, AUDIO_FORMAT, TRACK_BUFFER_SIZE_IN_BYTES, MODE); 36 } 37 return track; 38 } 39 40 public AudioRecord getRecord() { 41 if (record == null) { 42 record = new AudioRecord(AUDIO_SOURCE, SAMPLE_RATE_IN_HZ, RECORD_CHANNEL_CONFIG, AUDIO_FORMAT, RECORD_BUFFER_SIZE_IN_BYTES); 43 } 44 return record; 45 } 46 47 public void releaseRecord() { 48 if (record != null) { 49 record.stop(); 50 record.release(); 51 } 52 record = null; 53 } 54 55 public void releaseTrack() { 56 if (track != null) { 57 track.stop(); 58 track.release(); 59 } 60 track = null; 61 } 62}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )