日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于定义视频播放器的界面的相关的类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;

?

? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ??

? ? ? ? ? ?


總結

以上是生活随笔為你收集整理的关于定义视频播放器的界面的相关的类transPortcontroll等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。