HarmonyOS 不同的soundpool加载不同的声音,播放时只要soundid相同播放的声音也相同怎么解决?
由于现在需要加载60个声音如果只创建一个soundpool加载60个声音时会出现界面卡死,所以需要创建多个soundpool但是出现以下问题。以下代码soundPool1加载的声音是“one.ogg(对应按钮测试一)和“two.ogg(对应按钮测试二)”,soundPool2加载的声音是“three.ogg(对应按钮测试三)”和“four.ogg(对应按钮测试四)“,播放的时候按钮一却播放"three.ogg"声音,请问怎么解决。
import { media } from '@kit.MediaKit'; 
import { audio } from '@kit.AudioKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
import { common } from '@kit.AbilityKit'; 
import fs from '@ohos.file.fs'; 
let audioRendererInfo: audio.AudioRendererInfo = { 
  usage: audio.StreamUsage.STREAM_USAGE_MOVIE, 
  rendererFlags: 0 
} 
let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; 
@Entry 
@Component 
struct BorderExample3 { 
  soundId1 : number = 0; 
  soundId2 : number = 0; 
  soundId3 : number = 0; 
  soundId4 : number = 0; 
  soundPool1?: media.SoundPool 
  soundPool2?: media.SoundPool 
  async aboutToAppear(): Promise<void> { 
    let file1 = context.resourceManager.getRawFdSync('one.ogg'); 
    let file2 = context.resourceManager.getRawFdSync('two.ogg'); 
    let file3 = context.resourceManager.getRawFdSync('three.ogg'); 
    let file4 = context.resourceManager.getRawFdSync('four.ogg'); 
    this.soundPool1 = await media.createSoundPool(2,audioRendererInfo); 
    this.soundId1 = await this.soundPool1.load(file1.fd, file1.offset, file1.length) 
    this.soundId2 = await this.soundPool1.load(file2.fd, file2.offset, file2.length) 
    console.log("sound1",this.soundId1)//1 
    console.log("sound2",this.soundId2)//2 
    this.soundPool2 = await media.createSoundPool(2,audioRendererInfo); 
    this.soundId3 = await this.soundPool2.load(file3.fd, file3.offset, file3.length) 
    this.soundId4 = await this.soundPool2.load(file4.fd, file4.offset, file4.length) 
    console.log("sound3",this.soundId3)//1 
    console.log("sound4",this.soundId4)//2 
  } 
  build() { 
    Column() { 
      Button("测试1").onClick(() => { 
        this.soundPool1?.play(this.soundId1) 
      }) 
      Button('测试2').onClick(() => { 
        this.soundPool1?.play(this.soundId2) 
      }) 
      Button('测试3').onClick(() => { 
        this.soundPool2?.play(this.soundId3) 
      }) 
      Button('测试4').onClick(() => { 
        this.soundPool2?.play(this.soundId4) 
      }) 
    } 
  } 
 
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS soundpool播放声音的问题 
1545浏览  • 1回复 待解决
HarmonyOS AudioKit C API实现音频播放,连接蓝牙后,声音播放异常(有突突的声音) 
1454浏览  • 1回复 待解决
HarmonyOS 无法暂停声音播放 
915浏览  • 1回复 待解决
HarmonyOS 使用Avplayer播放音乐,同时再播放其他音效会导致正在播放的音乐声音变小然后恢复原来的声音大小 
942浏览  • 1回复 待解决
应用中不同模块的UIAbility名称能否相同 
2720浏览  • 1回复 待解决
HarmonyOS App,在Native层如何做声音播放和声音采集? 
1267浏览  • 1回复 待解决
后台播放声音会直接无声 
3966浏览  • 1回复 待解决
HarmonyOS Navigation跳转实现,无法正常关闭具有相同实现的不同页面 
1715浏览  • 1回复 待解决
鸿蒙使用webview加载游戏,应用在后台依然会播放声音,请问下大佬们怎么解决呢? 
8890浏览  • 4回复 待解决
不同的hap使用相同的so,在打最终包的时候可以进行合并 
1465浏览  • 1回复 待解决
HarmonyOS ohaudio native播放音频声音有问题 
1313浏览  • 1回复 待解决
如何在多个相同类型的picker组件中赋不同值? 
5635浏览  • 1回复 待解决
HarmonyOS 音频通信场景下开启音频采集和播放,采集的音频中有播放的声音内容,回声消除不干净 
1025浏览  • 1回复 待解决
HarmonyOS 画中画开启后,进入参数不同但组件相同的页面时,如何重新渲染页面 
967浏览  • 1回复 待解决
HarmonyOS 快门声音怎么实现 
905浏览  • 1回复 待解决
#鸿蒙学习大百科#如何解决不同父组件中的相同子组件无法复用的问题? 
1137浏览  • 1回复 待解决
如何实现在多种设备上不同操作,触发相同事件 
2674浏览  • 1回复 待解决
SoundPool播放的音频是否支持WMV格式 
2815浏览  • 1回复 待解决
HarmonyOS 使用XComponent和AvPlayer播放视频出现有声音无画面问题 
1406浏览  • 1回复 待解决
在不同页面创建相同id的XComponent时在C++层是否对应同一个实例 
3381浏览  • 1回复 待解决
HarmonyOS 在web组件中播放音频没有声音,手指触摸一下h5页面才有声音 
1107浏览  • 1回复 待解决
SoundPool实现音频播放功能 
3729浏览  • 1回复 待解决
HarmonyOS SoundPool播放rawfile音频失败 
975浏览  • 1回复 待解决
HarmonyOS 动态加载的时候,模块名是动态的怎么就加载不了,值应该是相同的 
786浏览  • 1回复 待解决
HarmonyOS 不同中心仓重名的问题怎么解决 
774浏览  • 1回复 待解决





















soundpool不支持多实例,多次创建对应的是同个实例,同时media.createSoundPool()会清空内容重新初始化。soundpool当前最多支持32个并行流,可以在需要加载第33个音频时,将之前加载的音频通过unload卸载掉。