网友通过本文主要向大家介绍了第十六天,夜钓第十六天直播,功夫世界第十六天,第十六天英文,排卵第十六天白板等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
安卓第十六天笔记-音频与视频播放,安卓第视频播放
安卓第十六天笔记-音频与视频播放
音频与视频播放
1.音频 播放应用资源中的音乐
应用中的音乐一般放在res/raw目录下
/** * 播放应用资源中的音乐 * * @param v */ public void player1(View v) { // 设置播放数据源 MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.gm); // 不需要准备,create,创建完成直接可以使用播放 mediaPlayer.start(); }
2.播放本地其它地方的音乐文件如SD卡上的
/** * 播放系统中的音乐 * * @param v */ public void player2(View v) { //文件地址 File file =new File(Environment.getExternalStorageDirectory(),"man.mp3"); //转换为uri Uri uri = Uri.fromFile(file); // 设置播放数据源 MediaPlayer mediaPlayer = MediaPlayer.create(this,uri); // 不需要准备,create,创建完成直接可以使用播放 mediaPlayer.start(); }
以上两个方法用起来非常方便,便这两个方法每次都会返回新创建的Mediaplayer对象,同时也不方便控件播放状态.如果需要播放多个音频,使用这种方法就不方便.
可以使用MedaiPlayer.setDataSource()方法来装载指定的音频文件
3.使用MedaiPlayer.setDataSource()来播放音乐
播放
private MediaPlayer mediaPlayer ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mediaPlayer = new MediaPlayer(); } public void player(View v) { try { //初始化 mediaPlayer.reset(); //设置资源 mediaPlayer.setDataSource("/mnt/sdcard/man.mp3"); //准备声音本地 mediaPlayer.prepare(); } catch (Exception e) { e.printStackTrace(); } //播放 mediaPlayer.start(); }
暂停与继承播放
private void init(){ mediaPlayer = new MediaPlayer(); } public void player(View v) { try { init(); //初始化 mediaPlayer.reset(); //设置资源 mediaPlayer.setDataSource("/mnt/sdcard/man.mp3"); //准备声音本地 mediaPlayer.prepare(); } catch (Exception e) { e.printStackTrace(); } //播放 mediaPlayer.start(); } /** * 暂停与继承播放 * @param v */ public void pause(View v){ //判断状态 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){ //暂停 mediaPlayer.pause(); }else if(mediaPlayer!=null) { mediaPlayer.start(); } } /** * 停止 * @param v */ public void stop(View v){ //判断状态 if(mediaPlayer!=null){ //停止播放资源 mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer=null; } }
4.播放网络音乐
private void init(){ mediaPlayer = new MediaPlayer(); } public void player(View v) { //本地Tomcat服务器的地址 String url="http://188.188.3.79:8080/itest/gm.mp3"; //播放,网络音乐 try { init(); //初始化 http://188.188.3.79:8080/itest/gm.mp3 mediaPlayer.reset(); //设置资源 mediaPlayer.setDataSource(url); final ProgressDialog dialog = ProgressDialog.show(this, "加载中", "拼命加载中..........."); //准备声音远程音乐 mediaPlayer.prepareAsync(); /** * 设置监听器什么时候缓冲,准备好音乐, */ mediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { //准备好了,就对话框消失 dialog.dismiss(); //开始播放 mediaPlayer.start(); } }); } catch (Exception e) { e.printStackTrace(); } }
添加权限
<uses-permission android:name="android.permission.INTERNET"/>
5.一些音乐特效
1,2,3只要调用它们的静态方法create()方法创建相应的实例,
然后调用穹们的isAvailabel()方法判断是否可用,
再调用setEnable(boolean enabled)方法启用相应的效果即可
/* 定义系统回声控制器 */ private void setAcousticEchoCanceler(){ mAcousticEchoCanceler = AcousticEchoCanceler.create(mPlayer.getAudioSessionId()); if(mAcousticEchoCanceler.isAvailable()){ //设置取消回声功能 mAcousticEchoCanceler.setEnabled(true); } } /* 自动增益控制器 */ private void setAutomaticGainControl(){ mAutomaticGainControl = AutomaticGainControl.create(mPlayer.getAudioSessionId()); if(mAutomaticGainControl.isAvailable()){ //启用自动增益功能 mAutomaticGainControl.setEnabled(true); } } /* 噪音压制控制器 */ private void setNoiseSuppressor(){ mNoiseSuppressor = NoiseSuppressor.create(mPlayer.getAudioSessionId()); if(mNoiseSuppressor.isAvailable()){ //启用噪音压制功能