安卓实现的简单音乐播放器需要的几个功能
1:扫描并读取音乐
2:播放音乐
3:停止播放
首先是扫描读取音乐
加载音频:
加载音频(BeatBoxjava)
private void loadSounds() {
private void load(Sound sound) throws IOException {
AssetFileDescriptor afd = mAssets.openFd(sound.getAssetPath()); int soundId = mSoundPool.load(afd, 1); sound.setSoundId(soundId);
}
public list<Sound> getSounds() { return mSounds;
}
}
载人全部音频文件(BeatBox.java)
private void loadSounds() {
for (String filename : soundNames) { try {
String assetPath = SOUNDS_FOLDER + "/" + filename;
Sound sound = new Sound(assetPath); load(sound);
mSounds.add(sound);
} catch (IOException ioe) {
Log.e(TAG, "Could not load sound " + filename, ioe);
}
}
}
然后是播放音乐
在BeatBox中添加play(Sound)方法。
播放音频(BeatBox.java)
public BeatBox(Context context) { mAssets = context.getAssets();
// This old constructor is deprecated but needed for compatibility mSoundPool = new SoundPool(MAX_SOUNDS, AudioManager.STREAM_MUSIC, 0); loadSounds();
}
public void play(Sound sound) {
Integer soundId = sound.getSoundId(); if (soundId == null) { return;
}
mSoundPool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f);
}
private void loadSounds() {
播放前,要检查并确保soundId不是null值。Sound加载失败会出现null值的情况。
检查通过后,就可以调用SoundPool.play(int, float, float, int, int, float)方法播放音频了。
播放完成后,停止播放
释放BeatBox (BeatBoxFragment.java)
public class BeatBoxFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
}
@Override
public void onDestroy() { super.onDestroy(); mBeatBox.release();
}
}
成功运行音频播放器,音频开始播放后,点击后退按钮,可以实现停止播放