没有合适的资源?快使用搜索试试~ 我知道了~
应用中的音乐一般放在res/raw目录下以上两个方法用起来非常方便,便这两个方法每次都会返回新创建的Mediaplayer对象,同时也不方便控件播放状态.如果需要播放多个音频,使用这种方法就不方便.可以使用MedaiPlayer.setDataSource()方法来装载指定的音频文件播放暂停与继承播放添加权限1.AcousticEchoCanceler:取消回声控制器2.AtutomaticGainControl:自动增益控制器3.NoiseSupperssor:噪音压制控制器4.BassBoost:重低音控制器5.Equalizer:均衡控制器6.PresetReverb:预设音声控制器7.
资源推荐
资源详情
资源评论
安卓第十六天笔记安卓第十六天笔记-音频与视频播放音频与视频播放
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.AcousticEchoCanceler:取消回声控制器
2.AtutomaticGainControl:自动增益控制器
3.NoiseSupperssor:噪音压制控制器
4.BassBoost:重低音控制器
5.Equalizer:均衡控制器
6.PresetReverb:预设音声控制器
7.Visualizer:示波器
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()){
//启用噪音压制功能
mNoiseSuppressor.setEnabled(true);
}}
后面4个,者需要调用构造器来创建实例,同样需要输入一个audioSession参数,同样用启用它们需要调用 AudioEffect基类
的setEnable(true)方法
6.使用SoundPool播放音效
如果应用程序经常需要播放密集,短促的音效,可以使用SoundPool来播放
为什么不使用Mediaplayer?
缺点:
资源占用较高,延迟时间较长
不支持多个音频同时播放
SoundPool主要用于播放一些较短的声音片段,
与MediaPlayer相比,优势在CPU资源占用低,反应延迟小
同时还支持设置声音的品质,音量,播放比特率等参数
6.1创建SoundPool
Android中提供了SoundPool提供了一个Builder内部类,用于创建SoundPool
Android5.0后SoundPool默认的构造器过时了,建议使用Builder来创建
布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/bomb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放Bomb"/>
<Button
android:id="@+id/shot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放Shot"/>
<Button
android:id="@+id/arrow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放Arrow"/>
</LinearLayout>
Activity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button bomb;
private Button shot;
private Button arrow;
//定义一个SoundPool
private SoundPool soundPool;
//定义一个Map用来存放声音
private HashMap<Integer, Integer> soundMap = new HashMap<Integer, Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bomb = (Button) findViewById(R.id.bomb);
shot = (Button) findViewById(R.id.shot);
arrow = (Button) findViewById(R.id.arrow);
bomb.setOnClickListener(this);
shot.setOnClickListener(this);
arrow.setOnClickListener(this);
AudioAttributes attr = new AudioAttributes.Builder()
//设置音效使用的场景--游戏
.setUsage(AudioAttributes.USAGE_GAME)
//设置音效的类型
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build();
//创建声音池
soundPool = new SoundPool.Builder()
//设置声明池的属性
.setAudioAttributes(attr)
//设置最大容量
.setMaxStreams(10)
.build();
//加载指定音频文件使用load方法
/*
context
the application context
剩余38页未读,继续阅读
资源评论
weixin_38703787
- 粉丝: 5
- 资源: 889
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SpringBoot和MyBatis的教育管理系统.zip
- audio1244261864.m4a
- yolo-world.zip
- (源码)基于SpringBoot框架的远程控制门禁系统.zip
- 精选微信小程序源码:早教幼儿启蒙小程序(含源码+源码导入视频教程&文档教程,亲测可用)
- (源码)基于SpringBoot和Vue的论坛系统.zip
- 运维系列亲测有效:mobaxterm怎么删除已保存的密码
- (源码)基于Bash的Linux环境管理利器-快速启动系统配置文件管理器.zip
- Kylin操作系统在虚拟环境下的安装与配置指南
- (源码)基于STM32F0系列微控制器的时钟配置系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功