Android多媒体运用

MediaPlayer、Looper、Handle

Posted by Kingtous on February 13, 2019

MediaPlayer音频/视频播放

播放视频和音频文件核心类库android.media.MediaPlayer,支持多种格式,如.mp4、.3gp、.ogg、.mp3、.mp4a、.webm。

使用步骤:

(1)创建MediaPlayer实例

(2)设置要播放的文件:SD卡资源

(3)调用MediaPlayer控制方法

(4)设置播放器的监听器

MediaPlayer

  • 创建

    • 1
      
      MediaPlayer mp=new MediaPlayer()
      
  • 设置要播放的文件

    • 1
      2
      
      mp.setDataSource(Address)//可以是网上也可以本地
      mp.create(this,R.raw.test)//自身资源
      
  • 调用控制方法
    • prepare()同步
    • prepareAsync()异步
  • 监听器
    • setOnCompletionListener()
    • setOnErrorListener()
  • 播放
1
2
3
4
5
6
start();
pause();
stop();
seekTo();
release();
reset();//重置/从错误中恢复

Looper、Handle

Looper和Handle用法

(1)Looper:用来封装消息循环和消息队列,用于在android线程中进行消息处理

(2)Handler:可以看做是一个工具类,用来向消息队列中插入消息

线程绑定Looper,Looper绑定Handler

默认情况下,Handler会与其被定义时所在线程的Looper绑定

Handler的handleMessage()消息处理的具体逻辑定义在此方法之内

Handler的sendMessages向消息队列发送消息

Handler的removeMessages销毁队列中的消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HandlerThread thread=new HandlerThread("");
thread.start();//一定要先执行
MyHandler myhandler=new MyHandler(thread.getLooper());
Message msg=myhandler.obtainMessage();
Bundle b=new Bundle();
b.putInt("age",20);
msg.setData(b);
msg.sendToTarget;



class MyHandler extends Handler
{
	//构造函数
	...
	//重载
	@override
	public void handleMessage(Message msg)
    {
    	Bundle b=msg.getData;
    	...
    }
}