android加载声音文件,Android是在应用程序中加载和播放声音的最快方式
我正在开展一个项目,我必须在一个活动中加载6种不同的声音,并在按钮点击时播放所有声音.声音文件不是那么大,但问题是它们可能会更多.所以我的问题是这是在单个活动中加载声音文件的最快方法.出于测试目的,我使用res / raw文件夹存储声音文件并尝试使用两种不同的方法播放文件,但结果并不满足我.这是两种不同类型的代码:方法1:Button first = (Button) findViewById(R
我正在开展一个项目,我必须在一个活动中加载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文件夹加载它们,但我认为它仍然会很慢.
那么任何想法或建议?
提前致谢!
更多推荐
所有评论(0)