首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android中不要Service跨Avtivity仍然可以播放音乐的一个简单方法

2012-09-24 
Android中不用Service跨Avtivity仍然可以播放音乐的一个简单方法首先创建一个专门用来播放音乐文件(在这里

Android中不用Service跨Avtivity仍然可以播放音乐的一个简单方法
首先创建一个专门用来播放音乐文件(在这里只播放已经导入到res/raw/下的音频文件)的类
MusicPlayer

public class MusicPlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {;private MediaPlayer bgPlayer;public MusicPlayer(Context context) {this.context = context;}        //当音乐播放完毕时public void onCompletion(MediaPlayer mp) {stopBgSound();}        //当音乐播放发生错误时public boolean onError(MediaPlayer mp, int what, int extra) {stopBgSound();return false;}//播放背景音乐,传入的paramInt为res/raw/目录下的音频文件的引用public void playBgSound(int paramInt) {stopBgSound();try {                        //利用音频文件创建一个MeidaPlayerMediaPlayer mediaPlayer = MediaPlayer.create(context, paramInt);bgPlayer = mediaPlayer;bgPlayer.setOnCompletionListener(this);                        //设置是否循环播放bgPlayer.setLooping(true);                        //开始播放bgPlayer.start();} catch (IllegalStateException e) {e.printStackTrace();} }//停止播放背景音乐public void stopBgSound() {if(bgPlayer == null) return;if(bgPlayer.isPlaying())bgPlayer.stop();bgPlayer.release();bgPlayer = null;}}



然后,新建一个Activity,我命名为MyActivity

MyActivity.java
public class MyActivity extends Activity {public static MusicPlayer musicPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);if(musicPlayer == null) {SysSetting.getInstance(getApplicationContext()).load();musicPlayer = new MusicPlayer(getApplicationContext());musicPlayer.playBgSound(R.raw.welcome);}}}


在这里已经完成了大部分的工作,最后一步就是,让你所需要跨Activity播放背景音乐而不使用Service的Activity都继承与这个Activity就可以了。
1 楼 wf2030 2010-11-17   还是不太明白,为什么继承这个类就能不适用service跨Activity播放音乐了, 什么原理呢? 2 楼 chen592969029 2010-11-25   因为这个MusicPlayer是static的,只要都继承这个类,那么这个MusicPlayer就会一直存在,自然就可以一直播放了。

热点排行