android之旅24 多媒体编程:音乐、视频、拍照、视频

public void play(){
    MediaPlayer player = new MediaPlayer();
    player.reset();//必须重置
    player.setDataSource("xxxx.mp3");//设置路径本地文件
    //设置远程路径
    player.setDataSource("http://www.baidu.com/xxx.mp3");


    player.prepare();//加载硬件文件等资源
    player.prepareAsync();//异步加载网络路径文件

    player.start();//重置再start就会重新播放
    //远程文件异步异步加载完成事件
    player.setOnPreparedListener(new OnPreparedListener(){
        public void onPrepared(MediaPlayer mp){
            mp.start();
        }
    });

    //继续播放
    player.start();

    //暂停
    player.puase();
}
// 音乐服务的停止方法一定要复写释放资源
public void onDestroy(){
    super.onDestroy();
    player.stop();//停止播放
    player.release();//此时player所加载的资源全部释放了
}
  • SeekBar设置进度,还能拉动设置进度
  • setMax和setProcess设置最大值和进度条当前进度
Timer timer = new Timer();//定时器消息
timer.schedule(new TimerTask(){
    public void run(){
        int duration = player.getDuration();//获取总时长
        player.getCurrentPostion();//获取当前进度
        Message msg = MainActivity.handler.obtainMessage();
        Bundle bundlle = new Bundle();
        bundle.putInt("duration", duration);
        bundle.putInt();
        //handler 是建议写成static的形式
        MainActivity.handler.sendMessage(msg);
    }
}, 5,500);//开始计时任务的5ms后第一次执行run方法,后面每500ms执行一次

//启动了要注意取消定时器
timer.cancel();
//sb是SeekBar的实例,拉动进度
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListner(){
    player.seekTo(ms);//传入毫秒
});

###视频播放器

  • 用SurfaceView做界面,游戏也用Surface
  • SurfaceView有双缓存技术,内存里面有两帧,分别按序显示到屏幕上,也就是两个界面轮流刷到屏幕上,避免出现闪屏(闪屏实际上是因为单屏幕场景下要先清除到上一帧然后再绘制下一帧,就会在第一帧清除完毕会出现一个瞬时白屏)
  • SurfaceView不可见就不会创建,因为它是重量级组件耗费资源
  • SurfaceView可见就会创建,不可见就会销毁(即使对应的Activity没有被销毁)
<surfaceView
    android:width="match_parent"
    android:heigth="match_parent"
/>
public void onCreate(){

}
  • MediaPlayer支持格式太弱了,可以用Vitamio第三方库,其封装了FFMPEG
  • 也可以用百度媒体云

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值