四年级信息技术上册第9课媒体播放器课件1冀教版

文档属性

名称 四年级信息技术上册第9课媒体播放器课件1冀教版
格式 zip
文件大小 1.0MB
资源类型 教案
版本资源 冀教版
科目 信息技术(信息科技)
更新时间 2017-09-18 11:59:33

图片预览

文档简介

课件24张PPT。Lesson3 媒体播放器第二阶段课堂回顾如何让控件动起来?
自定义控件的原理
自定义属性的两种方法
实现音量控件多媒体简介多媒体是计算机和视频技术的结合,实际上它是两个媒体:声音和图像
音频和视频的播放,我们都会用到MediaPlayer这个类进行播放
从源文件中播放1,在项目的res/raw目录下,放置一个android支持的多媒体文件,如MP3,会在R文件中生成对应的索引
2,通过MediaPlayer.create(this, R.id.et_mp3)创建一个文件
3,使用start播放核心代码mediaplayer = MediaPlayer.create(this, R.raw.music02);

try {
mediaplayer.start();
} catch (IllegalStateException e) {
e.printStackTrace();
}
注:将muisc02.mp3文件放入res/raw的文件夹中从文件系统中播放1,实例化一个MediaPlayer
2,MediaPlayer.setData方法调用(输入文件所在路径)
3,调用MediaPlayer.prepare进行准备
4,调用start进行播放核心代码private void createMusicFromPath(String path)
{
mediaplayer = new MediaPlayer();
try {
mediaplayer.setDataSource(path);
mediaplayer.prepare();
mediaplayer.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}注:将音频文件放入在手机的sdcard,输入路径即可播放播放网络音乐1,获取音乐链接地址
A,通过地址创建Uri,通过 MediaPlayer.create(this, uri)创建,获取player对象
B,new出MediaPlayer对象,通过MediaPlayer.setData(webPath)创建player对象,然后调用prepare();
2,调用start方法进行播放音乐播放器多媒体状态使用SeekBar实现控制播放位置功能1,在视图xml中拖入SeekBar控件
2,设置seekBar.setMax(mediaPlayer.getDuration())为媒体的最大长度
3,实现控件的OnSeekBarChangeListener接口
4,实现onProgressChanged(//当进度状态发生变化时候
SeekBar seekBar,
int progress,//当前的进度
boolean fromUser)//是否由用户操作导致public void onProgressChanged(SeekBar arg0, int progress, boolean isFromUser) {
if(isFromUser)
{
mediaPlayer.seekTo(progress);
}
}实现进度条SeekBar自动移动效果//1,创建一个线程
Runnable run = new Runnable() {
public void run() {
// TODO Auto-generated method stub
//获取当前播放音乐的位置
if(mediaPlayer != null)
{
int current = mediaPlayer.getCurrentPosition();
progressBar.setProgress(current);
if(mediaPlayer.isPlaying())
{
progressHandler.postDelayed(run,100);
}
}
}
};
//2,创建一个handler用于控制线程
Handler progressHandler = new Handler();
progressHandler.post(run);//启动线程
progressHandler.postDelayed(run,100);//延时启动线程
progressHandler.removeCallbacks(run);//删除指定的Runnable对象,使线程对象停止运行。www.huaruiedu.com停止,暂停,重播功能实现A,停止
1,首先判断是否是playing调用player的stop方法
2,同时要将还没有执行的线程从handler中移除progressHandler.removeCallbacks(run);
3,将进度条的seekbar的进度设置为0
B,暂停
1,利用一个boolean变量判断是否是pause状态
2,判断playing,调用play的pause方法,并且removeCallbacks
3,如果是pause状态,则执行start,并且执行progressHandler.post方法
C,重播
1,mediaPlayer.seekTo(0),
2,progressBar.setProgress(0);实现进度条SeekBar缓存条效果//设置缓存更新事件
mediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener(){
//实现更新方法
public void onBufferingUpdate(MediaPlayer arg0, int arg1)
{
//在每次更新之后,设置缓存条的进度 progressBar.setSecondaryProgress(arg1*progressBar.getMax()/100);
}
});MediaPlayer的状态A,停止
1,首先判断是否是playing调用player的stop方法
2,同时要将还没有执行的线程从handler中移除progressHandler.removeCallbacks(run);
3,将进度条的seekbar的进度设置为0
B,暂停
1,利用一个boolean变量判断是否是pause状态
2,判断playing,调用play的pause方法,并且removeCallbacks
3,如果是pause状态,则执行start,并且执行progressHandler.post方法
C,重播
1,mediaPlayer.seekTo(0),
2,progressBar.setProgress(0);核心代码mediaPlayer.reset();//重置为idle状态
mediaPlayer.setDataSource(file.getAbsolutePath());//设置播放的文件
mediaPlayer.prepare();//缓冲
mediaPlayer.setOnPreparedListener(new MyPreparedListener());//设置缓冲完成监听
mediaPlayer.pause();//暂停
mediaPlayer.start();//播放音乐
mediaPlayer.stop(); ();//停止
mediaPlayer.seekTo(progress);//设置播放进度
mediaPlayer.release();//释放关联的资源
progressHandler.postDelayed(run,100);//定时调用Runnable对象
progressHandler.post(run);//将Runnable对象发送到消息队列中
progressHandler.removeCallbacks(run);//将run从消息队列中移除
视频播放器SurfaceView控件SurfaceView控件SurfaceView
可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器
SurfaceHolder
用来操纵surface,处理它在Canvas上画的效果和动画,控制表面,大小,像素等
核心代码SurfaceHolder surfaceHolder = surfaceView.getHolder();//surfaceView的控制对象
surfaceHolder.setFixedSize(176, 144);//设置分辨率
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//不使用surfaceview自身的缓冲机制,把得到的数据直接输出
surfaceHolder.setKeepScreenOn(true);//保持屏幕的亮度
//在播放前设置显示画面
mediaPlayer.setDisplay(surfaceView.getHolder());VideoView的使用//获取VideoView对象
videoView = (VideoView) this.findViewById(R.id.videoView);
//创建播放视频的URI
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/video.mp4");
//设置URI
videoView.setVideoURI(uri);//uri
//设置多媒体控制器
videoView.setMediaController(new MediaController(this));
videoView.start();SoundPool android中可以用mediaplayer播放音乐,使用soundpool可以播一些短的反应速度要求高的声音,比如点击时候的音效
//1,创建SoundPool
soundPool = new SoundPool(
3,//同时播放的流的最大数量
AudioManager.STREAM_MUSIC,// 流的类型,一般为STREAM_MUSIC
0);//采样率转化质量,当前无效果,使用0作为默认值
//2,载入音效
int id = load(Context context, int resId, int priority) //从APK资源载入
//3,通过id播放音效
soundPool.play(soundMap.get(id),//音频的id
100, //左边声音大小
100, //右边声音大小
1, //优先级别
0, //循环次数
1);//速率,1为正常速度本章总结如何使用MediaPlayer播放MP3
多媒体有哪些状态
使用seekBar
如何使用SurfaceView播放视频?作业完成音乐播放器和视频播放器知识就是力量Thank You !