Browse Source

上传 等待音效

weicu
liwei1dao 1 year ago
parent
commit
1899e89608
  1. 33
      local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt
  2. BIN
      local_plugins/agent_service/android/src/main/res/raw/await.mp3
  3. 1
      local_plugins/agent_service/ios/agent_service/Package.swift

33
local_plugins/agent_service/android/src/main/kotlin/com/yunqiinnovation/agent_service/AgentService.kt

@ -668,7 +668,7 @@ object AgentService : CoroutineScope {
try {
// 设置状态为正在流式输出
_isAiStreaming.set(true)
audioPlayer?.playAudio(R.raw.await, true,0.3f)
// 使用历史记录作为上下文发送到OpenAI
val responseBuilder = StringBuilder()
var aiMetadata:String = ""
@ -736,6 +736,9 @@ object AgentService : CoroutineScope {
responseBuilder.append(token)
if (speakResponse && broadcast) {
ttsService?.speakStream(token)
if (token.length > 0){
audioPlayer?.stopAudio()
}
}
if (broadcast){
// 发送流式回复token
@ -783,7 +786,7 @@ object AgentService : CoroutineScope {
override fun onFunctionCall(call: JSONObject) {
try {
audioPlayer?.playAudio(R.raw.calling, true)
// audioPlayer?.playAudio(R.raw.calling, true)
val name = call.getString("name")
sendEvent("function_call", mapOf(
"name" to name,
@ -1120,34 +1123,32 @@ object AgentService : CoroutineScope {
/**
* 播放音频资源
* @param resId 资源ID
* @param isLooping 是否循环播放
* @param volume 音量大小,范围0.0-1.0,默认1.0
*/
fun playAudio(resId: Int, isLooping: Boolean = false) {
fun playAudio(resId: Int, isLooping: Boolean = false, volume: Float = 1.0f) {
try {
// 释放之前的资源
release()
// 创建播放器并设置资源
mediaPlayer = MediaPlayer().apply {
// 设置资源
context.resources.openRawResourceFd(resId)?.use { fd ->
setDataSource(fd.fileDescriptor, fd.startOffset, fd.length)
}
// 播放完成后自动释放资源
this.isLooping = isLooping // 设置循环属性
setVolume(volume, volume) // 设置音量(左声道,右声道)
setOnCompletionListener {
release()
}
// 准备并播放
prepare()
if (isLooping) {
start()
} else {
start()
setOnCompletionListener {
if (!isLooping) {
release()
}
}
prepare()
start()
}
} catch (e: Exception) {
Log.e(TAG, "播放音频资源异常: ${e.message}", e)

BIN
local_plugins/agent_service/android/src/main/res/raw/await.mp3

Binary file not shown.

1
local_plugins/agent_service/ios/agent_service/Package.swift

@ -31,6 +31,7 @@ let package = Package(
path: "Sources/agent_service",
resources: [
.copy("Resources/calling.mp3"),
.copy("Resources/await.mp3"),
.copy("Resources/start.mp3"),
.copy("Resources/stop.mp3")
]

Loading…
Cancel
Save