1.MediaPlayer类,适合播放背景音乐
有两种创建MediaPlayer的方式
①
MediaPlayer mediaPlayer=MediaPlayer.create(getApplicationContext(), R.raw.gameback);
②
MediaPlayer mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource("/mnt/sdcard/1.mp3");
//获取sd卡中文件的路径可以String path=new File(Environment.getExternalStorageDirectory(),"1.mp3").getAbsolutePath();
mediaPlayer.prepare();//进行数据的缓冲
播放,需要给mediaPlayer添加一个OnPreparedListener的监听:
class="java">mediaPlayer.setOnPreparedListener(new myPreparedListener());
private final class myPreparedListener implements OnPreparedListener{
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();//开始播放
}
}
暂停
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();//暂停
}
重新播放,指定从某点开始播放
if (mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(0);//由时间刻度来定义,这里的0代表从头开始播放
}
得到当前播放进度
int position=mediaPlayer.getCurrentPosition();
停止
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();//停止
}
释放资源
mediaPlayer.release();
mediaPlayer=null;
2.SoundPool类,适合播放短的音效,大小要小于1M,比如射击的声音等等
例子:
public class MainActivity extends Activity {
private MediaPlayer mediaPlayer;
private SoundPool soundpool;
private int sound_id;
private AudioManager audiomanager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//Button--android:onClick="play"
public void play(View v){
soundpool=new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
sound_id=soundpool.load(getApplicationContext(), R.raw.dong, 1);
soundpool.setOnLoadCompleteListener(new myOnLoadCompleteListener());
audiomanager=(AudioManager)this.getSystemService(AUDIO_SERVICE);
}
//监听SoundPool加载完成
private final class myOnLoadCompleteListener implements OnLoadCompleteListener{
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
float streamVolumeCurrent = audiomanager.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = audiomanager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
soundpool.play(sound_id, volume, volume, 1, 0, 1);
}
}
}