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

    xiaoxiao2021-12-14  22

    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;

     

                         

                     

                  

               

    转载请注明原文地址: https://ju.6miu.com/read-964117.html

    最新回复(0)