diff --git a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt index 354382df6..06dddc96b 100644 --- a/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt +++ b/local_plugins/ble_service/android/src/main/kotlin/com/yunqiinnovation/ble_service/OpusAudioManager.kt @@ -9,9 +9,6 @@ import com.jieli.jl_audio_decode.callback.OnDecodeStreamCallback import com.jieli.jl_audio_decode.callback.OnEncodeStreamCallback import com.jieli.jl_audio_decode.opus.OpusManager import com.jieli.jl_audio_decode.exceptions.OpusException -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale import java.util.concurrent.LinkedBlockingQueue import java.util.concurrent.atomic.AtomicBoolean @@ -117,10 +114,8 @@ class OpusAudioManager { @Volatile private var capturedSilence: ByteArray? = null - // 上下文:用于双声道编码模式下,分别为左右声道写入 mono PCM WAV 调试文件 + // 上下文:用于上行解码后 PCM 的 WAV 调试文件写入(decodePcmWavWriter) private var appContext: Context? = null - private var leftPcmWavWriter: WavFileWriter? = null - private var rightPcmWavWriter: WavFileWriter? = null // 上行(设备→手机)opus 解码后 PCM 的 WAV 调试文件:命名「翻译-上行」,opus_test 可直接播放听辨 private var decodePcmWavWriter: WavFileWriter? = null @@ -154,8 +149,8 @@ class OpusAudioManager { /** * 初始化Opus音频管理器 - * @param context 应用上下文,用于双声道编码模式下的 PCM WAV 调试文件写入; - * 不传则跳过 PCM WAV 调试文件落盘,其他功能不受影响 + * @param context 应用上下文,用于上行解码后 PCM 的 WAV 调试文件写入(decodePcmWavWriter,命名「翻译-上行」); + * 不传则跳过该落盘,其他功能不受影响 * @return 是否初始化成功 */ fun initialize(context: Context? = null): Boolean { @@ -472,8 +467,6 @@ class OpusAudioManager { capturedSilence = null - openPcmWavWriters(sampleRate) - fun makeOption() = OpusOption().apply { setHasHead(hasHeader) setChannel(1) @@ -530,7 +523,6 @@ class OpusAudioManager { try { rightEncodeManager?.stopEncodeStream() } catch (e: Exception) { Log.e(TAG, "停止右声道编码异常", e) } try { silenceEncodeManager?.stopEncodeStream() } catch (e: Exception) { Log.e(TAG, "停止静音编码异常", e) } capturedSilence = null - closePcmWavWriters() callback?.onEncodeStreamStateChanged(false) CallLog.i(TAG, "双声道独立编码流已停止") return true @@ -577,7 +569,6 @@ class OpusAudioManager { return } if (pcm.isEmpty()) return - leftPcmWavWriter?.writePcmData(pcm) leftEncodeManager?.writeEncodeStream(pcm) } @@ -590,7 +581,6 @@ class OpusAudioManager { return } if (pcm.isEmpty()) return - rightPcmWavWriter?.writePcmData(pcm) rightEncodeManager?.writeEncodeStream(pcm) } @@ -610,11 +600,9 @@ class OpusAudioManager { val silence = ByteArray(paddingMs * 32) when (channel) { CHANNEL_LEFT -> { - leftPcmWavWriter?.writePcmData(silence) leftEncodeManager?.writeEncodeStream(silence) } CHANNEL_RIGHT -> { - rightPcmWavWriter?.writePcmData(silence) rightEncodeManager?.writeEncodeStream(silence) } else -> { @@ -626,32 +614,6 @@ class OpusAudioManager { } - private fun openPcmWavWriters(sampleRate: Int) { - val ctx = appContext ?: return - try { - val ts = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date()) - leftPcmWavWriter = WavFileWriter(ctx).also { - val ok = it.createWavFile("pcm_left_$ts", sampleRate, 1, 16) - if (!ok) leftPcmWavWriter = null - } - rightPcmWavWriter = WavFileWriter(ctx).also { - val ok = it.createWavFile("pcm_right_$ts", sampleRate, 1, 16) - if (!ok) rightPcmWavWriter = null - } - } catch (e: Exception) { - Log.e(TAG, "创建 PCM WAV 调试文件失败: ${e.message}", e) - leftPcmWavWriter = null - rightPcmWavWriter = null - } - } - - private fun closePcmWavWriters() { - try { leftPcmWavWriter?.closeWavFile() } catch (e: Exception) { Log.e(TAG, "关闭左声道 PCM WAV 失败", e) } - try { rightPcmWavWriter?.closeWavFile() } catch (e: Exception) { Log.e(TAG, "关闭右声道 PCM WAV 失败", e) } - leftPcmWavWriter = null - rightPcmWavWriter = null - } - /** * 打开上行(设备→手机)解码后 PCM 的 WAV 落地文件。 * 命名「翻译-上行」前缀,写到 getExternalFilesDir,opus_test 扫描到 .wav 直接播放听辨;