Android多媒体—音频技术
来源:互联网 发布:c语言 戏说关键字 ppt 编辑:程序博客网 时间:2024/05/21 16:23
一、概述
视频和音乐的操作思想其实都是差不多的。其中音乐的API图已经概括了MedialPlayer的使用步骤,有两个分支需要关注:
- 本地音乐,可以直接 setDataSource–prepare—start
- 网络音乐,考虑到ANR,放到子线程中 setDataSource–prepareAsync–setOnPreparedListener(在其中的onPrepared方法中设置开始)–start
二、小技巧
- 涉及到暂停再播放的问题,可以用SharedPreferences,存放播放的位置,再次打开时,用seekTo跳到指定的位置。
- 为了防止播放错误,可以对MediaPlayer设置错误的监听事件setOnErrorListener.onError()
当播放完时,执行如下,可以设置下一曲或循环等操作
mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.seekTo(0); mp.start(); }}
- 停止时注意release资源
三、本地音乐操作
public class MainActivity extends Activity { private Button start; private Button pause; private Button stop; private EditText et; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.start); pause = (Button) findViewById(R.id.pause); stop = (Button) findViewById(R.id.stop); et = (EditText) findViewById(R.id.editText1); } public void start(View v){ //先拿到路径 String path = et.getText().toString().trim(); //文件路径不能为空 if(TextUtils.isEmpty(path)){ Toast.makeText(this, "文件名不能为空", 0).show(); return; } //文件路径要对 if(!(new File(path).exists())||!path.endsWith(".mp3")){ Toast.makeText(this, "文件不存在或者不是音频文件,请检查。。。", 0).show(); return; } try { //1.创建一个多媒体对象 mediaPlayer = new MediaPlayer(); //2.设置资源 mediaPlayer.setDataSource(path); //3.准备 mediaPlayer.prepare(); //4.开始读 mediaPlayer.start(); //5.当音频文件有错时,执行如下 mediaPlayer.setOnErrorListener(new OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { return false; } }); //6.当播放完时,执行如下,可以设置下一曲或循环等操作 mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.seekTo(0); mp.start(); } }); } catch ( Exception e) { e.printStackTrace(); } } public void pause(View v){ if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); }else { mediaPlayer.start(); } } public void stop(View v){ if (mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.seekTo(0); mediaPlayer.release(); } }}
四、网络音乐的操作
public class MainActivity extends Activity { private EditText et; private MediaPlayer mediaPlayer; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.editText1); dialog = new ProgressDialog(this); dialog.setMessage("正在拼命加载中。。。"); } public void start(View v){ //先拿到路径 String path = et.getText().toString().trim(); if(TextUtils.isEmpty(path)){ Toast.makeText(this, "文件名不能为空", 0).show(); return; } try { //1.创建一个多媒体对象 mediaPlayer = new MediaPlayer(); //2.设置资源 mediaPlayer.setDataSource(path); //3.用异步去准备,从而让子线程去执行 dialog.show(); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { //4.准备 try { mediaPlayer.start(); dialog.dismiss(); } catch ( Exception e) { e.printStackTrace(); } //4.开始读 } }); //5.当音频文件有错时,执行如下 mediaPlayer.setOnErrorListener(new OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { return false; } }); //6.当播放完时,执行如下,可以设置下一曲或循环等操作 mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.seekTo(0); mp.start(); } }); } catch ( Exception e) { e.printStackTrace(); } } public void pause(View v){ if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); }else { mediaPlayer.start(); } } public void stop(View v){ if (mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.seekTo(0); mediaPlayer.release(); } }}
0 0
- Android多媒体—音频技术
- Android—多媒体(音频播放)
- Android多媒体——播放音频
- Android多媒体音频—MediaRecoder&MediaPlayer
- Android多媒体音频—AudioRecord&AudioTrack
- Android 多媒体开发-音频
- Android多媒体-深入音频
- Android多媒体—图片技术
- Android多媒体—视频技术
- Android多媒体-深入音频系列
- Android 多媒体——音频播放录制、视频播放、相机
- Android 多媒体应用——MediaPlayer音频播放
- Android 多媒体应用——SoundPool音频播放
- Android 多媒体应用——MediaRecorder录制音频
- 【Android】多媒体编程——MediaPlayer音频播放
- Android多媒体(1)——基础知识与音频
- android 多媒体(图像,视频,音频)api
- Android多媒体之音频、视频录制MediaRecorder
- 专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变
- fl2440开发板hello world模块驱动编写
- boost:function
- 文章标题js一些方法的总结
- Windows安装Theano
- Android多媒体—音频技术
- 虚函数在对象中的内存布局
- JDBC-查询操作
- Linux 对VIM的一些格式设置
- C++类内存分布
- J2EE后台response通过alert显示消息
- 多种启动、停止、重启 MySQL 的方法
- 疯狂JAVA讲义--画圆
- 安卓OOM和Bitmap图片二级缓存机制(一)