音视频播放 第十一章 多媒体应用开发( 二 )


? ii. 调用对象的()方法准备音频 。
? iii. 调用的start()、stop()等方法控制播放即可 。
例如:player=new MediaPlayer();try {player.setDataSource("/sdcard/pm.mp3"); //或者player.setDataSource(Environment.getExternalStorageDirectory ()+"/pm.mp3");?player.prepare();} catch (IOException e) {?e.printStackTrace();}
注意:对访问需要在.xml设置相应权限

安卓23.0版本以上,不仅仅要设置上面的权限,还要在对SD卡有读写操作的地方授权
//判断是否6.0以上的手机if(Build.VERSION.SDK_INT>=23){//判断是否有这个权限int permission = ActivityCompat.checkSelfPermission (this, Manifest.permission.READ_EXTERNAL_STORAGE);//checkSelfPermission检查对应权限是否打开,如果是PackageManager.PERMISSION_GRANTED 表示打开if (permission != PackageManager.PERMISSION_GRANTED) {// 请求权限ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQ_CODE);}//第二个参数表示请求的权限数组//第三个参数表示的请求码,请求码要求大于0
③ 网络上的媒体文件
? A. 直接使用( ,Uri uri)
例如:MediaPlayer mp=MediaPlayer.create(this,Uri.parse(http://www.test.cn/music/m1.mp3);
? B. 调用( ,Uri uri)
例如:mp.setDataSource(this,Uri.parse("http://www.test.cn/music/m1.mp3"));
注:要在.xml文件中授予程序访问网络的权限,具体代码如下:

3.对播放器的主要控制方法:
通过控制播放器的状态的方式来控制媒体文件的播放,其中:()和() 提供了同步和异步两种方式设置播放器进入状态
()
同步地为播放器的回放做准备 。设置数据源和显示表面之后,需要调用()或() 。对于文件,可以调用(),它会阻塞,直到准备好播放为止 。
()
异步地为播放器的回放做准备 。设置数据源和显示表面之后,需要调用()或() 。对于流,应该调用(),它会立即返回,而不是阻塞,直到缓冲了足够的数据 。
方法是将资源同步缓存到内存中,一般加载本地较小的资源可以用这个,如果是较大的资源或者网络资源建议使用方法
需要设置监听事件r();来通知资源已经获取到了,然后实现( mp)方法.在里面启动
videoView.setOnPreparedListener(p);OnPreparedListener p = new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mp.play();}};
4.的监听事件
通常在新建一个实体后,会对给它增加需要的监听事件
1.2 的状态图和及生命周期
状态
Error状态
状态(初始化)
状态
同步方法:使用本地音视频文件,调用 () 同步的将 状态变为状态
异步方法:使用网络音视频,需要缓冲;调用 ()异步的将 状态变为 状态,最后再到状态 ,状态是个短暂的状态
状态是一个过渡状态( state),处于状态时,可以通过相对应的方法设置音量,屏幕常亮,播放循环等 。
状态
状态
状态

音视频播放  第十一章 多媒体应用开发

文章插图
2、类
提升音频效果的方法总体分为软件和硬件两大类 。硬件如:HiFi耳机、、音源修复算法、音效算法等等 。软件层面,可以大致分为基于音频数据流的处理方式以及基于的音效框架的处理方式 。基于音频数据流的处理方式比较容易理解,基本原理就是先把数据丢给第三方的库进行处理,接着将处理完成的数据重新写入原有数据流的节点即可 。这里主要探讨下基于的音效框架的处理方式 。就是 audio ( 音频框架)