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