MediaPlayer 播放音频的类
- 两种创建方式
— new MediaPlayer();
—-MediaPlayer.create()
设置播放路径
setDataSource(path)
准备播放
1.prepared()同步准备,占用主线程资源
2.prepareAsync()异步准备
播放器的监听事件
–1.setOnCompleteListener
播放结束后的监听事件
–2.setOnPrepareListener
播放准备的监听事件
* MediaPlayer对象提供的方法*
1. 开始播放 start()
2. pause()暂停bofang
3. stop()停止播放
4. release()释放音频资源
5. getDurtion()获取音频资源长度
6. getCurrentPosition()获取当前播放的的进度
7. seekto()定位音频到指定的位置
Service 四大组件之一
1.没有界面运行在后台的一个组件,
2.运行在主线程的组件,耗时操作也需要使用线程
3.要在mainfest中声明注册
service两种创建方式
通过Intent对象开启service
1. startService();
2. bindService();
flag: 0 如果service没有创建,不能通过绑定的方式创建service
flag:BIND_AUTO_CREATE 如果没有 创建,通过绑定的方式创建service
service的生命周期
- startService
onCreate–onStartCommend–onDestory
- bindService
onCreate–onBind–onUnBind–onDestory
注意:
重复调用startService onStartConmend会一直调用
Binder实现了Ibinder
onBind()这个生命周期方法返回值是Ibinder类型
service可以通过Binder对象来和其他组件进行数据交互
ServiceConnection
- onServiceConnected: 通过绑定的方式启动service并且绑定成功后,会在绑定service的组建中回调该方法 service对象就是onBind生命周期方法return返回的Binder对象
- onServiceDisconnected() 解除绑定后,调用的方法
关闭service
stopService(): 使用startService关闭service的方法
unbindService使用bindService关闭服务的方法
广播BroadcastReceiver
1.四大组件之一,没有界面
2广播的注册两种方式
——2.1静态注册 mainfest.xml文件中注册
——2.2动态注册—不需要在mainfest中声明节点,和其他组件不同的地方是,可以在代码中声明—
IntentFilter类的对象
调用addAction(“广播名字 (什么型号)”)
registerReceiver(“广播对象”,”要注册的IntentFilter”)
广播的类型
- 标准广播; 不能拦截,任何接收器都可以接收到广播信号
- 有序广播: 通过优先级,先接收到的接收器,可以停止该广播继续向下发送,也就恶意修改广播中传递的内容
两种信号源
1.自定义信号源
—1.new Intent(“信号源”)
—Intent intent = new Intent();
intrent.setAction(“信号源”)
/******************************************
* Dynamic registration broadcasting method
*/
public void RegesterBroadcast() {
IntentFilter filter = new IntentFilter();
filter.addAction("flag");
registerReceiver(new MyMediaPlayerBroadcast(), filter);
}