91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android使用SoundPool播放音效實例

發布時間:2020-09-15 10:13:54 來源:腳本之家 閱讀:133 作者:安東尼肉店 欄目:移動開發

使用場景

SoundPool一般用來 播放密集,急促而又短暫的音效,比如特技音效:Duang~,游戲用得較多,你也可以為你的 APP添加上這個音效,比如酷狗音樂進去的時候播放"哈嘍,酷狗" 是不是提起了對于SoundPool的興趣了呢

ok,廢話不多說 詳細的參數解釋請看注釋

public class SoundPlayer extends AppCompatActivity {

  private SoundPool mSoundPool;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sound_player);

    initState();
  }

  private void initState() {
    //sdk版本21是SoundPool 的一個分水嶺
    if (Build.VERSION.SDK_INT >= 21) {
      SoundPool.Builder builder = new SoundPool.Builder();
      //傳入最多播放音頻數量,
      builder.setMaxStreams(1);
      //AudioAttributes是一個封裝音頻各種屬性的方法
      AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
      //設置音頻流的合適的屬性
      attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);
      //加載一個AudioAttributes
      builder.setAudioAttributes(attrBuilder.build());
      mSoundPool = builder.build();
    } else {
      /**
       * 第一個參數:int maxStreams:SoundPool對象的最大并發流數
       * 第二個參數:int streamType:AudioManager中描述的音頻流類型
       *第三個參數:int srcQuality:采樣率轉換器的質量。 目前沒有效果。 使用0作為默認值。
       */
      mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
    }

    //可以通過四種途徑來記載一個音頻資源:
    //context:上下文
    //resId:資源id
    // priority:沒什么用的一個參數,建議設置為1,保持和未來的兼容性
    //path:文件路徑
    // FileDescriptor:貌似是流吧,這個我也不知道
    //:從asset目錄讀取某個資源文件,用法: AssetFileDescriptor descriptor = assetManager.openFd("biaobiao.mp3");

    //1.通過一個AssetFileDescriptor對象
    //int load(AssetFileDescriptor afd, int priority)
    //2.通過一個資源ID
    //int load(Context context, int resId, int priority)
    //3.通過指定的路徑加載
    //int load(String path, int priority)
    //4.通過FileDescriptor加載
    //int load(FileDescriptor fd, long offset, long length, int priority)
    //聲音ID 加載音頻資源,這里用的是第二種,第三個參數為priority,聲音的優先級*API中指出,priority參數目前沒有效果,建議設置為1。
    final int voiceId = mSoundPool.load(this, R.raw.duang, 1);
    //異步需要等待加載完成,音頻才能播放成功
    mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
      @Override
      public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
        if (status == 0) {
          //第一個參數soundID
          //第二個參數leftVolume為左側音量值(范圍= 0.0到1.0)
          //第三個參數rightVolume為右的音量值(范圍= 0.0到1.0)
          //第四個參數priority 為流的優先級,值越大優先級高,影響當同時播放數量超出了最大支持數時SoundPool對該流的處理
          //第五個參數loop 為音頻重復播放次數,0為值播放一次,-1為無限循環,其他值為播放loop+1次
          //第六個參數 rate為播放的速率,范圍0.5-2.0(0.5為一半速率,1.0為正常速率,2.0為兩倍速率)
          soundPool.play(voiceId, 1, 1, 1, 0, 1);
        }
      }
    });
  }
  }

非常簡單的使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延长县| 保定市| 北碚区| 闻喜县| 扬中市| 淅川县| 岗巴县| 赞皇县| 永嘉县| 二连浩特市| 台南市| 淳安县| 抚顺市| 当涂县| 武夷山市| 梨树县| 广安市| 宁波市| 墨江| 连平县| 中卫市| 湖口县| 娄底市| 科尔| 阿荣旗| 磐安县| 平潭县| 华容县| 八宿县| 德昌县| 建始县| 炉霍县| 安义县| 拜泉县| 赞皇县| 桐梓县| 常州市| 同江市| 搜索| 谢通门县| 龙泉市|