|
|
|
@ -85,7 +85,8 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
* 初始化音频录制 |
|
|
|
*/ |
|
|
|
fun initAudioRecord() { |
|
|
|
|
|
|
|
val format = getOptimalAudioFormat() |
|
|
|
pushAudioStream = AudioInputStream.createPushStream(format) |
|
|
|
isRunning.set(true) |
|
|
|
Log.d(TAG, "initAudioRecord: ${isRunning}") |
|
|
|
startWriteThread() // 再启动数据读取线程 |
|
|
|
@ -142,7 +143,7 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
if(audioDataCallback!=null){ |
|
|
|
audioDataCallback?.onAudio(finalData) |
|
|
|
} |
|
|
|
if(pushAudioStream!=null){ |
|
|
|
if(pushAudioStream!=null&&audioDataCallback==null){ |
|
|
|
pushAudioStream?.write(finalData) |
|
|
|
} |
|
|
|
if(recordfile!=null){ |
|
|
|
@ -184,8 +185,6 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
* @param callback 音频数据回调,可为空 |
|
|
|
*/ |
|
|
|
fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallback?) { |
|
|
|
val format = getOptimalAudioFormat() |
|
|
|
pushAudioStream = AudioInputStream.createPushStream(format) |
|
|
|
this.audioSourceType = audioSourceType |
|
|
|
this.audioDataCallback = callback |
|
|
|
writeQueue.clear() |
|
|
|
@ -240,8 +239,6 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
try { |
|
|
|
// 首先设置通话音频模式 |
|
|
|
//setupCommunicationAudioMode() |
|
|
|
|
|
|
|
|
|
|
|
val supportedSampleRates = intArrayOf(16000, 8000, 11025, 22050, 44100) |
|
|
|
val sampleRate = supportedSampleRates.firstOrNull { rate -> |
|
|
|
val bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat) |
|
|
|
@ -278,7 +275,7 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
} |
|
|
|
|
|
|
|
audioRecord?.startRecording() |
|
|
|
|
|
|
|
|
|
|
|
Log.d("TAG", "通话模式录音开始,采样率: $sampleRate Hz") |
|
|
|
|
|
|
|
} catch (e: Exception) { |
|
|
|
@ -316,7 +313,8 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
//setupCommunicationAudioMode() |
|
|
|
// 停止录音 |
|
|
|
audioRecord?.startRecording() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (e: Exception) { |
|
|
|
Log.e(TAG, "继续录音失败: ${e.message}") |
|
|
|
} |
|
|
|
@ -331,11 +329,7 @@ class SimpleAudioReceiver(private val context: Context) { |
|
|
|
|
|
|
|
// 停止录音 |
|
|
|
audioRecord?.stop() |
|
|
|
|
|
|
|
if(pushAudioStream != null){ |
|
|
|
pushAudioStream?.close() |
|
|
|
pushAudioStream = null |
|
|
|
} |
|
|
|
|
|
|
|
// 恢复音频模式 这里会导致关闭麦克风卡住待优化 |
|
|
|
//restoreCommunicationAudioMode() |
|
|
|
|
|
|
|
|