文章转载于https://www.cnblogs.com/hesi/p/5750862.html

仅供博主笔记学习用

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. Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留下QQ~~~ 一.铃声播放 虽然媒体播放器MediaPlayer既可用来播放视频,也可以用来播放音频,但是在具体的使用场合,MediaPlayer存在某些播音方面的不足 ...

  2. Cocos2d-JS 中游戏背景音乐与音效

    游戏中音频的处理也是非常重要的,它分为背景音乐播放与音效播放. 背景音乐是长时间循环播放的,它会长时间占用较大的内存,背景音乐不能多个同时播放. 而音效是短的声音,它占用内存较小,音效能多个同时播放. ...

  3. Android开发关键知识点讲解

    有下载:http://download.csdn.net/detail/zl594389970/6281471 Android应用程序架构 src/  java原代码存放目录 gen/ 自动生成目录 ...

  4. indows上的android开发环境软件架构5

    (二)实验要求: ? 修改按下button 显示的内容中添加上自己的学号姓名: ? 添加一个按钮,按钮名称为"退出",并且为这个按钮添加事件代码,使得点击这个按钮后退 出程序.事件 ...

  5. Android开发入门一之Android应用程序架构详解

    Android应用程序架构详解如下: src/ java源代码存放目录 gen/自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件.目录中最重要的就是R.java文件.这个文件 ...

  6. Android开发笔记(一百二十六)自定义音乐播放器

    MediaRecorder/MediaPlayer 在Android手机上面,音频的处理比视频还要复杂,这真是出人意料.在前面的博文< Android开发笔记(五十七)录像录音与播放>中, ...

  7. Unity - AudioManager 给背景音乐、音效添加统一的音量管理

    今天给自己测试项目添加音效(音效找了好N,免费的甚少,基本收费,对于我们开发测试项目实属不便,找了几个免费的将就着用). 音量控制类型 游戏里的设置都会有: 整体音量 背景音乐音量 游戏音效音量 的三 ...

  8. CMDN CLUB第14场:小米与友盟专家详解Android开发:

    2月29日,CMDN Club第十四期活动在北京丽亭华苑酒店举行.本次活动是开春以来CMDN俱乐部的首场主题交流会,友盟Android SDK工程师徐仙明和小米科技MIUI系统工程师董红光为大家带来了 ...

  9. Android开发指南中文版

    Android开发指南中文版 -应用程序框架   iefreer@hotmail.com 2009/9/10 个人主页: http://blog.csdn.net/iefreer 本文是对Androi ...

最新文章

  1. redis java切片_jedis 单点配置
  2. linux 驱动开发 --- 字符设备与混杂设备区别
  3. Linux中的管道与重定向
  4. CygWin / 获取 root 权限的方法
  5. 常用的前端JavaScript方法封装(49种)
  6. matlab r2010a教程,MATLAB教程R2010a(十二五)
  7. python执行shell命令行_python执行命令行:python中执行shell命令行read结果
  8. 详解CentOS7安装配置vsftp搭建FTP
  9. 检测非法键盘hook_反越狱检测解读
  10. QT中让窗口屏幕居中的方法
  11. 查看服务器是有有默认共享文件,服务器共享文件远程查看
  12. python文件和目录访问File and Directory Access
  13. jenkins根据已打包的镜像,自动生成正式镜像
  14. Resharper插件使用教程汇总
  15. 月关“历史网络小说第一人”:第四届橙瓜网络文学奖十佳历史大神
  16. spss多元线性回归散点图_SPSS多元线性回归.pdf
  17. 只有外包公司的offer,那没得选?
  18. 【Little Demo】从简单的Tab标签到Tab图片切换
  19. Python(1)概述与基础
  20. php里在调用wp,WordPress 教程:使用 WP_Http 在 WordPress 中发起 HTTP Request

热门文章

  1. Linux基本指令之网络通信命令
  2. 51nod 1603 限高二叉排列树(求补思想-DP)
  3. 小程序开发.云数据库
  4. ImageView中动态设置图片
  5. 公司账号服务单点登录到gitlab
  6. window.print打印指定区域
  7. Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException
  8. vc控制计算机关机,192上位机VC MFC实现电脑的重启关机注销功能
  9. JavaWeb实现注册登录功能并将用户数据写进数据库(商城系统第一部分)
  10. linux boot引导修复工具,修复linux的grub2引导(单独/boot,lvm-root)