`
endual
  • 浏览: 3572597 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 背景音乐

 
阅读更多

最近在做一个android版的连连看小游戏,希望在游戏播放背景音乐以及音效,为此搜寻了相关资料,经过学习研究得出最终解决方案:MediaPlayer+SoundPool。
MediaPlayer 用来控制游戏背景音乐的播放。
SoundPool 播放游戏音效,在初始化时加载游戏中用的所有音效文件,然后在游戏中进行播放,这样声音没有延迟,保证了游戏的性能。最初我还想让背景音乐也使用 SoundPool进行播放,可是经过测试,总是不成功,而且在初始化时会很慢,不知道是不是因为SoundPool不适用较大的音乐文件?

特 别要说的是,我在网上看到有些文章在讲解实现游戏背景音乐的播放时,说要使用service,本人很不赞同。可能是因为大多讲解service的教程都喜 欢用音乐播放器的例子,所以很多人产生了一个误解,认为只要是播放音乐就要用到service。其实人家所说是开发一个音乐播放器,这个播放器需要在系统 后台持续播放歌曲,而不管是用户停留在当前应用界面还是退出到了系统桌面,或是切换到了另一个应用的界面,总之意思是说要在系统后台进行播放,这时必须要 用到service。而一个游戏的背景音乐仅仅需要在游戏运行的时候播放,而在返回到桌面或者进入其他应用使游戏的activity变为不可见时,都应该 立即停止播放,根本没必要使用service。
有人可能说播放背景音乐应该在后台执行,不能影响程序的正常运行,这样说当然正确,但这仅需要开辟 一个单独的线程来专门播放音乐就可以了,而经我测试,MediaPlayer和SoundPool本身都已经实现了在独立的线程中播放音乐,所以综上所述 在游戏中播放背景音乐完全没必要使用service,那样完全是舍近求远,画蛇添足之举。只需直接使用MediaPlayer即可。请看我的代码:

这是一个实现游戏中播放声音的类,封装了MediaPlayer和SoundPool的使用细节,所有方法都定义为静态方法,在程序启动时先调用其init方法,然后在任何地方都可以非常方便的使用

Java code
package com.llkan.setup; import java.util.HashMap; import java.util.Map; import java.util.Random; import com.llkan.R; import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; /** * 声音控制类 * @author wyf * */ public class SoundPlayer { private static MediaPlayer music; private static SoundPool soundPool; private static boolean musicSt = true ; // 音乐开关 private static boolean soundSt = true ; // 音效开关 private static Context context; private static final int [] musicId = {R.raw.bg,R.raw.bg1,R.raw.bg2,R.raw.bg3}; private static Map < Integer,Integer > soundMap; // 音效资源id与加载过后的音源id的映射关系表 /** * 初始化方法 * @param c */ public static void init(Context c) { context = c; initMusic(); initSound(); } // 初始化音效播放器 private static void initSound() { soundPool = new SoundPool( 10 ,AudioManager.STREAM_MUSIC, 100 ); soundMap = new HashMap < Integer,Integer > (); soundMap.put(R.raw.itemboom, soundPool.load(context, R.raw.itemboom, 1 )); soundMap.put(R.raw.sel, soundPool.load(context, R.raw.sel, 1 )); } // 初始化音乐播放器 private static void initMusic() { int r = new Random().nextInt(musicId.length); music = MediaPlayer.create(context,musicId[r]); music.setLooping( true ); } /** * 播放音效 * @param resId 音效资源id */ public static void playSound( int resId) { if (soundSt == false ) return ; Integer soundId = soundMap.get(resId); if (soundId != null ) soundPool.play(soundId, 1 , 1 , 1 , 0 , 1 ); } /** * 暂停音乐 */ public static void pauseMusic() { if (music.isPlaying()) music.pause(); } /** * 播放音乐 */ public static void startMusic() { if (musicSt) music.start(); } /** * 切换一首音乐并播放 */ public static void changeAndPlayMusic() { if (music != null ) music.release(); initMusic(); startMusic(); } /** * 获得音乐开关状态 * @return */ public static boolean isMusicSt() { return musicSt; } /** * 设置音乐开关 * @param musicSt */ public static void setMusicSt( boolean musicSt) { SoundPlayer.musicSt = musicSt; if (musicSt) music.start(); else music.stop(); } /** * 获得音效开关状态 * @return */ public static boolean isSoundSt() { return soundSt; } /** * 设置音效开关 * @param soundSt */ public static void setSoundSt( boolean soundSt) { SoundPlayer.soundSt = soundSt; } /** * 发出‘邦’的声音 */ public static void boom() { playSound(R.raw.itemboom); } }
分享到:
评论
1 楼 endual 2012-04-28  
http://topic.csdn.net/u/20120111/22/f00e8f1e-6331-488a-926f-2d491fe95f12.html

相关推荐

    android背景音乐服务的程序

    这个"android背景音乐服务的程序"显然专注于利用`MediaPlayer`类来播放音乐。`MediaPlayer`是Android SDK提供的一种核心组件,用于处理音频和视频流。在本文中,我们将深入探讨如何使用`MediaPlayer`来实现后台音乐...

    Android背景音乐设置代码

    在Android应用开发中,为应用程序添加背景音乐是一个常见的需求,特别是在游戏或者音乐相关的应用中。本教程将深入探讨如何在Android中实现这一功能,重点聚焦于`PreferenceActivity`的使用以及如何选择SD卡上的音乐...

    Android 给游戏加背景音乐代码

    ### Android游戏背景音乐实现详解 在进行Android游戏开发时,为游戏添加背景音乐可以显著提升玩家的游戏体验,使游戏更具吸引力。以下是从标题、描述、标签以及部分内容中提炼出的关键知识点,详细介绍如何在...

    android背景音乐音效使用MediaPlayerSoundPool实现.rar

    在Android开发中,实现背景音乐和音效是一个常见的需求,主要涉及到两个关键的类:`MediaPlayer`和`SoundPool`。这两个类都是Android系统提供的音频播放工具,但它们各自有其特性和适用场景。 首先,`MediaPlayer`...

    android背景音乐音效,使用MediaPlayer、SoundPool实现

    在Android开发中,为应用程序添加背景音乐和音效是提升用户体验的重要一环。本文将详细介绍如何使用`MediaPlayer`和`SoundPool`这两个核心组件来实现这一功能。 首先,`MediaPlayer`是Android系统提供的一个用于...

    android 播放背景音乐

    在Android平台上实现背景音乐播放是开发游戏或应用时常见的需求,它可以为用户提供更沉浸式的体验。下面我们将深入探讨如何在Android中实现这一功能。 一、选择音频播放库 Android提供了多种方式来播放音频,最常见...

    利用Service实现背景音乐的播放

    在Android开发中,实现背景音乐播放通常涉及到对多媒体处理、服务(Service)以及音频流的管理等技术。本篇文章将深入探讨如何利用Android的Service组件来实现在后台持续播放音乐的功能。 首先,我们要理解Service的...

    Android音乐播放器(Android studio)

    4. **更改背景图片**:Android的UI设计灵活性很高,可以通过设置`ImageView`的`src`属性来更换背景图片。考虑到动态效果,可以使用`TransitionDrawable`实现平滑过渡。 接下来,深入到Android Studio的开发环境: ...

    android 音乐律动频谱实现

    在Android平台上开发音乐应用时,实现音效和视觉反馈是提升用户体验的重要环节。"android 音乐律动频谱实现"这个项目就是针对这一需求,通过动态显示音乐频谱来增强用户对音频播放的感知。下面我们将深入探讨相关...

    基于Android Studio游戏开发 飞飞机大战小游戏源码,可暂停、继续游戏、开关背景音乐等功能。

    本文将深入探讨如何基于Android Studio开发一款名为“飞飞机大战”的小游戏,该游戏具备暂停、继续游戏以及开关背景音乐等实用功能。 首先,Android Studio为开发者提供了丰富的工具和资源,使得游戏开发变得相对...

    android 图片音乐浏览器

    【Android 图片音乐浏览器】是一款专门为Android平台设计的应用程序,旨在提供一个集成的环境,让用户能够轻松浏览和播放存储在SD卡上的图片和音乐。这款应用的独特之处在于它允许用户根据特定的文件夹结构来组织...

    可设定带背景音乐和自动游戏功能的Android版2048游戏工程源码

    在本项目中,我们讨论的是一个经过修改的Android版2048游戏工程源码,它具有背景音乐和自动游戏的特色功能。这个源码基于极客学院提供的基础实现,适用于Android 4.0.3及以上版本。让我们深入探讨这个项目中的关键...

    android实现背景音乐播放及网页超链接

    在Android开发中,实现背景音乐播放以及在网页中嵌入超链接是常见的需求,这涉及到多个组件和技术的综合运用。让我们深入探讨一下如何在Android应用中实现这些功能。 首先,我们要处理的是背景音乐播放。在Android...

    android源代码(程序启动播放背景音乐,自定义按钮,自定义对话框,界面精美)

    这个"android源代码"示例专注于几个关键的Android开发技术:程序启动时播放背景音乐、自定义按钮、自定义对话框以及创建精美的用户界面。下面将详细介绍这些知识点。 1. **启动时播放背景音乐** 在Android应用启动...

    Android实现音乐播放器——课程设计报告,优秀课设

    【Android实现音乐播放器——课程设计报告,优秀课设】是一个关于移动应用开发的课程设计项目,主要目标是让学生熟练掌握Android程序开发的各种技术,包括基础的UI界面设计、数据存储、Activity、Service、SQLite...

    Android开发基础利用service实现背景音乐

    以上就是使用Android Service实现背景音乐播放的基本流程。文件"05Service"可能包含了更详细的示例代码和实践教程,建议参考该文件以加深理解。通过学习和实践,开发者可以熟练掌握Service的使用,为用户提供流畅的...

    音乐播放器android 网络获取资源 背景虚化

    总结来说,一个优秀的Android音乐播放器不仅需要具备网络获取资源的能力,还要注重界面美观,如背景虚化和圆形图片展示,更要在性能优化上下功夫,确保应用运行流畅,内存占用合理,网络请求高效。在开发过程中,...

    Android在线音乐播放器设计与实现毕业论文.doc

    在移动互联网发展的背景下,人们对音乐播放器的需求日益多样化,但市面上的音乐播放器 APP 却深陷商业的漩涡,难以满足用户的需求。此设计基于 Android 开源平台,使用 Java 语言开发,采用 Android Studio + Gradle...

    android音乐播放器需求分析

    ### Android音乐播放器需求分析深度解析 #### 一、项目背景与目标 在3G技术的迅猛发展中,人们对音乐的追求日益高涨,市场上的音乐播放器虽多,但普遍存在操作复杂或音质不佳等问题,难以满足用户的高品质音乐体验...

    基于android的音乐播放器源码

    此外,对于背景播放功能,源码可能会展示如何将服务(Service)与Activity相结合,使音乐在后台持续播放,即使用户离开应用程序也能保持播放状态。 至于视频播放,Android的VideoView或者ExoPlayer库可能被用到。...

Global site tag (gtag.js) - Google Analytics