android开发之背景音乐与音效

一:添加背景音乐(MediaPlayer)

MediaPlayer class can be used to control playback of audio/video files and streams.MediaPlayer 类是用来控制音频和视频文件的播放;

实例化MediaPlayer的方法:

    1. 直接new的方式:
      MediaPlayer mp = new MediaPlayer();
    2. 使用create的方式,如:
      MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了

使用直接new的方式创建对象时,设置要播放的文件的方法:MediaPlayer要播放的文件主要包括3个来源:

    1. 用户在应用中事先自带的resource资源         例如:MediaPlayer.create(this, R.raw.test);
    2. 存储在SD卡或其他文件路径下的媒体文件     例如:myMediaplayer.setDataSource("/sdcard/test.mp3");
    3. 网络上的媒体文件        例如:myMediaplayer.setDataSource(http://music.baidu.com/song/490468);

开始播放,停止播放,暂停播放的方法:注意在停止以及暂停播放后要选择一个合适的时间去重新开始也就是调用seekto()方法;

实现监听播放完毕时的方法(这里使用了匿名内部类的方法),可以在播放完毕之后接着播放,也可以停止:

必须释放音频,否则会报错:

二:音效(SoundPool)

SoundPool

The SoundPool class manages and plays audio resources for applications.  SoundPool类是Android用于管理和播放应用程序的音频资源的类。一个SoundPool对象可以看作是一个可以从APK中导入资源或者从文件系统中载入文件的样本集合。它利用MediaPlayer服务为音频解码为一个原始16位PCM流。这个特性使得应用程序可以进行流压缩,而无须忍受在播放音频时解压所带来的CPU负载和时延。

SoundPool在载入声音文件过程中,使用了单独的线程,不会对视觉和UI性能产生影响。但SoundPool对载入声音文件大小有所限制

SoundPool与MediaPlayer相比,MediaPlayer存在着资源占用量较高、延迟时间较长、不支持多个音频同时播放等缺点,但SoundPool本身由于内存资源申请有严格限制,所以在开发过程中,建议尽量用SoundPool来播放一些较短的声音片段或者音效。

HashMap :HashMap是基于哈希表的Map接口的非同步实现,HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap的功能是通过“键(key)”能够快速的找到“值”。

实例化SoundPool,然后用HashMap来存储 播放的音乐id:(这里定义了一个SoundPool类的数组来存储音频文件)

    1. soundpool[0].load(this, R.raw.m2, 0)中第一个参数为Context,第2个参数即为资源文件,第3个为音乐的优先级;
    2. spMap.put(0, soundpool[0].load(this, R.raw.m2, 0))中第一个参数为key值,通过key来找到值,第二参数就是我们要存储的值;

播放音效:

    1. am为创建声音管理AudioManager对象;

(这里主要是为正在写的2048做背景音乐和音效)实现这些之后,我们的app就可以有背景音乐和按钮音效了;

android开发之背景音乐与音效的更多相关文章

  1. Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)

    游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...

  2. Android开发学习清单

    目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...

  3. 【随笔】android开发的学习路线

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...

  4. android开发的学习路线(转)

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...

  5. Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现

    为了进一步了解背景音乐和音效播放的,我们通过一个实例给大家介绍一下.如下图所示有两个场景:HelloWorld和Setting.在HelloWorld场景点击“游戏设置”菜单可以切换到Setting场 ...

  6. android开发的学习路线

    参考资料:千锋3G学院--课程大纲    http://www.mobiletrain.org 看了专业的培训机构的课程大纲,才知道,自己学习android的路途才刚刚开始!特此整理分享一下,希望能帮 ...

  7. Android开发四大组件概述

    这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity具体解释 二.Service具体解释 三.Broadcast Receiver具体解释 四.Content Provid ...

  8. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...

  9. Android开发——Notification通知的使用及NotificationCopat.Builder常用设置API

    想要看全部设置的请看这一篇 [转]NotificationCopat.Builder全部设置 常用设置: 设置属性 说明 setAutoCancel(boolean autocancel) 设置点击信 ...

随机推荐

  1. Android5.0 TimePicker,DatePicker恢复成低版本滚动模式

    新版中的TimePicker DatePicker是不支持使用遥控器的, 恢复成低版本滚动模式只需要是xml文件加上一句即可: android:datePickerMode="spinner ...

  2. iPhone被盗后续更新一:怎么找老机

    [找老机] 还是找警察给你发邮件,然后要求苹果扣机.毕竟全国所有被换机的iPhone最终都会返还到苹果上海的仓库.关键就是一定要快. 当时有群里的朋友,5S被偷,后来警察发邮件,然后苹果允许对方去具体 ...

  3. Windows on Device 项目实践 4 - 智能风扇制作

    在前面的文章中,我们已经学习并且利用Intel Galileo开发板和Windows on Device制作了火焰报警器.感光灯和PWM调光灯.在这个项目中,我们来利用温度传感器和直流电机,完成一个简 ...

  4. asp.net获取服务端和客户端信息

    asp.net获取服务端和客户端信息 获取服务器名:Page.Server.ManchineName获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostNam ...

  5. 查看SQLserver编码格式的SQL语句

    SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') 下面是查询结果: 简体中文GBK 繁体中文BIG5 美国/ ...

  6. wubi安装ubuntukylin-14.04

    自ubuntukylin-14.04发布以来一直想体验一下,正好五一休假有了时间,在经历了一番坎坷后终于安装成功.安装环境为Win7家庭高级版,至于采用wubi方式安装,只因Linux水平差和图省事, ...

  7. java反射 cglib asm相关资料

    有篇文章对java反射的调用的效率做了测试,写的比较好.猛击下面地址 http://www.blogjava.net/stone2083/archive/2010/09/15/332065.html ...

  8. vim 命令详解

    vi: Visual Interface 可视化接口vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式) 输入模式 末行模式 模式转换: 编辑-- ...

  9. 一维码:EAN-13码的识别

    1.一维码简述: 一维条码是一种能用于信息编码和信息自动识别的标准符号,是由一组宽度不同的黑白符号按一定规则交替排列编码组成的图形符号,用于表示一定的信息. 码制指条码符号的类型,不同的类型有不同的编 ...

  10. NYOJ-858下三角矩阵

    下三角矩阵 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 给定一个由0和1组成的矩阵.只允许交换相邻的两行,要把矩阵转化成下三角矩阵(主对角线上方的元素都是0),最少需 ...