萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> android如何長時間音樂播放實現MediaPlayer

android如何長時間音樂播放實現MediaPlayer

  長時間的音樂因為體積比較大,放在手機內存中,對資源的占用太大。

  MediaPlayer類可以用來播放音頻、視頻和流媒體,MediaPlayer包含了Audio和Video的播放功能。

  在Android的界面上,Music和Video兩個應用程序都是調用MediaPlayer實現的。

  MediaPlayer在底層是基於OpenCore(PacketVideo)的庫實現的。

  一.基礎知識:

  首先來看看MediaPlayer的生命周期:

android如何長時間音樂播放實現MediaPlayer 三聯

  下邊是MediaPlayer提供的常用方法:

  [java]

  方法 說明

  MediaPlayer 構造方法

  create 創建一個要播放的多媒體

  getCurrentPosition 得到當前播放位置

  getDuration 得到文件的時間

  getVideoHeight 得到視頻的高度

  getVideoWidth 得到視頻的寬度

  isLooping 是否循環播放

  isPlaying 是否正在播放

  pause 暫停

  prepare 准備(同步)

  prepareAsync 准備(異步)

  release 釋放MediaPlayer對象

  reset 重置MediaPlayer對象

  seekTo 指定播放的位置(以毫秒為單位的時間)

  setAudioStreamType 設置流媒體的類型

  setDataSource 設置多媒體數據來源

  setDisplay 設置用SurfaceHolder來顯示多媒體

  setLooping 設置是否循環播放

  setOnButteringUpdateListener 網絡流媒體的緩沖監聽

  setOnErrorListener 設置錯誤信息監聽

  setOnVideoSizeChangedListener 視頻尺寸監聽

  setScreenOnWhilePlaying 設置是否使用SurfaceHolder來保持屏幕顯示

  setVolume 設置音量

  start 開始播放

  stop 停止播放

  方法 說明

  MediaPlayer 構造方法

  create 創建一個要播放的多媒體

  getCurrentPosition 得到當前播放位置

  getDuration 得到文件的時間

  getVideoHeight 得到視頻的高度

  getVideoWidth 得到視頻的寬度

  isLooping 是否循環播放

  isPlaying 是否正在播放

  pause 暫停

  prepare 准備(同步)

  prepareAsync 准備(異步)

  release 釋放MediaPlayer對象

  reset 重置MediaPlayer對象

  seekTo 指定播放的位置(以毫秒為單位的時間)

  setAudioStreamType 設置流媒體的類型

  setDataSource 設置多媒體數據來源

  setDisplay 設置用SurfaceHolder來顯示多媒體

  setLooping 設置是否循環播放

  setOnButteringUpdateListener 網絡流媒體的緩沖監聽

  setOnErrorListener 設置錯誤信息監聽

  setOnVideoSizeChangedListener 視頻尺寸監聽

  setScreenOnWhilePlaying 設置是否使用SurfaceHolder來保持屏幕顯示

  setVolume 設置音量

  start 開始播放

  stop 停止播放

  這個圖和這些函數名稱,對於我們初學者來說, 沒必要太在意, 了解一下基本的名詞即可,等到項目中確實遇到交互性問題時,我們再回來仔細探討。

  我們只要明白下面幾行代碼即可(Android中通過MediaPlayer來播放音樂的步驟):

  [java]

  MediaPlayer mp = new MediaPlayer();//構建MediaPlayer對象

  mp.setDataSource("/sdcard/test.mp3");//設置文件路徑

  mp.prepare();//准備

  mp.start();//開始播放

  MediaPlayer mp = new MediaPlayer();//構建MediaPlayer對象

  mp.setDataSource("/sdcard/test.mp3");//設置文件路徑

  mp.prepare();//准備

  mp.start();//開始播放

  上面四行代碼實現了媒體文件的播放,但是如果還想再加入對音量的控制,就要涉及到AudioMananger類。

  AudioManager中常用的方法如下:

  A. 獲取聲音管理器:

  [java]

  AudioManager audioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE);

  AudioManager audioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE);

  B、設置聲音模式:

  [java]

  //聲音模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

  //靜音模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

  //震動模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

  //聲音模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

  //靜音模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

  //震動模式

  AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

  C、調整聲音大小:

  [java]

  //減少聲音音量

  AudioManager.adjustVolume(AudioManager.ADJUST_LOWER, 0);

  //調大聲音音量

  AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);

  //減少聲音音量

  AudioManager.adjustVolume(AudioManager.ADJUST_LOWER, 0);

  //調大聲音音量

  AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);

  D、獲取音量大小:

  [java]

  // 取得當前設備的當前音量

  AudioManager.getStreamVolume(int streamType)

  // 取得當前設備的最大音量

  AudioManager.getStreamMaxVolume(int streamType)

  // 取得當前設備的當前音量

  AudioManager.getStreamVolume(int streamType)

  // 取得當前設備的最大音量

  AudioManager.getStreamMaxVolume(int streamType)

  E、其他:

  [java]

  getMode()獲取音頻模式

  getRingerMode()獲取鈴聲震動模式

  setRingerMode(int ringerMode) 改變鈴聲模式

  這裡如果使用了和手機震動有關的模式,記得添加權限。android.permission.VIBRATE哦!

  getMode()獲取音頻模式

  getRingerMode()獲取鈴聲震動模式

  setRingerMode(int ringerMode) 改變鈴聲模式

  這裡如果使用了和手機震動有關的模式,記得添加權限。android.permission.VIBRATE哦!

  二.編程實現:

  1. 界面編輯(reslayoutmain.xml):

  [java]

  

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  

  android:text="播放音樂"

  android:id="@+id/ButtonPlay"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  android:text="暫停音樂"

  android:id="@+id/ButtonPause"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  android:text="停止音樂"

  android:id="@+id/ButtonStop"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  android:text="增大音樂"

  android:id="@+id/ButtonVAdd"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  android:text="降低音樂"

  android:id="@+id/ButtonVReduce"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

  

  

  

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  

  android:text="播放音樂"

copyright © 萬盛學電腦網 all rights reserved