Browse Source

修复名称规范

newdev_shunjiawei
fdp 11 months ago
parent
commit
c8d170f2f3
  1. 68
      local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt

68
local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt

@ -82,11 +82,13 @@ class OpusAudioManager {
// ======================================================================================================
// Opus解码器实例
private var opusManager: OpusManager? = null
private var option: OpusOption? = null
//解码对象
private var decodeOpusManager: OpusManager? = null
private var decodeOption: OpusOption? = null
private var opusManager1: OpusManager? = null
private var option1: OpusOption? = null
//编码对象
private var encodeOpusManager: OpusManager? = null
private var encodeOption: OpusOption? = null
private val mainHandler = Handler(Looper.getMainLooper())
// 解码音频数据队列和处理线程
@ -124,11 +126,11 @@ class OpusAudioManager {
try {
// 初始化OpusManager和OpusOption
opusManager = OpusManager()
option = OpusOption()
decodeOpusManager = OpusManager()
decodeOption = OpusOption()
opusManager1 = OpusManager()
option1 = OpusOption()
encodeOpusManager = OpusManager()
encodeOption = OpusOption()
// 启动队列处理
startAudioQueueProcessing()
@ -178,10 +180,10 @@ class OpusAudioManager {
audioSendQueue.clear()
// 清理Opus相关资源
opusManager = null
option = null
opusManager1 = null
option1 = null
decodeOpusManager = null
decodeOption = null
encodeOpusManager = null
encodeOption = null
callback = null
isInitialized = false
@ -206,14 +208,14 @@ class OpusAudioManager {
sampleRate: Int = 16000,
packetSize: Int = 40
): Boolean {
if (!isInitialized || opusManager == null) {
if (!isInitialized || decodeOpusManager == null) {
Log.e(TAG, "OpusManager未初始化,无法开始解码")
return false
}
// 如果已经在解码流,先停止
if (opusManager?.isDecodeStream == true) {
opusManager?.stopDecodeStream()
if (decodeOpusManager?.isDecodeStream == true) {
decodeOpusManager?.stopDecodeStream()
Log.d(TAG, "已停止正在进行的Opus解码流")
}
@ -224,7 +226,7 @@ class OpusAudioManager {
}
// 配置解码参数
option?.apply {
decodeOption?.apply {
setHasHead(hasHeader)
setChannel(channel)
setSampleRate(sampleRate)
@ -234,10 +236,10 @@ class OpusAudioManager {
Log.d(TAG, "准备开始Opus数据流解码, 参数: hasHeader=$hasHeader, channel=$channel, sampleRate=$sampleRate, packetSize=$packetSize")
try {
opusManager?.startDecodeStream(option, object : OnDecodeStreamCallback {
decodeOpusManager?.startDecodeStream(decodeOption, object : OnDecodeStreamCallback {
override fun onDecodeStream(data: ByteArray?) {
if (data != null) {
val channelCount = option?.getChannel() ?: 1
val channelCount = decodeOption?.getChannel() ?: 1
if (channelCount >= 1) {
callback?.onAudioDataDecoded(data, channelCount)
} else {
@ -276,8 +278,8 @@ class OpusAudioManager {
* @return 是否成功停止解码
*/
fun stopDecodeStream(): Boolean {
if (opusManager?.isDecodeStream == true) {
opusManager?.stopDecodeStream()
if (decodeOpusManager?.isDecodeStream == true) {
decodeOpusManager?.stopDecodeStream()
// 清理音频数据缓存
synchronized(audioDataBuffer) {
@ -303,7 +305,7 @@ class OpusAudioManager {
return
}
if (opusManager?.isDecodeStream == true) {
if (decodeOpusManager?.isDecodeStream == true) {
// 将数据加入队列进行异步处理
audioDataQueue.offer(data)
} else {
@ -320,19 +322,19 @@ class OpusAudioManager {
* @return 是否成功开始编码
*/
fun startEncodeStream(): Boolean {
if (!isInitialized || opusManager1 == null) {
if (!isInitialized || encodeOpusManager == null) {
Log.e(TAG, "OpusManager未初始化,无法开始编码")
return false
}
// 如果已经在编码流,先停止
if (opusManager1?.isEncodeStream == true) {
if (encodeOpusManager?.isEncodeStream == true) {
Log.d(TAG, "Opus编码流已在运行")
return true
}
// 配置解码参数
option1?.apply {
encodeOption?.apply {
setHasHead(false)
setChannel(1)
setSampleRate(16000)
@ -340,7 +342,7 @@ class OpusAudioManager {
}
try {
Log.d(TAG, "准备开始Opus数据流编码")
opusManager1?.startEncodeStream(object : OnEncodeStreamCallback {
encodeOpusManager?.startEncodeStream(object : OnEncodeStreamCallback {
override fun onEncodeStream(data: ByteArray?) {
Log.d(TAG, "Opus编码回调收到数据,大小: ${data?.size ?: 0} bytes")
if (data != null) {
@ -386,8 +388,8 @@ class OpusAudioManager {
* @return 是否成功停止编码
*/
fun stopEncodeStream(): Boolean {
if (opusManager1?.isEncodeStream == true) {
opusManager1?.stopEncodeStream()
if (encodeOpusManager?.isEncodeStream == true) {
encodeOpusManager?.stopEncodeStream()
stopAudioSendThread() // 停止音频发送线程
Log.i(TAG, "已停止Opus数据流编码")
callback?.onEncodeStreamStateChanged(false)
@ -404,16 +406,16 @@ class OpusAudioManager {
* @param data 音频数据字节数组,通常为PCM格式
*/
fun writeExternalAudioData(data: ByteArray) {
if (!isInitialized || opusManager1 == null) {
if (!isInitialized || encodeOpusManager == null) {
Log.e(TAG, "OpusManager未初始化")
return
}
// 如果已经在编码流中,直接写入数据
if (opusManager1?.isEncodeStream == true) {
if (encodeOpusManager?.isEncodeStream == true) {
Log.d(TAG, "正在进行Opus编码流,写入音频数据")
// 将外部音频数据写入编码流
opusManager1?.writeEncodeStream(data)
encodeOpusManager?.writeEncodeStream(data)
} else {
Log.w(TAG, "Opus编码流未启动,无法写入音频数据")
}
@ -428,7 +430,7 @@ class OpusAudioManager {
* @return 是否正在解码
*/
fun isDecoding(): Boolean {
return opusManager?.isDecodeStream == true
return decodeOpusManager?.isDecodeStream == true
}
/**
@ -436,7 +438,7 @@ class OpusAudioManager {
* @return 是否正在编码
*/
fun isEncoding(): Boolean {
return opusManager1?.isEncodeStream == true
return encodeOpusManager?.isEncodeStream == true
}
/**
@ -488,7 +490,7 @@ class OpusAudioManager {
val audioData = audioDataQueue.take() // 阻塞等待
// 将音频数据写入Opus解码流
opusManager?.writeAudioStream(audioData)
decodeOpusManager?.writeAudioStream(audioData)
} catch (e: InterruptedException) {
Log.d(TAG, "音频队列处理线程被中断")

Loading…
Cancel
Save