編輯:關於Android編程
一、MediaPlayer
1.獲取MediaPlayer實例
[java]
MediaPlayer.create(Context context,int resId); //參數一:上下文對象,參數二:音樂資源ID,一般放在raw文件夾下。如果沒有raw就自己創建一個
2.MediaPlayer常用的函數
[java]
prepare();//為播放音樂文件做准備工作
start();//播放音樂
pause();//暫停音樂播放
stop();//停止音樂播放
注:pause()和stop(),主要的區別在於:暫停播放後可以調用start()繼續播放,停止音樂播放後,需要調用prepare()再調用start()進行播放音樂。
3.MediaPlayer其它常用函數
[java]
setLooping(boolean looping);//設置音樂是否循環播放,true為循環播放
seekTo(int msec);//將音樂播放跳轉到某一時間點,以毫秒為單位
getDuration();//獲取播放的音樂文件總時間長度
getCurrentPosition();//獲取當前播放音樂時間點
二、AudioManager(音樂管理類,可以獲取當前音樂大小以及最大音量)
1.獲取AudioManager實例
[java]
AudioManager am = new AudioManager();
2.AudioManager常用函數
[java]
setStreamVolume(imt streamType,int index,int flags) ;//設置音量大小,參數一:音樂類型(AudioManager.STREAM_MUSIC),參數二:音量大小,參數三:設置一個或者多個標志
getStreamVolume(int streamType);//獲取當前音量大小,參數 獲取音量大小類型
getStreamMaxVolume(int streamType);// 獲取當前音量最大值,參數獲取音量大小的類型
注:操作手機音樂播放需要使用函數:Activity.setVolumeControlStream(int streamType) 設置控制音量類型,參數:音量類型(AudioManager.STREAM_MUSIC)
三、SoundPool
1.獲取SoundPool實例
[java]
new SoundPool(int maxStreams,int streamType,int srcQuality); //參數一:允許同時播放的聲音最大值,參數二:聲音類型,參數三:聲音品質
2.SoundPool常用函數
[java]
int load(Context context,int resId,int priority); //加載音樂文件,返回音樂ID(音樂流文件數據) 參數一:Context實例,參數二:音樂文件ID,參數三:標志優先考慮的聲音。目前使用沒有任何效果,只是具備兼容性價值。一般寫個1就可以。
int play(int soundId,float leftVolume,float rightVolume,int proority,int loop,float rate); //音樂播放,播放失敗返回0,正常則返回非0值,參數一:加載後得到的音樂文件,參數二:音量的左聲道 范圍0.0~1.0 參數三:音量的右聲道,范圍 0.0~1.0 參數四:音樂流的優先級,0為最低優先級,參數五:音樂播放次數,-1表示無限循環,0表示正常一次,大於0則表示循環次數,參數六:播放速率,取值范圍:0.5~2.0,1.0表示正常播放。
pause(int streamID); //暫停音樂播放 ,參數:音樂文件加載後的流ID
stop(int streamID) ; //結束音樂播放 參數:音樂文件加載後的流ID
release(); //釋放SoundPool的資源
setLoop(int streamID,int loop); //設置循環次數 參數一:音樂文件加載後的流ID,參數二:循環次數
setReat(int streamID); //設置播放速率
setVolume(int streamID,float leftVolume,float rightVolume); //設置音量大小,參數二:左聲道音量,參數三:右聲道音量
setPriority(int streamID,int priority); //設置流的優先級,參數二:優先級值。
四、MediaPlayer與SoundPool分析
1.MediaPlayer的優缺點:
缺點:資源占用量較高、延遲時間較長、不支持多個音頻同時播放等。在快速連續播放聲音(連續猛點按鈕)時,會出現1~3秒左右的延遲;當然此問題可以使用MediaPlayer.seekTo()這個方法解決。
優點:支持恨大的音樂文件播放,而且不會同SoundPool一樣需要加載准備一段時間,MediaPlayer能及時播放音樂。
2.使用SoundPool的優缺點:
缺點:最大只能申請1M的內存空間,意味著用戶只能使用一些很短的聲音片段,而不能用它來播放歌曲或游戲背景音樂。SoundPool提供了Pause和stop方法,但建議最好不要輕易使用這些方法,因為使用它們會導致程序莫名其妙的終止。使用SoundPool播放音頻格式建議使用OGG格式。如果使用WAV格式的音頻文件,在播放的情況下有時會出現異常關閉的情況。在使用SoundPool播放音樂文件的時候,如果在構造中就調用播放函數進行播放音樂,其效果則是沒有聲音!不是因為函數沒有執行,而是SoundPool需要加載准備時間!當然這個准備時間很短,不會影響使用,只是程序一運行播放剛開始沒有聲音罷了。
優點:
支持多個音樂文件同時播放。
通過以上分析,在Android游戲開發中,游戲背景音樂使用MediaPlayer肯定比使用SoundPool要合適;而游戲音效的播放采用SoundPool則更好。
菜單策劃:原理:使用控件繼承HorizontalScrollView,因為HorizontalScrollView提供了水平側滑的效果,然後測量菜單和內容界面的各個屬性,
android開發中實現單選與多選對話框的代碼非常簡單,具體代碼如下所示:public void myClick(View view) { // 單選對話框 //si
初次用到回調是在Fragment和Activity之間進行通信的時候,當時感覺很難理解,但又覺得這個方法使用起來很方便,所以對它進行仔細的研究。發現回調不僅僅是實現功能那
前言Android View體系是界面編程的核心,他的重要性不亞於Android四大組件,在這個系列中我會陸續講到View坐標系、View的滑動、View的事件分發等文章