一、音乐播放器
- API文档中有开启系统播放器的代码,Dev Guide --->Media PlayBack
- MediaPlayer mediaPlayer = new MediaPlayer();
- mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
- mediaPlayer.setDataSource(path);
- mediaPlayer.prepare(); // might take long! (for buffering, etc)
- mediaPlayer . start(); //开启播放器
- mediaPlayer . pause(); //暂停播放器
- mediaPlayer . seekTo(0) ; //重播
- mediaPlayer . stop(); //停止
- 防止多次创建MediaPlay,导致多首歌曲同时播放
- 解决方式一:在开启先判断MediaPlayer是否为空,如果为空创建,不为空release()释放。
- 解决方式二:在单击播放按钮后将按钮置为不可用/不可点击,添加mediaPlayer的监听,如果文件完成播放了,将mediaPlayer.replease()释放并重新将按钮置为可用
- mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
- public void onCompletion(MediaPlayer mp) {
- mediaPlayer.release();// shifang
- mediaPlayer = null;
- startBT.setEnabled(true);
- startBT.setClickable(true);
- }
- });
- 在进行暂停,重播,停止等操作时 要判断 mediaPlayer != null
- 清单文件中配置权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- 显示同步歌词
- 将下载的lrc文件中的时间和对应歌词解析出来,存入map集合
- 设置一个定时器,在某一时间段或取map集合的时间
- SoundPool & 同步异步的问题
- SoundPool pool = new SoundPool(池中最大声音数 , 默认值AudioManager. ,默认值0);
- int soundID = pool . load( this , R.raw.ring , 优先级1);
- pool . play( soundID , 左声道1.0f,右声道1.0f,优先级0,loop是否循环播放,语速1.0f );
- loop :斗地主的背景乐,为0不循环,1循环
- 语速:会说话的tom猫,2.5f倍
- loop . load( ...) ; 这句代码是异步的操作,需要花费一定的时间加载声音,应该放在onCreate方法中
- 同步:张三叫李四吃饭 如果李四不回答 ,张三就一直的等待.
- 异步:张三叫李四吃饭,李四回答不回答张三,张三就接着干自己的事情,李四干完事后回复张三
- 面试题:多次调用异步方法,会出现什么问题?
- A程序异步调用B程序100次,B在忙完自己的程序后才响应100次
二、视频播放器 & SurfaceView & SurfaceHolder
- SurfaceView:内部维护了两个缓冲区A,B,缓冲区A填充满在前台界面显示的同时缓冲区B准备好数据,缓冲区B在显示界面的同时,A缓冲区到后台准备数据,A、B缓冲区的来回切换来保证画面的流畅播放
一.音频播放
android-sdk/docs/guide/topics/media/mediaplayer.html#mediaplayer
二.音频池
SoundPool可以加载若干音频文件到内存中, 播放时直接使用. 省去了每次都加载的麻烦.
new SoundPool(), load(), play()
三.视频播放
基本和音频播放相同, 但需要使用SurfaceView显示画面
在MediaPlayer创建之后使用setDisplay()方法设置SurfaceView
注意: SurfaceView在被切换到后台时会自动销毁, 再次切换到前台时重新创建
我们可以添加一个Callback监听其销毁与创建
四.拍照
android-sdk/docs/reference/android/hardware/Camera.html
五.录像
android-sdk/docs/guide/topics/media/camera.html#capture-video
六.系统摄像头
android-sdk/docs/guide/topics/media/camera.html#intents
七.通知
1.Toast
android-sdk/docs/guide/topics/ui/notifiers/toasts.html
2.StateBar
android-sdk/docs/guide/topics/ui/notifiers/notifications.html
3.Dialog
android-sdk/docs/guide/topics/ui/notifiers/index.html#Dialog