iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
2
Software Development

高中生Kotlin實作30天系列 第 4

Day 04 貓咪鋼琴(下) (Sound Pool)

  • 分享至 

  • xImage
  •  

接續上篇,今天要加入音效的部分

Resource

準備一組八度音的音效,並在res資料夾中建立raw資料夾,將檔案放入

Method

SoundPool

Sound Pool可用於播放聲音,所占資源和延遲較少,但無法撥放超過1mb的檔案,所以適合撥放較短的音效

  • 取得SoundPool物件
    使用setMaxStreams設定SoundPool中音效的最大上限
var soundpool = SoundPool.Builder()
                .setMaxStreams(8)
                .build()
  • 載入音效
    使用.load載入要撥放的音效
    參數由左至右是
    • context
    • 音訊檔位置
    • 優先級(最小為0,預設為0)
var C = soundpool.load(this, R.raw.c, 1)
  • 播放音效
    使用.play撥放音效
    參數由左至右是
    • 撥放ID(streamID: Int)
      • 由load指定,以這邊為例就是前面的變數C
    • 左聲道音量,右聲道音量(leftVolume: Float, rightVolume: Float)
      • 範圍0.0~1.0
    • 優先級(priority: Int)
      • 最小為0,預設為0
    • 重複撥放(loop: Int)
      • 0=不重複,-1=無限重複,其他正數為+1播放次數
    • 速度(rate: Float)
      • 範圍0.5~2.0,1=正常速度
soundpool.play(C, 1.0f, 1.0f, 0, 0, 1.0f)
  • 其他常用方法
    • autoPause() 暫停所有撥放
    • autoResume() 恢復所有暫停的撥放
    • pause(streamID: Int) 暫停撥放
    • resume(streamID: Int) 恢復撥放
    • stop(streamID: Int) 停止撥放

實作成果

Yes


上一篇
Day03 貓咪鋼琴(上)(OnTouchListener)
下一篇
Day05 計時器(Thread + 格式化字串)
系列文
高中生Kotlin實作30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
黑貓仔
iT邦新手 5 級 ‧ 2019-09-20 10:37:25

我這個人很簡單,有貓我就讚

我要留言

立即登入留言