关于定义视频播放器的界面的相关的类transPortcontroll等

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;

 

                     

                 

              

           


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值