Browse Source

refactor(ble_service): 移除MTU检查和音频发送限制

移除MTU大小检查和音频数据分片发送逻辑,简化音频发送流程
weicu
lxm 1 year ago
parent
commit
0f7d39daf3
  1. 22
      local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt

22
local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/BleService.kt

@ -866,7 +866,7 @@ object BleService {
setupNotifications(g, notifyChar) setupNotifications(g, notifyChar)
// 在服务发现完成后,请求最大MTU // 在服务发现完成后,请求最大MTU
requestMaxMtu(g) //requestMaxMtu(g)
} }
@ -1097,7 +1097,7 @@ object BleService {
// 从队列中取出音频数据块 // 从队列中取出音频数据块
val audioChunk = audioSendQueue.poll(100, TimeUnit.MILLISECONDS) val audioChunk = audioSendQueue.poll(100, TimeUnit.MILLISECONDS)
if (audioChunk != null&&!isWaitingForWriteCallback) { if (audioChunk != null) {
// 发送音频数据块并等待回调 // 发送音频数据块并等待回调
sendAudioChunkWithCallback(audioChunk) sendAudioChunkWithCallback(audioChunk)
Thread.sleep(AUDIO_SEND_INTERVAL) Thread.sleep(AUDIO_SEND_INTERVAL)
@ -1138,14 +1138,14 @@ object BleService {
return return
} }
// 检查数据块大小是否超过当前MTU限制 // // 检查数据块大小是否超过当前MTU限制
val maxDataSize = currentMtu - 5 // 减去ATT头部5字节 // val maxDataSize = currentMtu - 5 // 减去ATT头部5字节
if (chunk.size > maxDataSize) { // if (chunk.size > maxDataSize) {
Log.w(TAG, "数据块过大 (${chunk.size} > $maxDataSize),分片发送") // Log.w(TAG, "数据块过大 (${chunk.size} > $maxDataSize),分片发送")
// 分片发送 // // 分片发送
sendChunksInFragments(chunk, maxDataSize) // sendChunksInFragments(chunk, maxDataSize)
return // return
} // }
// 在主线程中执行蓝牙写入操作 // 在主线程中执行蓝牙写入操作
audioSendHandler.post { audioSendHandler.post {
@ -1166,7 +1166,7 @@ object BleService {
isWaitingForWriteCallback = false isWaitingForWriteCallback = false
recordfile1?.saveAudioDataToWav("发送失败,大小: ${chunk.size} 字节") recordfile1?.saveAudioDataToWav("发送失败,大小: ${chunk.size} 字节")
Log.e(TAG, "发送音频数据块失败,大小: ${chunk.size} 字节") Log.e(TAG, "发送音频数据块失败,大小: ${chunk.size} 字节")
analyzeWriteFailure(chunk) // analyzeWriteFailure(chunk)
} }
} catch (e: Exception) { } catch (e: Exception) {

Loading…
Cancel
Save