背景音乐播放
来源:互联网 发布:国内导演排行榜知乎 编辑:程序博客网 时间:2024/05/04 04:32
import android.content.Context; import android.content.res.AssetFileDescriptor; import android.media.MediaPlayer; import android.util.Log; /** * * This class is used for controlling background music * */ public class BackgroundMusic { private static final String TAG = "Bg_Music"; private float mLeftVolume; private float mRightVolume; private Context mContext; private MediaPlayer mBackgroundMediaPlayer; private boolean mIsPaused; private String mCurrentPath; public BackgroundMusic(Context context){ this.mContext = context; initData(); } //初始化一些数据 private void initData(){ mLeftVolume =0.5f; mRightVolume = 0.5f; mBackgroundMediaPlayer = null; mIsPaused = false; mCurrentPath = null; } /** * 根据path路径播放背景音乐 * @param path :assets中的音频路径 * @param isLoop :是否循环播放 */ public void playBackgroundMusic(String path, boolean isLoop){ if (mCurrentPath == null){ //这是第一次播放背景音乐--- it is the first time to play background music //或者是执行end()方法后,重新被叫---or end() was called mBackgroundMediaPlayer = createMediaplayerFromAssets(path); mCurrentPath = path; } else { if (! mCurrentPath.equals(path)){ //播放一个新的背景音乐--- play new background music //释放旧的资源并生成一个新的----release old resource and create a new one if (mBackgroundMediaPlayer != null){ mBackgroundMediaPlayer.release(); } mBackgroundMediaPlayer = createMediaplayerFromAssets(path); //记录这个路径---record the path mCurrentPath = path; } } if (mBackgroundMediaPlayer == null){ Log.e(TAG, "playBackgroundMusic: background media player is null"); } else { // 若果音乐正在播放或已近中断,停止它---if the music is playing or paused, stop it mBackgroundMediaPlayer.stop(); mBackgroundMediaPlayer.setLooping(isLoop); try { mBackgroundMediaPlayer.prepare(); mBackgroundMediaPlayer.seekTo(0); mBackgroundMediaPlayer.start(); this.mIsPaused = false; } catch (Exception e){ Log.e(TAG, "playBackgroundMusic: error state"); } } } /** * 停止播放背景音乐 */ public void stopBackgroundMusic(){ if (mBackgroundMediaPlayer != null){ mBackgroundMediaPlayer.stop(); // should set the state, if not , the following sequence will be error // play -> pause -> stop -> resume this.mIsPaused = false; } } /** * 暂停播放背景音乐 */ public void pauseBackgroundMusic(){ if (mBackgroundMediaPlayer != null && mBackgroundMediaPlayer.isPlaying()){ mBackgroundMediaPlayer.pause(); this.mIsPaused = true; } } /** * 继续播放背景音乐 */ public void resumeBackgroundMusic(){ if (mBackgroundMediaPlayer != null && this.mIsPaused){ mBackgroundMediaPlayer.start(); this.mIsPaused = false; } } /** * 重新播放背景音乐 */ public void rewindBackgroundMusic(){if (mBackgroundMediaPlayer != null){ mBackgroundMediaPlayer.stop(); try { mBackgroundMediaPlayer.prepare(); mBackgroundMediaPlayer.seekTo(0); mBackgroundMediaPlayer.start(); this.mIsPaused = false; } catch (Exception e){ Log.e(TAG, "rewindBackgroundMusic: error state"); } } } /** * 判断背景音乐是否正在播放 * @return:返回的boolean值代表是否正在播放 */ public boolean isBackgroundMusicPlaying(){ boolean ret = false; if (mBackgroundMediaPlayer == null){ ret = false; } else { ret = mBackgroundMediaPlayer.isPlaying(); } return ret; } /** * 结束背景音乐,并释放资源 */ public void end(){ if (mBackgroundMediaPlayer != null){ mBackgroundMediaPlayer.release(); } //重新“初始化数据” initData(); } /** * 得到背景音乐的“音量” * @return */ public float getBackgroundVolume(){ if (this.mBackgroundMediaPlayer != null){ return (this.mLeftVolume + this.mRightVolume) / 2; } else { return 0.0f; } } /** * 设置背景音乐的音量 * @param volume:设置播放的音量,float类型 */ public void setBackgroundVolume(float volume){this.mLeftVolume = this.mRightVolume = volume; if (this.mBackgroundMediaPlayer != null){ this.mBackgroundMediaPlayer.setVolume(this.mLeftVolume, this.mRightVolume); } } /** * create mediaplayer for music * @param path the path relative to assets * @return */ private MediaPlayer createMediaplayerFromAssets(String path){ MediaPlayer mediaPlayer = null; try{ AssetFileDescriptor assetFileDescritor = mContext.getAssets().openFd(path); mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(assetFileDescritor.getFileDescriptor(), assetFileDescritor.getStartOffset(), assetFileDescritor.getLength()); mediaPlayer.prepare(); mediaPlayer.setVolume(mLeftVolume, mRightVolume); }catch (Exception e) { mediaPlayer = null; Log.e(TAG, "error: " + e.getMessage(), e); } return mediaPlayer; } }
0 0
- 播放背景音乐
- 背景音乐播放
- 背景音乐播放
- 背景音乐播放
- 背景音乐播放
- delphi播放mp3背景音乐
- Inno Setup 播放背景音乐
- 博客背景音乐播放器
- C#播放背景音乐
- jsp播放背景音乐
- windows form播放背景音乐
- jsp 播放背景音乐
- 背景音乐自动播放代码
- QT 播放背景音乐
- js控制背景音乐播放
- iOS后台播放背景音乐
- Android 应用播放背景音乐
- iOS播放背景音乐
- Ducci Sequence
- 失控--阅读笔记有心智的机器
- Servlet初探总结一
- ISO下动态加载数据的click点击事件无效的情况
- Java中的单例模式
- 背景音乐播放
- Struts2输入校验之validate输入校验方式
- qemu-kvm中断分析
- error while loading shared libraries的解決方法
- 深拷贝、浅拷贝
- 通过mssql数据库来获取主机的硬件相关信息,网卡,硬盘,主板等
- ThreadPoolExecutor使用介绍
- 慕课网 (IT技能学习平台)
- linux服务器架构设计 金融行业CMS系统)第三篇 【思路分析-安全性】