Mediaplay:Android后台同时播放多个音频文件

设备/引擎:Mac(11.6)/cocos

开发工具:Android studio(4.1.2)

开发语言:java/c++

开发需求:android后台实现同时播放多个音频:读取所需的音频文件并按要求播放

之前有提到过ios工程有关后台同时播放多个音频的问题,今天开始说一说android工程后台同时播放多个音频文件的问题。

项目前提条件:
1.音频时长较长,并非短促音效
2.项目工程资源文件已打包成obb文件
3.同时播放指定的音频

最先考虑用到的是soundpoolmediaplay,介于项目的前提条件,所以前者并不适用,在项目中也做了尝试,soundpool可以实现同时播放音频,但音频质量会严重受损,且发现后期对音频音量进行控制时也会出现失效的情况,所以不再使用此方法。

Mediaplay是最常用的播放音频的工具,同样也不会让音频质量受损。

1.获取音频文件:
1)播放应用内的音频文件,代码如下:

MediaPlayer mMediaPlayer = new MediaPlayer.create(this,R.raw.xx);

2)播放内存卡的音频文件,代码如下:

MediaPlayer mMediaPlayer = new MediaPlayer.setDataSource("file//mnt/sdcard/Music/xx.mp3");

3)播放网络上的音频文件,代码如下:

MediaPlayer mMediaPlayer = new MediaPlayer.setDataSource(this,Uri.parse("http://192.168.43.135/test.mp3"));

4)播放网络上的音频文件,代码如下:

MediaPlayer mMediaPlayer = new MediaPlayer();
AssetFileDescriptor fd = getAssets().openFd("music.mp3");
mMediaPlayer.setDataSource(fd.getFileDescriptor(),fd.getStartOffset(),fd.getLength);

本次项目中的资源文件已做obb打包处理,所以只考虑使用第一种情况,在工程的res下创建raw文件夹,将音频文件放入到文件夹下,文件名必须以字母开头,其它符号只能用下划线,否则无法访问调用。

2.播放音频
因为需要同时播放多个音频,所以需要同时获得多个音频文件。

先说说失败的尝试,分别创建了MediaPlayer的实例化对象数组,音频文件的数组(R.raw.xx类型为int型,只需创建一个返回值为int的类即可,再在程序中调用需要用到的音频文件),发现只能播放一个音频,其余音频没有声响,多次尝试发现播放的音频一方面是无法同时全部播放,另一方面是音频的质量严重也有问题,感觉是音频重叠的问题。

后来尝试创建多个MediaPlayer的公有实例化对象,然后用每个对象去获取一个音频文件,再通过代码来控制播放哪几个音频,这里之所以设置为公有变量,一方面是后期还要对音频进行音量控制操作,另一方面则是私有变量也无法满足同时播放多个音频,会或多或少的缺少一到两个音频文件。

播放音频的代码如下:

mMediaPlayer = MediaPlayer.create(this,R.raw.audio_0);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
mMediaPlayer.setLooping(true);mMediaPlayer1 = MediaPlayer.create(this,R.raw.audio_1);
mMediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer1.start();
mMediaPlayer1.setLooping(true);
……

具体播放哪个音频根据项目需求来定。整体下来发现代码部分不是很难,主要是得挨个尝试,看哪种方式更适合,目前测试来看,效果还不错。

希望能给大家带来帮助!!!

Mediaplay:Android后台同时播放多个音频文件第一弹:读取并播放音频文件相关推荐

  1. Mediaplay:Android后台同时播放多个音频文件第二弹:控制音频音量

    Mediaplay:Android后台同时播放多个音频文件 设备/引擎:Mac(11.6)/cocos 开发工具:Android studio(4.1.2) 开发语言:java/c++ 开发需求:an ...

  2. hutool 读取扩展名文件_Python OpenCV视觉智能感知第一讲——读取摄像头或视频文件并播放显示...

    Python OpenCV视觉智能感知 第一讲--读取摄像头或视频文件并播放显示 本部分内容将深入.全面.详细地介绍如何使用Anaconda Python和OpenCV读取摄像头或视频文件,并进行播放 ...

  3. android后台自播放音乐,Android实现后台播放音乐(Service方式)

    Android实现后台播放音乐(Service方式) 实现: 在res文件夹下添加raw文件夹,添加mp3/4格式的音乐文件 注意命名规则只能是a-z,0-9,和下划线_ 不能大写字母和- Andro ...

  4. Android 音频开发(四) 如何播放一帧音频数据下

    再看这一篇文章前,如果你是小白,我建议你先看一下Android 音频开发(一) 基础入门篇这一篇.今天继续讲解如何通过Android SDK自带API实现播放一帧音频数据. 我们都知道,Android ...

  5. Android 音频开发(三) 如何播放一帧音频数据上

    上一篇只要介绍了如何采集一帧音频,本篇就讲述如何播放一帧音频数据,这一篇我将分倆篇来详细介绍. Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool, ...

  6. unity音频 Android,【Unity3D】如何读取并播放 Android 本地的 wav 音频

    由于目前做的项目是发布在 Android 平台的,所以遇到了还蛮多的关于 Android 方面的问题的. 最近遇到一个问题,就是需要在程序中读取并播放外部(本地存储)的 wav 音频. 此问题已解决, ...

  7. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  8. [Android] [音视频系列]在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件

    参考 官方文档地址:https://developer.android.google.cn/reference/android/media/AudioRecord GitHub 地址:https:// ...

  9. android获取小程序音频时长,最新微信小程序获取音频时长与实时获取播放进度...

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

最新文章

  1. protoc gen php,protoc-gen-php --php_out: protoc-gen-php: Plugin output is unparseable.
  2. Cesium 中两种添加 model 方法的区别
  3. python post提交数据
  4. 深入理解ASCII,Unicode和UTF-8编码
  5. CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
  6. ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Topic
  7. 机床使用教学_2020沧州cnc培训20年教学经验颁发职业
  8. mono linux c 服务,使用mono-service在Linux上包装Windows服务
  9. Win10(UEFI启动)安装Ubuntu18.04双系统
  10. 选取文档元素的API
  11. maven deploy上传私服出错
  12. Rabbit and Grass【博弈】
  13. python import numpy_python之numpy
  14. 为什么基类的析构函数是虚函数?
  15. 唐山大地震 昨夜万人首映 尚雯婕演唱《23秒,32年》使观众情绪得以第二次温暖爆发...
  16. 使用iMazing为iPad添加PDF文档
  17. 求助:可以使用任何编程工具做成一个控件或组件,使得在VB中能调用并得到摄像头的参数及图片。...
  18. volte的sip信令流程_VOLTE SIP代码详解及SIP流程图解
  19. 关于WhatsApp Business 和WhatsApp的一些区别
  20. vue+jsonp跨域

热门文章

  1. WRL::ComPtr 的坑
  2. 如何带领好团队,增强团队的执行力?
  3. Vue.js 2.5新特性介绍
  4. 线程局部变量 ThreadLocal
  5. 神州租车用户口碑佳,原因有3点
  6. 怎么在收藏夹添加多个相同网址?
  7. 基于AR谱特征的声目标识别
  8. 新基建缘何5G打头阵?
  9. 腾讯云互动直播分享屏幕小结
  10. 女生学数据分析好吗?数据分析适不适合女生学?