【例子介绍】TVBOX IPTV电视源码
【相关图片】
【源码结构】
.
├── TVBOX IPTV电视源码_TVBoxOSC-main.zip
└── TVBoxOSC-main
├── LICENSE
├── app
│ ├── build.gradle
│ ├── libs
│ │ └── thunder.jar
│ ├── proguard-rules.pro
│ ├── schemas
│ │ └── com.github.tvbox.osc.data.AppDataBase
│ │ ├── 1.json
│ │ └── 3.json
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── ua.db
│ ├── java
│ │ ├── com
│ │ │ └── github
│ │ │ ├── catvod
│ │ │ │ └── crawler
│ │ │ │ ├── JarLoader.java
│ │ │ │ ├── Spider.java
│ │ │ │ ├── SpiderDebug.java
│ │ │ │ └── SpiderNull.java
│ │ │ └── tvbox
│ │ │ └── osc
│ │ │ ├── api
│ │ │ │ └── ApiConfig.java
│ │ │ ├── base
│ │ │ │ ├── App.java
│ │ │ │ ├── BaseActivity.java
│ │ │ │ └── BaseLazyFragment.java
│ │ │ ├── bean
│ │ │ │ ├── AbsJson.java
│ │ │ │ ├── AbsSortJson.java
│ │ │ │ ├── AbsSortXml.java
│ │ │ │ ├── AbsXml.java
│ │ │ │ ├── IJKCode.java
│ │ │ │ ├── LiveChannelGroup.java
│ │ │ │ ├── LiveChannelItem.java
│ │ │ │ ├── LivePlayerManager.java
│ │ │ │ ├── LiveSettingGroup.java
│ │ │ │ ├── LiveSettingItem.java
│ │ │ │ ├── Movie.java
│ │ │ │ ├── MovieSort.java
│ │ │ │ ├── ParseBean.java
│ │ │ │ ├── SourceBean.java
│ │ │ │ └── VodInfo.java
│ │ │ ├── cache
│ │ │ │ ├── Cache.java
│ │ │ │ ├── CacheDao.java
│ │ │ │ ├── CacheManager.java
│ │ │ │ ├── RoomDataManger.java
│ │ │ │ ├── VodCollect.java
│ │ │ │ ├── VodCollectDao.java
│ │ │ │ ├── VodRecord.java
│ │ │ │ └── VodRecordDao.java
│ │ │ ├── callback
│ │ │ │ ├── EmptyCallback.java
│ │ │ │ └── LoadingCallback.java
│ │ │ ├── data
│ │ │ │ ├── AppDataBase.java
│ │ │ │ └── AppDataManager.java
│ │ │ ├── event
│ │ │ │ ├── HistoryStateEvent.java
│ │ │ │ ├── RefreshEvent.java
│ │ │ │ ├── ServerEvent.java
│ │ │ │ └── TopStateEvent.java
│ │ │ ├── picasso
│ │ │ │ └── RoundTransformation.java
│ │ │ ├── player
│ │ │ │ ├── IjkMediaPlayer.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── BaseController.java
│ │ │ │ │ ├── LiveController.java
│ │ │ │ │ └── VodController.java
│ │ │ │ ├── render
│ │ │ │ │ ├── SurfaceRenderView.java
│ │ │ │ │ └── SurfaceRenderViewFactory.java
│ │ │ │ └── thirdparty
│ │ │ │ ├── MXPlayer.java
│ │ │ │ └── ReexPlayer.java
│ │ │ ├── receiver
│ │ │ │ ├── CustomWebReceiver.java
│ │ │ │ └── SearchReceiver.java
│ │ │ ├── server
│ │ │ │ ├── ControlManager.java
│ │ │ │ ├── DataReceiver.java
│ │ │ │ ├── InputRequestProcess.java
│ │ │ │ ├── RawRequestProcess.java
│ │ │ │ ├── RemoteServer.java
│ │ │ │ ├── RequestProcess.java
│ │ │ │ └── ShellUtils.java
│ │ │ ├── ui
│ │ │ │ ├── activity
│ │ │ │ │ ├── CollectActivity.java
│ │ │ │ │ ├── DetailActivity.java
│ │ │ │ │ ├── HistoryActivity.java
│ │ │ │ │ ├── HomeActivity.java
│ │ │ │ │ ├── LivePlayActivity.java
│ │ │ │ │ ├── PlayActivity.java
│ │ │ │ │ ├── PushActivity.java
│ │ │ │ │ ├── SearchActivity.java
│ │ │ │ │ └── SettingActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── ApiHistoryDialogAdapter.java
│ │ │ │ │ ├── BackupAdapter.java
│ │ │ │ │ ├── CollectAdapter.java
│ │ │ │ │ ├── GridAdapter.java
│ │ │ │ │ ├── GridFilterKVAdapter.java
│ │ │ │ │ ├── HistoryAdapter.java
│ │ │ │ │ ├── HomeHotVodAdapter.java
│ │ │ │ │ ├── HomePageAdapter.java
│ │ │ │ │ ├── LiveChannelGroupAdapter.java
│ │ │ │ │ ├── LiveChannelItemAdapter.java
│ │ │ │ │ ├── LiveSettingGroupAdapter.java
│ │ │ │ │ ├── LiveSettingItemAdapter.java
│ │ │ │ │ ├── ParseAdapter.java
│ │ │ │ │ ├── PinyinAdapter.java
│ │ │ │ │ ├── QuickSearchAdapter.java
│ │ │ │ │ ├── SearchAdapter.java
│ │ │ │ │ ├── SearchWordAdapter.java
│ │ │ │ │ ├── SelectDialogAdapter.java
│ │ │ │ │ ├── SeriesAdapter.java
│ │ │ │ │ ├── SeriesFlagAdapter.java
│ │ │ │ │ ├── SettingMenuAdapter.java
│ │ │ │ │ ├── SettingPageAdapter.java
│ │ │ │ │ └── SortAdapter.java
│ │ │ │ ├── dialog
│ │ │ │ │ ├── AboutDialog.java
│ │ │ │ │ ├── ApiDialog.java
│ │ │ │ │ ├── ApiHistoryDialog.java
│ │ │ │ │ ├── BackupDialog.java
│ │ │ │ │ ├── BaseDialog.java
│ │ │ │ │ ├── GridFilterDialog.java
│ │ │ │ │ ├── LivePasswordDialog.java
│ │ │ │ │ ├── QuickSearchDialog.java
│ │ │ │ │ ├── RemoteDialog.java
│ │ │ │ │ ├── SelectDialog.java
│ │ │ │ │ ├── TipDialog.java
│ │ │ │ │ └── XWalkInitDialog.java
│ │ │ │ ├── fragment
│ │ │ │ │ ├── GridFragment.java
│ │ │ │ │ ├── ModelSettingFragment.java
│ │ │ │ │ └── UserFragment.java
│ │ │ │ └── tv
│ │ │ │ ├── QRCodeGen.java
│ │ │ │ └── widget
│ │ │ │ ├── DefaultTransformer.java
│ │ │ │ ├── FixedSpeedScroller.java
│ │ │ │ ├── LoadMoreView.java
│ │ │ │ ├── MarqueeTextView.java
│ │ │ │ ├── NoScrollViewPager.java
│ │ │ │ ├── SearchKeyboard.java
│ │ │ │ └── ViewObj.java
│ │ │ ├── util
│ │ │ │ ├── AdBlocker.java
│ │ │ │ ├── AppManager.java
│ │ │ │ ├── DefaultConfig.java
│ │ │ │ ├── FastClickCheckUtil.java
│ │ │ │ ├── FileUtils.java
│ │ │ │ ├── HawkConfig.java
│ │ │ │ ├── LOG.java
│ │ │ │ ├── MD5.java
│ │ │ │ ├── OkGoHelper.java
│ │ │ │ ├── PlayerHelper.java
│ │ │ │ ├── SSL
│ │ │ │ │ └── SSLSocketFactoryCompat.java
│ │ │ │ ├── TLSSocketFactory.java
│ │ │ │ ├── UA.java
│ │ │ │ ├── XWalkUtils.java
│ │ │ │ └── thunder
│ │ │ │ └── Thunder.java
│ │ │ └── viewmodel
│ │ │ └── SourceViewModel.java
│ │ └── okhttp3
│ │ └── dnsoverhttps
│ │ ├── BootstrapDns.java
│ │ ├── DnsOverHttps.java
│ │ └── DnsRecordCodec.java
│ └── res
│ ├── drawable
│ │ ├── anim_loading.xml
│ │ ├── app_banner.png
│ │ ├── app_bg.png
│ │ ├── box_controller_top_bg.xml
│ │ ├── button_detail_collect.xml
│ │ ├── button_detail_play.xml
│ │ ├── button_detail_quick_search.xml
│ │ ├── button_detail_sort.xml
│ │ ├── button_dialog_main.xml
│ │ ├── button_home_sort_focus.xml
│ │ ├── icon_back.png
│ │ ├── icon_collect.xml
│ │ ├── icon_delete.xml
│ │ ├── icon_empty.png
│ │ ├── icon_error.xml
│ │ ├── icon_filter.xml
│ │ ├── icon_history.xml
│ │ ├── icon_img_placeholder.png
│ │ ├── icon_live.xml
│ │ ├── icon_loading.png
│ │ ├── icon_play.png
│ │ ├── icon_pre.png
│ │ ├── icon_push.xml
│ │ ├── icon_search.xml
│ │ ├── icon_setting.xml
│ │ ├── icon_video.png
│ │ ├── img_loading_placeholder.xml
│ │ ├── input_dialog_api_input.xml
│ │ ├── input_search.xml
│ │ ├── shape_dialog_bg_main.xml
│ │ ├── shape_dialog_filter_bg.xml
│ │ ├── shape_live_channel_num.xml
│ │ ├── shape_live_focus.xml
│ │ ├── shape_play_bottom.xml
│ │ ├── shape_play_mobile_center.xml
│ │ ├── shape_player_control_vod_seek.xml
│ │ ├── shape_player_control_vod_seek_thumb.xml
│ │ ├── shape_player_control_vod_seek_thumb_normal.xml
│ │ ├── shape_player_control_vod_seek_thumb_press.xml
│ │ ├── shape_setting_model_focus.xml
│ │ ├── shape_setting_sort_focus.xml
│ │ ├── shape_source_flag_focus.xml
│ │ ├── shape_source_flag_line.xml
│ │ ├── shape_source_focus.xml
│ │ ├── shape_source_series_focus.xml
│ │ ├── shape_thumb_bottom_name.xml
│ │ ├── shape_thumb_lang.xml
│ │ ├── shape_thumb_note.xml
│ │ ├── shape_thumb_year.xml
│ │ └── shape_user_focus.xml
│ ├── drawable-hdpi
│ │ └── app_icon.png
│ ├── drawable-xhdpi
│ │ ├── app_icon.png
│ │ ├── vod_pause.png
│ │ └── vod_play.png
│ ├── drawable-xxhdpi
│ │ └── app_icon.png
│ ├── drawable-xxxhdpi
│ │ └── app_icon.png
│ ├── layout
│ │ ├── activity_collect.xml
│ │ ├── activity_detail.xml
│ │ ├── activity_history.xml
│ │ ├── activity_home.xml
│ │ ├── activity_live_play.xml
│ │ ├── activity_play.xml
│ │ ├── activity_push.xml
│ │ ├── activity_search.xml
│ │ ├── activity_setting.xml
│ │ ├── box_vod_control_view.xml
│ │ ├── dialog_about.xml
│ │ ├── dialog_api.xml
│ │ ├── dialog_api_history.xml
│ │ ├── dialog_backup.xml
│ │ ├── dialog_grid_filter.xml
│ │ ├── dialog_live_password.xml
│ │ ├── dialog_quick_search.xml
│ │ ├── dialog_remote.xml
│ │ ├── dialog_select.xml
│ │ ├── dialog_tip.xml
│ │ ├── dialog_xwalk.xml
│ │ ├── fragment_grid.xml
│ │ ├── fragment_model.xml
│ │ ├── fragment_user.xml
│ │ ├── item_dialog_api_history.xml
│ │ ├── item_dialog_backup.xml
│ │ ├── item_dialog_select.xml
│ │ ├── item_grid.xml
│ │ ├── item_grid_filter.xml
│ │ ├── item_grid_filter_value.xml
│ │ ├── item_home_sort.xml
│ │ ├── item_keyboard.xml
│ │ ├── item_live.xml
│ │ ├── item_live_channel.xml
│ │ ├── item_live_channel_group.xml
│ │ ├── item_live_setting.xml
│ │ ├── item_live_setting_group.xml
│ │ ├── item_play_parse.xml
│ │ ├── item_quick_search_lite.xml
│ │ ├── item_search.xml
│ │ ├── item_search_lite.xml
│ │ ├── item_search_word_hot.xml
│ │ ├── item_search_word_split.xml
│ │ ├── item_series.xml
│ │ ├── item_series_flag.xml
│ │ ├── item_setting_menu.xml
│ │ ├── item_user_hot_vod.xml
│ │ ├── item_view_load_more.xml
│ │ ├── layout_keyborad.xml
│ │ ├── loadsir_empty_layout.xml
│ │ ├── loadsir_loading_layout.xml
│ │ ├── player_live_control_view.xml
│ │ └── player_vod_control_view.xml
│ ├── raw
│ │ ├── index.html
│ │ ├── jquery.js
│ │ ├── script.js
│ │ ├── style.css
│ │ └── ui.css
│ ├── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml
│ ├── file_paths.xml
│ └── network_security_config.xml
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── player
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ ├── tv
│ │ │ └── danmaku
│ │ │ └── ijk
│ │ │ └── media
│ │ │ ├── player
│ │ │ │ ├── AbstractMediaPlayer.java
│ │ │ │ ├── AndroidMediaPlayer.java
│ │ │ │ ├── IMediaPlayer.java
│ │ │ │ ├── ISurfaceTextureHolder.java
│ │ │ │ ├── ISurfaceTextureHost.java
│ │ │ │ ├── IjkLibLoader.java
│ │ │ │ ├── IjkMediaCodecInfo.java
│ │ │ │ ├── IjkMediaMeta.java
│ │ │ │ ├── IjkMediaPlayer.java
│ │ │ │ ├── IjkTimedText.java
│ │ │ │ ├── MediaInfo.java
│ │ │ │ ├── MediaPlayerProxy.java
│ │ │ │ ├── TextureMediaPlayer.java
│ │ │ │ ├── annotations
│ │ │ │ │ ├── AccessedByNative.java
│ │ │ │ │ └── CalledByNative.java
│ │ │ │ ├── demo
│ │ │ │ │ └── IjkDemoActivity.java
│ │ │ │ ├── exceptions
│ │ │ │ │ └── IjkMediaException.java
│ │ │ │ ├── ffmpeg
│ │ │ │ │ └── FFmpegApi.java
│ │ │ │ ├── misc
│ │ │ │ │ ├── AndroidMediaFormat.java
│ │ │ │ │ ├── AndroidTrackInfo.java
│ │ │ │ │ ├── IAndroidIO.java
│ │ │ │ │ ├── IMediaDataSource.java
│ │ │ │ │ ├── IMediaFormat.java
│ │ │ │ │ ├── ITrackInfo.java
│ │ │ │ │ ├── IjkMediaFormat.java
│ │ │ │ │ └── IjkTrackInfo.java
│ │ │ │ └── pragma
│ │ │ │ ├── DebugLog.java
│ │ │ │ └── Pragma.java
│ │ │ └── player_armv7a
│ │ │ └── Pragma.java
│ │ └── xyz
│ │ └── doikki
│ │ └── videoplayer
│ │ ├── controller
│ │ │ ├── BaseVideoController.java
│ │ │ ├── ControlWrapper.java
│ │ │ ├── GestureVideoController.java
│ │ │ ├── IControlComponent.java
│ │ │ ├── IGestureComponent.java
│ │ │ ├── IVideoController.java
│ │ │ ├── MediaPlayerControl.java
│ │ │ └── OrientationHelper.java
│ │ ├── exo
│ │ │ ├── ExoMediaPlayer.java
│ │ │ ├── ExoMediaPlayerFactory.java
│ │ │ └── ExoMediaSourceHelper.java
│ │ ├── ijk
│ │ │ ├── IjkPlayer.java
│ │ │ ├── IjkPlayerFactory.java
│ │ │ └── RawDataSourceProvider.java
│ │ ├── player
│ │ │ ├── AbstractPlayer.java
│ │ │ ├── AndroidMediaPlayer.java
│ │ │ ├── AndroidMediaPlayerFactory.java
│ │ │ ├── AudioFocusHelper.java
│ │ │ ├── PlayerFactory.java
│ │ │ ├── ProgressManager.java
│ │ │ ├── VideoView.java
│ │ │ ├── VideoViewConfig.java
│ │ │ └── VideoViewManager.java
│ │ ├── render
│ │ │ ├── IRenderView.java
│ │ │ ├── MeasureHelper.java
│ │ │ ├── RenderViewFactory.java
│ │ │ ├── TextureRenderView.java
│ │ │ └── TextureRenderViewFactory.java
│ │ └── util
│ │ ├── CutoutUtil.java
│ │ ├── L.java
│ │ └── PlayerUtils.java
│ ├── jniLibs
│ │ └── armeabi-v7a
│ │ ├── libplayer.so
│ │ ├── libxl_stat.so
│ │ └── libxl_thunder_sdk.so
│ └── res
│ ├── layout
│ │ └── ijk_demo_activity.xml
│ └── values
│ ├── attrs.xml
│ └── strings.xml
└── settings.gradle
84 directories, 337 files
评论