Android mediaplayer 播放本地音樂檔案
上一個部落格講到了搜尋本地音樂檔案,那麼當搜尋到後,我們怎麼使用這個音樂檔案呢?當然是根據路徑來播放他,而要播放音樂,自然而然是要用到Android的mediaplayer這個類。
對於mediaplayer,大家應該都有些瞭解,所以就不累贅了,下面就講下他的流程
上面是mediaplayer的狀態圖,看得出mediaplayer有兩個極端的生命週期:idie還有end,當一個MediaPlayer物件被剛剛用new操作符建立或是呼叫了reset()方法後,它就處於Idle狀態。當呼叫了release()方法後,它就處於End狀態。這兩種狀態之間是MediaPlayer物件的生命週期。
例項化一個mediaplayer的方法有兩種,分別是:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//這時就不用呼叫setDataSource了
1.以new一個mediaplayer為例,當new了一個mediaplayer的時候,我們需要為他設定資料來源,通常有三個,一個是設定路徑,一個是設定流
如:
這個方法用來設定sdk中的檔案
(既得加上讀取記憶體卡的許可權)
還有:
這個方法是用來設定asset資料夾的,比如程式自帶的音樂檔案
<textarea style="width: 318px; height: 52px;" <font size="5">
根據路徑來播放,多為網路播放
(需要網路許可權)
當進入初始化狀態後,我們所需要的,是進行prepare狀態,如果不進行prepare狀態,呼叫start方法是無法響應的,這是因為在prepare狀態的時候,會進行開執行緒的
操作,而播放音樂又是一個耗記憶體的行為,所以需要開一個執行緒。有兩種方法(同步和非同步)可以使MediaPlayer物件進入Prepared狀態:要麼呼叫prepare()方法(同步),此方法返回就表示該MediaPlayer物件已經進入了Prepared狀態;要麼呼叫prepareAsync()方法(非同步),此方法會使此MediaPlayer物件進入Preparing狀態並返回,而內部的播放引擎會繼續未完成的準備工作。從圖解看出來,在從初始化到prepare狀態,基本都是呼叫前者,因為沒有未完成的準備工作
在這時候,我們就可以呼叫onstart方法來播放我們的音樂了,在播放的時候,我們可以設定他的各個引數,如,是否迴圈,而他的迴圈,就是我們音樂播放的“單曲迴圈”了,
好,在onstart方法中,可以切換到兩種狀態,一個是onstop狀態,一個是onpause狀態。
onpause:顧名思義,就是暫停,如果要繼續播放,需要重新呼叫onstart方法
onstop:就是停止,需要重新回到prepare狀態才可以播放,這時候,有兩個方法可以呼叫,詳情請看prepare那兒,這也就是為什麼有的播放器停止後從新開啟,可以停留在上回播放的seek中
細心的朋友應該看到了,有一個onseek方法,他的作用是使得mediaplayer播放的“時刻”改變,而且在onstart還有onpause都是通用的
當程式關閉,或則停止播放時,我們應該release一下,釋放下,
最後,提一下mediaplayer的exception,在一般情況下,由於種種原因一些播放控制操作可能會失敗,如不支援的音訊/視訊格式,缺少隔行掃描的音訊/視訊,解析度太高,流超時等原因,等等。因此,錯誤報告和恢復在這種情況下是非常重要的。有時,由於程式設計錯誤,在處於無效狀態的情況下呼叫了一個播放控制操作可能發生。在所有這些錯誤條件下,內部的播放引擎會呼叫一個由客戶端程式設計師提供的OnErrorListener.onError()方法。客戶端程式設計師可以通過呼叫
若當MediaPlayer處於其它(非idie)的狀態下,呼叫setDataSource()方法,會丟擲IllegalStateException異常。
MediaPlayer.setOnErrorListener(android.media.MediaPlayer.OnErrorListener)方法來註冊一旦發生錯誤,MediaPlayer物件會進入到Error狀態OnErrorListener.,這時候,播放自然而然停止的、
在Android的servicer中,可以看到他的描述“用來操作耗時的工作,如“播放音樂,網路等””,所以,我們應該把它放到server中去實現
對於mediaplayer類的檢視,看得出很多都是mative方法,所以c渣渣的我默默結束了這篇部落格
相關推薦
Android mediaplayer 播放本地音樂檔案
上一個部落格講到了搜尋本地音樂檔案,那麼當搜尋到後,我們怎麼使用這個音樂檔案呢?當然是根據路徑來播放他,而要播放音樂,自然而然是要用到Android的mediaplayer這個類。 對於mediapl
使用libvlc簡單的播放一首本地音樂檔案
#include <iostream> #include <unistd.h> #include "vlc/vlc.h" #include "libvlc.h" #include "libvlc_media_player.h" #include "log_
Android之簡單本地音樂播放器
平臺:Android studio 本地的音樂播放器,主要功能就是可以播放音樂,能夠讀取本地的音樂,並顯示出來,播放,暫停,上一首,下一首,進度條可以拖拽播放,添加了前臺service,看一下實現 首先我是先做了一個大概的佈局,樣子先出來,需要其他的空間後期
Android基礎之本地音樂後臺播放
使用service後臺播放音樂,彈出通知public class MainActivity extends Activity { private MusicAdpater adapter; private IMusicPlay mMusicPlay; private
Android MediaPlayer 播放各種來源的音訊檔案,特效控制
MediaPlayer通過資源ID播放Raw目錄下音訊資原始檔: MediaPlayer mMediaPlayer; mMediaPlayer = MediaPlayer.create(th
IOS 播放本地音樂(播放記憶體卡中的MP3) 及 檔案的寫入
在IOS開發中, 每一個應用程式都擁有一個Documents的資料夾來存放自己的檔案。 在這裡為了測試, 我們首先得把mp3檔案匯入到專案中。 然後讀出資源裡的mp3檔案,寫入到documents中, 然後再從documents中讀取該mp3檔案來播放。 (在實際當中也許我
iOS音頻播放之AudioQueue(一):播放本地音樂
init方法 函數 完成 一起 utc getprop 應用 清洗 spl AudioQueue簡單介紹 AudioStreamer說明 AudioQueue具體
Android Studio載入本地aar檔案
如果要在Android Studio中引用本地的aar檔案:mylib.aar,步驟如下: 1.在需要引用mylib.aar的Module,比如:MyModule的根目錄下新建目錄:libs,然後把mylib.aar複製到此目錄下。 2.在MyModule的build.gradle中,新增如下定
Android MediaPlayer播放raw資源封裝類
import android.content.Context; import android.media.MediaPlayer; import com.bhuitong.yibaocan.R; public class MediaUtil { MediaPlayer mPlay
linux下如何利用瀏覽器播放本地flv檔案
雖然這裡我寫的東西比較少,比較簡單,你看了可能覺得,哇,這麼簡單。但是 ,到達這裡之前,我真的是找了好久,才知道這個方法。 ------------------------------------------------------我是華麗的分割線--------------
android app 讀取本地.db檔案,實現不變資料本地化(附小demo)
今天是正月十三,作為壽星的我依然奮鬥在工作中,醉了。-------------喧囂的成人世界,守住本真的心。 在專案中,有一部分資料,雖然是從介面拿取的,但是這些資料有個特點,就是一般不會再去改變了。對於這樣的資料來說,我是絕對不會每次用都去調介面,請求資料需要時間,需
Android MediaPlayer 播放器網路音訊播放總結
在近期的Android 系統MediapPalyer使用中,碰到了不少問題。其中一些問題也是在特殊的條件下才會出現,嘗試很多方法才解決。這裡做了總結,也跟大家分享一下: 1.播放器需要多執行緒實現 一般我們會把MediaPlayer放到Ser
android 之 讀取本地json檔案返回string
public static String getJson(String fileName, Context context){ StringBuilder stringBuilder
FFMpeg+SDL2.0 播放本地AVI檔案練手示例程式
FFMpeg版本: ffmpeg-3.4-win32-dev SDL版本:SDL2-2.0.7 參考文章: 雷神的各種相關文章。。。 希望能有一定的參考幫助吧…… // FFmpeg_playTest.cpp : 定義控制檯應用程式的入口點。 // #incl
Android MediaPlayer播放音訊與視訊
使用MediaPlayer播放音訊與視訊 播放音訊 首先創建出一個MediaPlayer物件 MediaPlayer mMediaPlayer = new MediaPlayer(
Android 中級教程之------Android MediaPlayer播放mp3的例項!
Android 中級教程之——Android MediaPlayer播放mp3的例項! 大家好我們今天研究的是Android中很重要也最為複雜的媒體播放器—MediaPlayer. Android的MediaPlayer包含了Audio和video的播放
Android VideoView播放本地視訊短暫黑屏的解決方法
新的大版本終於正式釋出了,整整三個月,做的心力交瘁,導致好久都沒有更新文章了。最近接觸了許多新的知識,也算是忙碌中有所收穫。希望接下來的時間工作上能夠稍微鬆緩一些,讓我可以利用在家的閒
ios播放本地聲音檔案
從一段程式碼裡找到幾個片段: #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioToolbox.h> // 載入音效 - (SystemSoundID)loadSound
android讀取sd卡音樂檔案顯示亂碼
android讀取sd卡音樂檔案,有的音樂title和藝術家等亂碼,利用如下方式順利解決:try{ if(title.equals(new String(title.getBytes("iso8859-1"), "iso8859-1"))){
android Mediaplayer 播放視訊 只有聲音沒有畫面的問題
剛剛解決了 mediaplayer 和SurfaceView播放視訊 只有聲音沒有畫面的問題, 最終確定為,holder.setFixedSize(width,heigh); 設定解析度的方法,放在了 mediaplayer的回撥函式裡,導致沒有畫面, 把這個holder.