首页 > 其他分享 >Android 音频采集/音频播放【AudioTrack、AudioRecord】

Android 音频采集/音频播放【AudioTrack、AudioRecord】

时间:2024-10-16 15:52:56浏览次数:9  
标签:AudioTrack 音频 private AudioRecord var import android null com

项目中遇到需求,采集音频上传至公司编译的sdk内,播放sdk传递过来的音频,所以自行实现了一个采集音频与播放音频的方法

代码:


import android.Manifest
import android.app.Activity
import android.content.pm.PackageManager
import android.media.AudioFormat
import android.media.AudioManager
import android.media.AudioRecord
import android.media.AudioTrack
import android.media.MediaRecorder
import android.media.audiofx.AcousticEchoCanceler
import android.util.Log
import android.widget.LinearLayout
import androidx.core.app.ActivityCompat
import com.brainmed.mvdplayer.OpenTalkingBean
import com.google.gson.Gson
import com.lzf.easyfloat.EasyFloat
import com.mohism.medtion.ext.gone
import com.mohism.medtion.ext.visible
import com.mohism.medtion.ui.elab.player.NyhMvdPlayerManger
import com.mohism.medtion.ui.elab.player.enums.NyhMvdErrorEnum
import java.io.ByteArrayOutputStream
import java.util.Arrays
import java.util.concurrent.LinkedBlockingQueue

/**
* @author 马自强
*
* 2024-02-22 10:00:00
*
* 对讲功能
*/
class NyhMvdVoiceManger private constructor() {
//服务器Id
var hDevice: Long? = null
var isTalkingOpen = false
private var isVoice = false
private var audioRecord: AudioRecord? = null
private val outputStream = ByteArrayOutputStream()
private var audioTrack: AudioTrack? = null
private val audioDataQueue = LinkedBlockingQueue<ByteArray>() // 使用线程安全的队列类
private val len = 1024
private val buffer = ByteArray(len)

// 声明线程变量以便后续关闭
private var audioCaptureThread: Thread? = null
private var audioPlayThread: Thread? = null

private var mActivity: Activity? = null
private val channelConfig = AudioFormat.CHANNEL_IN_DEFAULT
private var bufferSize = 0

companion object {
// 使用volatile关键字确保可见性和禁止指令重排序
@Volatile
private var mInstance: NyhMvdVoiceManger? = null

@JvmStatic
fun instance(): NyhMvdVoiceManger {
// 双重检查锁定,确保线程安全
if (mInstance == null) {
synchronized(this) {
if (mInstance == null) {
mInstance = NyhMvdVoiceManger()
}
}
}
return mInstance!!
}
}

/**
*

标签:AudioTrack,音频,private,AudioRecord,var,import,android,null,com
From: https://blog.csdn.net/maziqiang1993/article/details/135462637

相关文章

  • Spleeter: 音频源分离的革命性工具
    Spleeter:音频源分离的革命性工具Spleeter是由音乐流媒体公司Deezer开发的一款强大的音频源分离工具。作为一个开源项目,Spleeter利用深度学习技术,为音乐制作和音频处理领域带来了革命性的变化。本文将深入探讨Spleeter的功能、应用场景以及它在音频处理领域的重要意义。Splee......
  • Android15车载音频之Virtualbox中QACT实时调试(八十八)
    简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十九章 音频录制实验
    第二十九章音频录制实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • 文字转语音软件有哪些?5款实用软件让你轻松制作音频
    说到智能配音软件,你肯定也有过这样的时刻:眼睛盯着屏幕,文字像蚂蚁一样爬来爬去,就是不想读。或者,你的眼睛已经疲惫不堪,但工作还得继续。这时候,一款好的智能配音软件就能派上大用场了。它能帮你把枯燥的文字变成生动的语音,让你的耳朵也能享受阅读的乐趣。但市面上的选择那么多,智......
  • c++设置windons默认输出音频设备
    c++设置windons默认输出音频设备主要功能是控制默认输出的音频设备进行切换。本文主要教导如何使用c++进行控制代码示例#include<windows.h>#include<mmdeviceapi.h>#include<iostream>#include<functiondiscoverykeys_devpkey.h>#include<vector>#include"......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十八章 音频播放实验
    第二十八章音频播放实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • 音频播放速度太慢怎么加快?加快音频播放速度的六种方法
    在数字时代,音频内容已成为我们日常生活中不可或缺的一部分。无论是学习语言、聆听播客、享受音乐还是参与在线课程,音频的播放速度往往影响着我们的效率与体验。有时,我们希望加快播放速度以节省时间;有时,我们又需要减慢速度以更好地理解细节。那么,如何改变音频播放速度呢?本文将详......
  • Android车载音频系统概览
    目录1.什么是Android车载音频系统2.Android声音和声音流2.1Android声音2.2外部声音流2.3输出设备章节说明:本节内容是Android车载音频系统简介。1.什么是Android车载音频系统官方英文名称是:Automotiveaudiosystems由于汽车上无论是音频设备的数量还是......
  • JUCE - 音频
    官方文档:https://juce.com/learn/tutorials/1、构建音频播放器本教程介绍如何打开和播放声音文件。其中包括一些在JUCE中处理声音文件的重要类。级别:中级平台: Windows、macOS、Linux类: AudioFormatManager、AudioFormatReader、AudioFormatReaderSource、AudioTransportS......
  • 音频采样率转换的研究与代码实现
    音频采样率转换本文原始版本发布于https://www.52pojie.cn/thread-1959816-1-1.html,此处进行了适当的精简,同时更新了一下代码(最新代码以GitHub仓库为准)。前言两年前,我研究了WASAPI播放音频的方法,详见https://www.cnblogs.com/PeaZomboss/p/17035785.html,挖了个坑,就是重采......