android加载声音文件,Android是在应用程序中加载和播放声音的最快方式
我正在开展一个项目,我必须在一个活动中加载6种不同的声音,并在按钮点击时播放所有声音.声音文件不是那么大,但问题是它们可能会更多.所以我的问题是这是在单个活动中加载声音文件的最快方法.出于测试目的,我使用res / raw文件夹存储声音文件并尝试使用两种不同的方法播放文件,但结果并不满足我.这是两种不同类型的代码:
方法1:
Button first = (Button) findViewById(R.id.one);
Button second = (Button) findViewById(R.id.two);
first.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(SoundFXActivity.this, R.raw.drumtwo);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
}
});
second.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(SoundFXActivity.this, R.raw.drumone);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
}
});
方法2:
private SoundPool spool;
private int soundID,soundID2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundID = spool.load(this, R.raw.drumone, 1);
soundID2 = spool.load(this, R.raw.drumtwo, 1);
Button three = (Button) findViewById(R.id.three);
three.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Sound();
}
});
}
public void Sound(){
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
spool.play(soundID, volume, volume, 1, 0, 1f);
};
但问题是这两种方法都很慢.我需要找到一种更快速播放声音的方法..但是现在我点击按钮播放声音后差不多一秒钟.
你可以给我一些建议如何更快地播放声音.我应该在应用程序启动时将它们加载到缓存中,或者将它们保存在数据库或其他地方(我不认为数据库是一个很好的选择,但事实上,我想听一些建议).或者可以从assets文件夹加载它们,但我认为它仍然会很慢.
那么任何想法或建议?
提前致谢!
android加载声音文件,Android是在应用程序中加载和播放声音的最快方式相关推荐
- 在 ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图。
在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...
- 在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图
在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...
- 操作无法完成,因为其中的文件夹或文件已在另一程序中打开 --> 彻底解决方案
操作无法完成,因为其中的文件夹或文件已在另一程序中打开 --> 彻底解决方案 删除文件时出现的状况: 解决方案一 打开任务管理器(快捷键Ctrl+alt+Del),选择性能–>打开资源监视 ...
- Win7-其中的文件夹或文件已在另一个程序中打开
Win7-其中的文件夹或文件已在另一个程序中打开 如何解决Win7系统在删除或移动文件时提示,"操作无法完成,因为其中的文件夹或文件已在另一个程序中打开,请关闭该文件夹或文件,然后重试&qu ...
- 解决操作无法完成,因为其中的文件夹或文件已在另一程序中打开的问题
在日常使用电脑中,当我们想删除某些文件夹或者文件时,可能会遇到 "操作无法完成,因为文件可能在另一个程序中打开" 类似的提示,在不知道文件在哪个程序中打开时,可采用下面的解决方法 ...
- 文件夹或文件已在另一个程序中打开,解决办法
在删除某一文件时,总会遇到一个提示:"操作无法完成,文件夹或文件已在另一个程序中打开",但又不清楚文件在哪里打开或者把文件全部关闭仍旧如此提示,此时,可试试下面的解决方法. 打开' ...
- 操作无法完成,因为其中的文件夹或文件已在另一程序中打开,请关闭该文件或文件,然后重试解决方法
今天卸载WPS后,想把安装的文件夹删除掉.提示"操作无法完成,因为其中的文件夹或文件已在另一程序中打开,请关闭该文件或文件,然后重试" 查找何处占用最后发现有一个DLL文件被占用, ...
- 操作无法完成因为其中的文件夹或文件已在另一个程序中打开怎么解决
有不少朋友们在操作系统的时候,无法继续进行下一步操作.系统提示操作无法完成,因为其中的文件夹或文件已在另一个程序中打开.这种时候应该如何解决这个问题呢?今天小编就来给大家详细说明一下吧. 具体步骤如下 ...
- 删除某一文件夹或文件时,提示“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开”
目录 1 问题 2 解决方法 2.1 方法一 2.2 方法二(推荐) 1 问题 有时候在删除文件夹或文件时,总是删不掉,并提示"操作无法完成,因为其中的文件夹或文件已在另一个程序中打开&qu ...
最新文章
- 生信分析流程构建的几大流派
- Nginx的File not found 错误解决
- 160 - 5 ajj.2
- linux文件权限之suid,sgid,粘贴位
- 使用php进行后台开发,PHP后台开发用到的基础方法整理【原创】
- arraylist扩容是创建新数组吗 java_Java ArrayList扩容问题实例详解
- MyBatis拦截器原理探究MyBatis拦截器原理探究 1
- RubyOnRails 在linux平台安装的过程
- 做独立淘客app有哪些运营方法
- [20170209]索引范围访问2.txt
- 100行代码,10分钟,详解Vue2.x响应式原理——理解Observer,Dep,Watcher
- 智商情商哪个重要_你认为哪个更重要,情商还是智商?为什么?
- python爬虫数据可视化豆瓣评分top250_Python数据可视化:豆瓣电影TOP250
- Win10 系统时间同步失败解决方案
- 钉钉大肆抢夺TO B数字化办公市场 企业微信、金蝶、石墨文档、脉脉等危矣?...
- excel求方差和标准差的函数_[Excel]如何用Excel计算标准差(stdev.S和stdev.P)
- 什么是蜘蛛统计 有什么作用?
- 【Linux】云服务器部署网站后的ab压力测试,服务器网络接口io情况、进程cpu占用等有关情况查看
- 知乎上40个有趣回复,很精辟!
- CALIPSO学习笔记