关于定义视频播放器的界面的相关的类transPortcontroll等
TransPortController類說明:
方法:registerStateListner(TransportStateListener listener):監(jiān)聽播放的狀態(tài)的
? ? ? ? ? ?unRegisterStateListener(TransportStateListener listener):取消監(jiān)聽播放的狀態(tài)
? ? ? ? ? ?startPlaying():請求這個播放器從它的位置開始它的播放
? ? ? ? ? ?pausePlaying():請求播放器暫停播放的狀態(tài)
? ? ? ? ? ?stopPlaying():請求播放器停止播放
? ? ? ? ? ?getDuration():獲取這media stream的總共的時間
? ? ? ? ? ?getCurrentPosition():獲取播放目前的位置
? ? ? ? ? ?seekTo():定位到指定的播放位置,in milliseconds
? ? ? ? ? ?isPlaying():返回播放器是否正在播放
? ? ? ? ? ?getBufferPercentage():獲取緩存的播放的百分比
? ? ? ? ? ?getTransportControlFlags():獲取播放器現(xiàn)在的狀態(tài)
類TransportPerformer類的解析,該類為抽象類用于播放端來響應(yīng)執(zhí)行動作的請求來獲取它的狀態(tài)。:
? ?方法有onStart()、OnPause()、onStop()、onGetDuration()、onGetCurrentPosition()、onSeekTo()、onIsPlaying、onGetBufferPercentage()、onGetTransportControlFlags(),onMeiabuttonDown(int keycode,keyEvent event)、onMediaButtonUp()、onAudioFocusChange音頻改變的方法等等。
類TransportMediatorJellybeanMR2:
屬性:
? ? ? ? ? ?Context mContext:上下文
? ? ? ? ? ?AudioManager mAudioManager:音頻管理器
? ? ? ? ? view mTargetView:相關(guān)的目標視圖
? ? ? ? ? ?TransportMediatorCallback ?mTransportCallback:主要用來處理按鍵、音頻焦點、播放位置、播放位置更新等等
? ? ? ? ? ? ?String mReceiverAction:接收器的動作
? ? ? ? ? ? IntentFilter mReceiverFilter:接收器的動作
? ? ? ? ? ? ViewTreeObserver mWindowAttachListener,mWindowFoucusListener:相關(guān)的監(jiān)聽器
? ? ? ? ? ? BraocastReceiver mMediaButtonReceiver:通過intent獲取按鍵的信息然后通過mTansportCallback進行調(diào)用。
? ? ? ? ? ? ? OnAudioFocusChangeListener mAudioFocusChangeListener:當音頻的焦點改變時,通過mTransportCallback.handleAudioFoucusChange(foucusChange)
方法:
? ? ? ? ? ? destroy時調(diào)用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():設(shè)置播放狀態(tài)并調(diào)用takeAudioFoucus
? ? ? ? ? ? ? refreshState():刷新相關(guān)的狀態(tài)
? ? ? ? ? ? ? pausPlaying():暫停播放是dropAudioFoucus
? ? ? ? ? ? ? stopPlaying():更新狀態(tài)和dropAudioFocus();
? ? ? ? ? ? ? windowDetached():當窗口loseFocus失去焦點。
 
 
?類TransportStateListener:對于播放狀態(tài)改變的監(jiān)聽器含有onPlayingChanged(TransportController controller),onTransportControlsChanged動作改變
 
 
?類TransportMediator extends TransportController:
? 屬性:
? ? ? ? ? ? Context mContext:上下文
? ? ? ? ? ? TransportPerformer mCallbacks:執(zhí)行播放、暫停等動作
? ? ? ? ? ? AudioManager mAudioManager:音頻管理器
? ? ? ? ? ? View mView:視圖
? ? ? ? ? ? Object mDispatcherState:分配的狀態(tài)
? ? ? ? ? ? TransortMediatorJellybeanMR2 mController:控制器
? ? ? ? ? ? mListeners:視頻播放端口的狀態(tài)的監(jiān)聽器
? ? ? ? ? ? mTransportKeyCallback:實現(xiàn)
? ? ? ? ? ??
? ? ? ? ? ? KEYCODE_MEDIA_PALY等等為自定義的很多keycode
? ? ? ? ? ? KeyEvent.callback mKeyEventCallback:當點擊時判斷相應(yīng)的kecode,并mCallback.onMediaButtonDown(keycode,event):false等。
? ? ? ? ? ? ?
? ? ? ? ? ??
方法:
? ? ? ? ? ? ? ? isMediaKey(int keycode):判斷是否是相關(guān)的Media的key
? ? ? ? ? ? ? ? TransportMediator(Activity activity,View view,TransportPerformer callback):實現(xiàn)了TransportMediatorJellyBeanMR2
? ? ? ? ? ? ? ? ?getRemoteControlClient():獲取遠端的RemoteControlClient
? ? ? ? ? ? ? ? ?dispatchKeyEvent(keyEvent event):event.dispatch(mKeyEventCallback,(KeyEvent.DispacherState)mDispacherState,this);
? ? ? ? ? ? ? ? ?registerStateListener(TransportStateListener listener):mListener.add(listener);
? ? ? ? ? ? ? ? ? reportPlayingChanged():報告播放狀態(tài)的改變,整個采用的觀察者模式。
? ? ? ? ? ? ? ? ? reportTransportControlsChanged():方法主要調(diào)用監(jiān)聽器的listener.onTransportControlsChanged(this);
? ? ? ? ? ? ? ? ? pushControllerState():如果mController不為空時,mController.refreshState;
? ? ? ? ? ? ? ? ? refreshState():調(diào)用pushControllerState()、reportPlayingChanged()、reportTransportControlsChanged();
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? startPlaying():開始播放,并調(diào)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;
?
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ??
? ? ? ? ? ?
 
總結(jié)
以上是生活随笔為你收集整理的关于定义视频播放器的界面的相关的类transPortcontroll等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 关于自定义可以点击的的布局
 - 下一篇: 关于音频焦点的理解