音频播放

使用MediaPlayer播放音频

介绍

使用MediaPlayer播放的音频格式:.mp3(常用), .ogg(完全免费),.3gp(文件体积小,移动性强),.wav(高音质)
MediaPlayer是Android提供的用来控制音频/视频文件或流播放的

使用步骤

在这里插入图片描述
通过创建MediaPlayer对象来装载音频文件。其中有两种方法:第一种是通过create方法,而create方法有两种重载形式,一种是通过指定的资源文件来装载音频,另一种是通过指定的Uri来装载音频;第二种是通过无参的构造方法,通过setDataSource来指定装载的音频。
1、开始播放还需要通过start方法来开始播放
2、暂停播放需要调用pause方法
3、停止播放需要调用stop方法

通过create方法创建,已加载了要播放的音频,适用于播放单独的音频文件;
通过无参构造方法创建,需要单独指定要播放的音频,适用于连续播放多个音频文件

mediaPlayer.isPlaying可以判断音频是否处于播放状态。

在停止播放后,如果想继续播放

首先设置一个完成事件监听器,在重写的onCompletion方法中,定义重新播放方法:
在这里插入图片描述
最后记得释放资源:重写onDestroy方法
在这里插入图片描述

特点

MediaPlayer:延迟长,且占用资源多;不支持同时播放多个音频
SoundPool:延迟短,占用资源少;支持多个音频同时播放;但是只能播放短促的音频

使用SoundPool播放音频

SoundPool(音效池):管理多个短促的音效

使用步骤

在这里插入图片描述

1、创建一个SoundPool(构造函数)

public SoundPool(int maxStream, int streamType, int srcQuality)
---------第一个参数是:在声音池中允许同时存在的声音数量。当池子中的声音数量超过这个数量时,优先级最低或最早进入的声音会被移除。这个数字不是越大越好,因为会造成浪费空间
---------第二个参数是:声音流的类型,有STREAM_RING、STREAM_MUSIC,一般使用后者。
---------第三个参数没有什么意义,建议为0。

例如:

public SoundPool soundpool= new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
2、加载音频资源

SoundPool有四种方法加载音频资源(即四种重载的load方法):

int load(Context context, int resld, int priority):从 resld 所对应的资源加载声音

int load(FileDescriptor fd, long offset, long length, int priority):加载 fd 所对应的文件,从offset开始、长度为length的声音

int load(AssetFileDescriptor afd, int priority):从afd 所对应的文件中加载声音

int load(String path, int priority):从path 对应的文件去加载声音

(一般都用第一个方法)
上面四个方法中都有priority参数,现在还没有用处,Android建议参数设为1,来保持和未来的兼容性。
load方法返回该声音的ID,以后我们可以通过该声音的ID来播放声音。

3、播放控制

播放指定音频的音效,并返回一个streamID

final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) 

--------priority —— 流的优先级,值越大优先级高,影响当同时播放数量超出了最大支持数时SoundPool对该流的处理;
--------loop —— 循环播放的次数,0为值播放一次,-1为无限循环,其他值为播放loop+1次(例如,3为一共播放4次).
--------rate —— 播放的速率,范围0.5-2.0(0.5为一半速率,1.0为正常速率,2.0为两倍速率)

暂停指定播放流的音效(streamID 应通过play()返回)。

final void pause(int streamID) 

继续播放指定播放流的音效(streamID 应通过play()返回)。

final void resume(int streamID) 

终止指定播放流的音效(streamID 应通过play()返回)。

final void stop(int streamID) 
4、可操作的函数有:

final boolean unload(int soundID)
卸载一个指定的音频资源.

final void release()
释放SoundPool中的所有音频资源.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值