android开发之背景音乐与音效_apk中添加背景音乐_叫我逗佬的博客-程序员秘密

技术标签: Android studio  android  

文章转载于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就可以有背景音乐和按钮音效了;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/only_LWL/article/details/91885744

智能推荐

java非法表达的开始,为什么我会得到“非法的表达开始”在java?_四犬夕的博客-程序员秘密

I am new to java and trying to build a calculator as the instructor gave me the project.I am getting the illegal start of expression error in else if statement.below is my code please help me to find ...

使用C语言读取IQ文件_小飞将的博客-程序员秘密

#include <stdio.h>#include <stdlib.h>#include <string.h>int CountNewLine(FILE *f) { char c; int line = 0; while ((c = fgetc(f)) != EOF) { if (c == '\n') { ++line; } } return line;}int ReadIQDataF

ZooKeeper 03 - ZooKeeper集群的脑裂问题 (Split Brain问题)_ehache 集群 脑裂_秋夜无霜的博客-程序员秘密

文章目录1.ZooKeeper的主从机制2 什么是ZooKeeper的脑裂2.1 脑裂现象的表现2.2 为什么会出现脑裂3 ZooKeeper如何解决"脑裂"3.1 3种可行的思路3.2 ZooKeeper采用的方法3.3 ZooKeeper的具体解决思路参考资料1.ZooKeeper的主从机制Leader == Master, Follower == Slaver.集群中的各个节点都会...

Mysql之limit语句_别问,问就是白给的博客-程序员秘密

limit语句LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。 SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句]; 思考:limit子句为什么排在最后? 因为前面所有的限制条件都处理完了,只剩下显示多少条记录的问题了!LIMIT语法格式: LIMIT off...

Docker中查看Redis容器CLIENT连接信息_docker redis查看当前连接数_勿語念千的博客-程序员秘密

0.docker安装了redis容器,并设置了密码1.在centos terminal下# 查看当前运行中的容器docker ps# 输出内容:容器ID,镜像……---------------------------CONTAINER ID IMAGE---------------------------# <CONTAINER ID> 为当前运行的镜像为redis的容器IDdocker exec -it <CONTAINER ID> redis-cl

随便推点

MySQL在Windows上的安装部署_蓝桉ʕ·͡ˑ·ཻʔ的博客-程序员秘密

MySQL官网:https://www.mysql.com/1、点击DOWNLOADS进入下载地址,分为三个版本:MySQL Enterprise Edition:企业版(收费)MySQL Cluster CGE:高级集群版(收费)MySQL Community Edition:社区版(开源免费,但官方不提供技术支持)2、选择MySQLCommunity (GPL) Downloads——>选择MySQLcommunityserver下载即可3、选择解压版(64位)...

89c51控制小车运行c语言,基于STC89C52单片机和STM32的智能小车控制系统_Ediartos的博客-程序员秘密

摘要:针对智能车的控制系统, 选用STC89C52作为整个系统的主控芯片, 并进行硬件电路设计;以NREF24L01作为无线接收模块, 选取E18-D80NK-N红外光电传感器作为避障模块的核心器件;并用Proteus软件进行电路的模拟和仿真, 结果表明可行。以STM32103C8为核心, 设计了智能小车的实时监控系统, 并制定了系统软件的设计方案;在系统软件方案的基础上提出基于NRF24L01的...

F5隐写算法中矩阵编码详解_彼岸之音的博客-程序员秘密

最近一段时间都在看隐写算法,F5算法算法比较经典的一个了,花了不少时间来琢磨,对于其中的矩阵编码方法终究是难以理解,找了很多资料,基本就是说了一下公式,不胜详略,难有一个能比较说的清楚的,这里分享一下我的看法,对之进行详细的说明。 关于F5隐写算法可以看论文: F5—A Steganographic Algorithm High Capacity Despite Better Steganaly

raspberry pi_庆祝Raspberry Pi的14天_cuml0912的博客-程序员秘密

raspberry pi 皮日快乐! 每年的3月14日,我们的极客都会庆祝Pi Day。 以我们缩写日期的方式(MMDD),3月14日写为03/14,从数字上使我们想起3.14或pi的前三个数字。 许多美国人没有意识到的是,实际上世界上没有其他国家/地区使用此日期格式 ,因此Pi Day虽然在全球范围内广受赞誉,但几乎只在美国有效。 无论您身在何处,我们都可以庆祝Raspberry Pi...

Nginx中安装免费SSL证书开启Https请求_nginx inforguardma.pkg_Asurplus的博客-程序员秘密

在部分场景中,我们必须使用 https 请求,因为 https 请求更为安全,常用于支付方面的请求调用https 的基础是 ssl,我们一般是没有 ssl 证书的,我们需要向供应商购买 ssl 证书,今天我们使用 Let’s Encrypt 获取免费证书,搭建我们的 https 请求1、安装 Nginx在 Centos 中搭建 nginx 环境,可以参考我的这篇文章,Centos7中搭建Nginx环境https://lizhou.blog.csdn.net/article/details/11604

Window10 OpenCV3.4.7 CMake3.18.0 QT5.5.0 编译配置及调用_路过人间本尊的博客-程序员秘密

QT开发中经常遇到使用OpenCV,记录一下OpenCV库的编译调用过程。环境:Window1064位一、安装软件:1、OpenCV 2、CMake 3、QT1、安装OpenCV4.3.0下载地址:https://opencv.org/releases/ opencv-4.3.0-vc14_vc15.exe安装OpenCV很简单,双击打开 opencv-4.3.0-vc14_vc15.exe,其实就是一个解压动作,解压到非中文目录下2、安装QT5.5.0...

推荐文章

热门文章

相关标签