Android使用SoundPool播放短音效

Android使用SoundPool播放短音效,第1张

概述Android使用SoundPool播放音效 前言 对于Android播放一些简短音效,例如提示音,或者铃声,相对于使用MediaPlayer,SoundPool可以节省更多资源,并且可以同时播放多个音效,而且可以针对不同音效设置不同播放品质 实现 SoundPool的具体作用,就不再阐述,直接贴代码 private SoundPool.Builder spBuilder; private SoundPool soundPool; private Integer[] fmSound = FmManager.getRawAudios(); i

前言

对于AndroID播放一些简短音效,例如提示音,或者铃声,相对于使用MediaPlayer,SoundPool可以节省更多资源,并且可以同时播放多个音效,而且可以针对不同音效设置不同播放品质

实现

SoundPool的具体作用,就不再阐述,直接贴代码

private SoundPool.Builder spBuilder;private SoundPool soundPool;private Integer[] fmSound = FmManager.getRawAudios(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LolliPOP) {      if (null == spBuilder) {        spBuilder = new SoundPool.Builder();        AudioAttributes.Builder builder = new AudioAttributes.Builder();        builder.setLegacyStreamType(AudioManager.STREAM_MUSIC);        spBuilder.setAudioAttributes(builder.build());        spBuilder.setMaxStreams(10);      }      if (null == soundPool) {        soundPool = spBuilder.build();      }    } else {      if (null == soundPool) {        soundPool = new SoundPool(10,AudioManager.STREAM_MUSIC,10); //最多播放10个音效,格式为Steam_music,音质为10      }    }    soundPool.setonLoadCompleteListener(this);    if (null == fmArray) {      fmArray = new SparseIntArray();    }    if (null == streamArray) {      streamArray = new SparseIntArray();    }    for (int i = 0; i < fmSound.length; i++) {      fmArray.put(i + 1,soundPool.load(this,fmSound[i],1));  //将需要播放的资源添加到SoundPool中,并保存返回的StreamID,通过StreamID可以停止某个音效    } private voID playFmByposition(int resultID) {    if (null == soundPool || resultID < 0 || fmArray == null || fmArray.size() < 0 || streamArray == null)      return;    LogUtils.e(resultID + "------------" + fmArray.size());    if (resultID < fmArray.size()) {      if (!FmPlaying.isPlay(resultID)) {        int fmPlayID = soundPool.play(fmArray.get(resultID + 1),1,-1,1);        streamArray.put(resultID,fmPlayID);        FmPlaying.setPlay(resultID,true);      } else {        soundPool.stop(streamArray.get(resultID));        streamArray.removeAt(resultID);        FmPlaying.setPlay(resultID,false);      }    }  }  static class FmPlaying {    private static SparseBooleanArray playArray = new SparseBooleanArray();    public static boolean isPlay(int position) {      return playArray.get(position,false);    }    public static voID setPlay(int position,boolean play) {      playArray.put(position,play);    }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

总结

以上是内存溢出为你收集整理的Android使用SoundPool播放短音效全部内容,希望文章能够帮你解决Android使用SoundPool播放短音效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1144261.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存