Android-系统播放器

一、音乐播放器
  1. 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();   //停止
  2. 防止多次创建MediaPlay,导致多首歌曲同时播放
    1. 解决方式一:在开启先判断MediaPlayer是否为空,如果为空创建,不为空release()释放。
    2. 解决方式二:在单击播放按钮后将按钮置为不可用/不可点击,添加mediaPlayer的监听,如果文件完成播放了,将mediaPlayer.replease()释放并重新将按钮置为可用
      • mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
      • public void onCompletion(MediaPlayer mp) {
      • mediaPlayer.release();// shifang
      • mediaPlayer = null;
      • startBT.setEnabled(true);
      • startBT.setClickable(true);
      • }
      • });
  3. 在进行暂停,重播,停止等操作时 要判断  mediaPlayer != null
  4. 清单文件中配置权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  5. 显示同步歌词
    • 将下载的lrc文件中的时间和对应歌词解析出来,存入map集合
    • 设置一个定时器,在某一时间段或取map集合的时间
  6. 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
  1. 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值