亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Android開發中播放聲音的兩種方法分析

發布時間:2020-09-07 17:54:13 來源:腳本之家 閱讀:143 作者:pku_android 欄目:移動開發

本文實例講述了Android開發中播放聲音的兩種方法。分享給大家供大家參考,具體如下:

在Android中,音頻、視頻等多媒體元素的加入,使得應用程序的用戶體驗更好。可以說,現在的手機,已經遠遠不只作為通信工具,更成為娛樂、辦公的必備產品。

Android提供了簡單的音頻API。一般大家使用的是MediaPlayer播放音頻,這也是最常見的一種播放聲音的工具。這種工具在互聯網上有大量的實例,因此在此只做簡單的介紹。

對播放行為的控制是三個大家非常熟悉的方法:start()stop()pause()

通過static MediaPlayer create(Context, Uri)這個方法,可以獲得一個新創建的MediaPlayer對象。

在播放過程中,有幾個可以監聽播放過程的監聽器,如:

setOnCompletionListener(MediaPlayer.OnCompletionListener listener)

監聽音頻播放結束;

setOnErrorListener(MediaPlayer.OnErrorListener listener)

監聽播放過程中的錯誤事件;

setOnPreparedListener(MediaPlayer.OnPreparedListener listener)

prepare()被調用時觸發。

然而,使用MediaPlayer播放時,也有一些問題。我們知道MediaPlayer在創建和銷毀時都會耗費大量的系統資源,且創建和銷毀的時間相對較長。此外,如果我們需要在同一時刻播放很多聲音,MediaPlayer是不支持的。

因此,我們需要一個更加輕量級的聲音播放工具。

Android提供了另外一種,叫做SoundPool,它適合播放那些需要反復播放,但時間較短的音效。它支持同時播放多種聲音,這些聲音在系統開始時會加載到列表中,按照這些聲音的id,我們可以調用這些音效。

下面我們進入一個實例看看SoundPool到底是怎么工作的。

例如,現在在一個五子棋游戲中,我們需要在棋子落盤的時候播放一段聲音。我們可以利用SoundPool,因為它時間很短,而且需要反復播放,并且我們不希望聲音占用太大資源。

先看看代碼:

private SoundPool soundPool;
soundPool= newSoundPool(10,AudioManager.STREAM_SYSTEM,5);
soundPool.load(this,R.raw.collide,1);
soundPool.play(1,1, 1, 0, 0, 1);

代碼非常簡單,第一行是聲明了一個SoundPool對象,這個一般是作為類的成員屬性出現的。第二行將soundPool實例化,第一個參數為soundPool可以支持的聲音數量,這決定了Android為其開設多大的緩沖區,第二個參數為聲音類型,在這里標識為系統聲音,除此之外還有AudioManager.STREAM_RING以及AudioManager.STREAM_MUSIC等,系統會根據不同的聲音為其標志不同的優先級和緩沖區,最后參數為聲音品質,品質越高,聲音效果越好,但耗費更多的系統資源。

第三行,系統為soundPool加載聲音,第一個參數為上下文參數,第二個參數為聲音的id,一般我們將聲音信息保存在res的raw文件夾下,如下圖所示。

Android開發中播放聲音的兩種方法分析

第三個參數為聲音的優先級,當多個聲音沖突而無法同時播放時,系統會優先播放優先級高的。

第四行就是播放了,第一個參數為id,id即為放入到soundPool中的順序,比如現在collide.wav是第一個,因此它的id就是1。第二個和第三個參數為左右聲道的音量控制。第四個參數為優先級,由于只有這一個聲音,因此優先級在這里并不重要。第五個參數為是否循環播放,0為不循環,-1為循環。最后一個參數為播放比率,從0.5到2,一般為1,表示正常播放。

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開發入門與進階教程》、《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android數據庫操作技巧總結》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結》

希望本文所述對大家Android程序設計有所幫助。

向AI問一下細節

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

AI

晋江市| 高台县| 和顺县| 曲水县| 新丰县| 永嘉县| 行唐县| 贡山| 桃江县| 博爱县| 吐鲁番市| 大荔县| 高安市| 交口县| 蕉岭县| 茌平县| 泰来县| 若尔盖县| 赤峰市| 汕头市| 和硕县| 阿城市| 凌云县| 弥勒县| 海原县| 大石桥市| 德兴市| 汶上县| 扎鲁特旗| 宜兴市| 绥化市| 逊克县| 双柏县| 清流县| 兴隆县| 灵武市| 阳江市| 津南区| 宁强县| 绍兴县| 靖西县|