Android学习笔记(12)-开始做一个数独游戏[补充]

本文介绍如何使用Android的MediaPlayer类为游戏添加背景音乐。通过创建MediaService服务,并在MainActivity中启动该服务,实现音乐播放。文章提供了具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

再补充一点吧,如果需要给游戏加上背景音乐,其实也是非常容易的事情。因为Android提供了一个 MediaPlayer类可以方便的播放音乐文件。

android.media.MediaPlayer类没有构造函数,一般是用它的静态方法create生成实例,简单地告诉它音乐文件的资源ID即可(支持mp3/wav/midi等)。

首先,我们得建立一个Service,就叫MediaService吧,它的代码如下:
public class MediaServiceextendsServiceimplementsMediaPlayer.OnErrorListener,MediaPlayer.OnCompletionListener,MediaPlayer.OnPreparedListener ... {

......

privateMediaPlayerplayer;

@Override
protectedvoidonDestroy()...{
//TODOAuto-generatedmethodstub
super.onDestroy();
if(player!=null)...{
player.stop();
player.release();
}

}


@Override
protectedvoidonStart(intstartId,Bundlearguments)...{
//TODOAuto-generatedmethodstub
Log.d("Media","onStart");

player
=MediaPlayer.create(this.getApplication(),R.raw.tonhua);
if(player!=null)...{
player.setAudioStreamType(AudioSystem.STREAM_MUSIC);

player.setOnCompletionListener(
this);
player.setOnPreparedListener(
this);
player.setOnErrorListener(
this);

player.prepareAsync();
}

}


@Override
publicvoidonCompletion(MediaPlayerarg0)...{
//TODOAuto-generatedmethodstub
Log.d("Media","finished.");
}


@Override
publicvoidonPrepared(MediaPlayerarg0)...{
//TODOAuto-generatedmethodstub
Log.d("Media","prepared.");
player.start();
}


@Override
publicvoidonError(MediaPlayerarg0,intwhat,intextra)...{

Log.d(
"Media","onError");
player.stop();
}

}

这个服务主要就是用一个MediaPlayer去播放资源中的tonghua(一首MP3音乐)。次序一般是先create出这个实例,然后prepare一下(如果是文件直接prepare,如果是流则最好异步parepareAsync),接着就可以start了,同步可以直接start,异步则必须放到onPrepared中再start。

在MainActivity中启动这个服务即可。
mediaServiceIntent = new Intent();
mediaServiceIntent.setClass(
this ,MediaService. class );

this .startService(mediaServiceIntent, new Bundle());

当前,在Activity停止时也别忘了将这个Service停掉,而在Service停止时关掉MediaPlayer。

在模拟器上试了,效果不是太好,声音有点断断续续,不知道是不是我的解码器的问题(Vista系统)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值