【Android学习笔记】Android播放音乐示例代码

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);
		}

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值