TransPortController类说明:
方法:registerStateListner(TransportStateListener listener):监听播放的状态的
unRegisterStateListener(TransportStateListener listener):取消监听播放的状态
startPlaying():请求这个播放器从它的位置开始它的播放
pausePlaying():请求播放器暂停播放的状态
stopPlaying():请求播放器停止播放
getDuration():获取这media stream的总共的时间
getCurrentPosition():获取播放目前的位置
seekTo():定位到指定的播放位置,in milliseconds
isPlaying():返回播放器是否正在播放
getBufferPercentage():获取缓存的播放的百分比
getTransportControlFlags():获取播放器现在的状态
类TransportPerformer类的解析,该类为抽象类用于播放端来响应执行动作的请求来获取它的状态。:
方法有onStart()、OnPause()、onStop()、onGetDuration()、onGetCurrentPosition()、onSeekTo()、onIsPlaying、onGetBufferPercentage()、onGetTransportControlFlags(),onMeiabuttonDown(int keycode,keyEvent event)、onMediaButtonUp()、onAudioFocusChange音频改变的方法等等。
类TransportMediatorJellybeanMR2:
属性:
Context mContext:上下文
AudioManager mAudioManager:音频管理器
view mTargetView:相关的目标视图
TransportMediatorCallback mTransportCallback:主要用来处理按键、音频焦点、播放位置、播放位置更新等等
String mReceiverAction:接收器的动作
IntentFilter mReceiverFilter:接收器的动作
ViewTreeObserver mWindowAttachListener,mWindowFoucusListener:相关的监听器
BraocastReceiver mMediaButtonReceiver:通过intent获取按键的信息然后通过mTansportCallback进行调用。
OnAudioFocusChangeListener mAudioFocusChangeListener:当音频的焦点改变时,通过mTransportCallback.handleAudioFoucusChange(foucusChange)
方法:
destroy时调用windowDetach和mTargetView.getViewTreeObserver().removeOnWindowAttachListener,mTarget.getViewTreeObserver().removeOnWindowFoucusChangeListener(mWindowFoucusListener);
windowAttached():方法主要通过MediaButton的广播接收器,通过pendingIntent.getBroadcast来获取广播。
并对RemoteControlClient来控制播放等等。
gainFoucus:mAudioManager注册mPendingIntent,注册registerRemoteControlClient(mReomteControl);
TransportMediator类的说明 extends TransportController:
takeAudioFoucus():使音频获取焦点,通过mAudioManager.requestAudioFoucus(mAudioFousChangeListener,AudioManager.STREAM_MUSIC,AudioManager.AuDIOFOUCUS_GAIN);
startPlaying():设置播放状态并调用takeAudioFoucus
refreshState():刷新相关的状态
pausPlaying():暂停播放是dropAudioFoucus
stopPlaying():更新状态和dropAudioFocus();
windowDetached():当窗口loseFocus失去焦点。
类TransportStateListener:对于播放状态改变的监听器含有onPlayingChanged(TransportController controller),onTransportControlsChanged动作改变
类TransportMediator extends TransportController:
属性:
Context mContext:上下文
TransportPerformer mCallbacks:执行播放、暂停等动作
AudioManager mAudioManager:音频管理器
View mView:视图
Object mDispatcherState:分配的状态
TransortMediatorJellybeanMR2 mController:控制器
mListeners:视频播放端口的状态的监听器
mTransportKeyCallback:实现
KEYCODE_MEDIA_PALY等等为自定义的很多keycode
KeyEvent.callback mKeyEventCallback:当点击时判断相应的kecode,并mCallback.onMediaButtonDown(keycode,event):false等。
方法:
isMediaKey(int keycode):判断是否是相关的Media的key
TransportMediator(Activity activity,View view,TransportPerformer callback):实现了TransportMediatorJellyBeanMR2
getRemoteControlClient():获取远端的RemoteControlClient
dispatchKeyEvent(keyEvent event):event.dispatch(mKeyEventCallback,(KeyEvent.DispacherState)mDispacherState,this);
registerStateListener(TransportStateListener listener):mListener.add(listener);
reportPlayingChanged():报告播放状态的改变,整个采用的观察者模式。
reportTransportControlsChanged():方法主要调用监听器的listener.onTransportControlsChanged(this);
pushControllerState():如果mController不为空时,mController.refreshState;
refreshState():调用pushControllerState()、reportPlayingChanged()、reportTransportControlsChanged();
startPlaying():开始播放,并调mController.startPlaying(),mCallbacks.onStart(),pushControllerState()、reportPlayingChanged();
pausePlaying():暂停播放,mController.pausePlaying(),mCallbacks.onPause(),pushControllerState()、
reportPlayingChanged().
stopPlaying():mController.stopPlaying();mCallbacks.onStop(),pushControllerState(),
reportPlayingChanged().
getDuration():获取mCallback.onGetDuration();
getCurrentPosition():获取mCallbck.onGetCurrentPosition()
seekTo(long pos):mCallback.onSeekTo(pos);
isPlaying():mCallbacks.onIsPlaying()
getTansportControlFlags():返回mCallbck.onGetTranportContrlFlags;