├── .gitignore
├── AndroidManifest.xml
├── app
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── TVBus.apk
│ ├── css
│ │ ├── iqiyi.css
│ │ ├── test.css
│ │ └── webkit_tap_highlight.css
│ ├── film
│ │ ├── 电影搜集.list
│ │ └── 音悦台.list
│ ├── fm
│ │ ├── 中央广播.fm
│ │ ├── 其他.fm
│ │ ├── 喜马拉雅.fm
│ │ └── 蜻蜓.fm
│ ├── tmp
│ │ ├── test.tv
│ │ ├── 央视频.ip
│ │ └── 移动.武汉.ip
│ ├── tvlive
│ │ ├── MyIPTV
│ │ │ ├── 上海百视通联通IP版.tv
│ │ │ ├── 北京PLTV移动CDN版.tv
│ │ │ ├── 四川电信绵阳ip版.tv
│ │ │ ├── 大连天途有线CDN版.tv
│ │ │ ├── 珠江宽频广州联通ip版.tv
│ │ │ └── 黑龙江PLTV鸡西移动IP版.tv
│ │ ├── cctv.myalicdn.com.tv
│ │ ├── cctv.wscdns.com.tv
│ │ ├── 其他.tv
│ │ ├── 北邮测试源.tv
│ │ ├── 国际台.tv
│ │ ├── 地方台
│ │ │ ├── 地方台.chinashadt.com.tv
│ │ │ ├── 地方台.云南.tv
│ │ │ ├── 地方台.其他.tv
│ │ │ ├── 地方台.吉林.tv
│ │ │ ├── 地方台.四川.tv
│ │ │ ├── 地方台.安徽.tv
│ │ │ ├── 地方台.山东.tv
│ │ │ ├── 地方台.广东.tv
│ │ │ ├── 地方台.新疆.tv
│ │ │ ├── 地方台.江苏.tv
│ │ │ ├── 地方台.河北.tv
│ │ │ ├── 地方台.河南.tv
│ │ │ ├── 地方台.浙江.tv
│ │ │ ├── 地方台.湖北.tv
│ │ │ ├── 地方台.湖南.tv
│ │ │ ├── 地方台.重庆.tv
│ │ │ └── 地方台.黑龙江.tv
│ │ ├── 广电.陕西.tv
│ │ ├── 承德技师学院.tv
│ │ ├── 教育.北京.tv
│ │ ├── 港澳台.tv
│ │ ├── 源代理.tv
│ │ ├── 直播中国.tv
│ │ ├── 移动源
│ │ │ ├── 移动.其他.tv
│ │ │ ├── 移动.南京.tv
│ │ │ ├── 移动.南京2.tv
│ │ │ ├── 移动.南昌.tv
│ │ │ ├── 移动.南昌1.tv
│ │ │ ├── 移动.南昌2.tv
│ │ │ ├── 移动.哈尔滨.tv
│ │ │ └── 移动.武汉.tv
│ │ ├── 联通源
│ │ │ ├── 联通.杭州.tv
│ │ │ └── 联通.苏杭.tv
│ │ ├── 轮播.CIBN.代理美国VPS.tv
│ │ └── 轮播
│ │ │ └── 轮播.华数.tv
│ └── 失效
│ │ ├── ottrrs.hl.chinamobile.com.tv
│ │ ├── 中广热点云的资源.list
│ │ ├── 咪咕视频.tv
│ │ ├── 国际台.tv
│ │ ├── 天翼视讯.tv
│ │ ├── 天途源.302.tv
│ │ ├── 天途源.tv
│ │ ├── 央视频.ip.tv
│ │ ├── 央视频.tv
│ │ ├── 广电.蜀小果.tv
│ │ ├── 广电.蜀小果1.tv
│ │ ├── 广电.蜀小果2.tv
│ │ ├── 港澳台.tv
│ │ ├── 电信.上海.tv
│ │ ├── 电信.其他.tv
│ │ ├── 电信.成都.tv
│ │ ├── 电信.沈阳.tv
│ │ ├── 电信.沈阳2.tv
│ │ ├── 百视通.tv
│ │ ├── 移动.其他.tv
│ │ ├── 移动.北京.tv
│ │ ├── 移动.南宁.list
│ │ ├── 移动.南宁.tv
│ │ ├── 移动.哈尔滨2.tv
│ │ ├── 移动.嘉峪关.tv
│ │ ├── 移动.杭州.tv
│ │ ├── 移动.杭州1.tv
│ │ ├── 移动.杭州2.tv
│ │ ├── 移动.沈阳.tv
│ │ ├── 移动.沈阳2.tv
│ │ ├── 移动.福州1.tv
│ │ ├── 移动.福州2.tv
│ │ ├── 移动.福州3.tv
│ │ ├── 联通.南宁.tv
│ │ ├── 联通.武汉.tv
│ │ ├── 轮播.CIBN.tv
│ │ ├── 轮播.爱奇艺.tv
│ │ └── 轮播.虎牙.tv
│ ├── java
│ └── com
│ │ └── shuiyes
│ │ └── video
│ │ ├── adapter
│ │ └── AlbumAdapter.java
│ │ ├── bean
│ │ ├── Album.java
│ │ ├── AlbumList.java
│ │ ├── ListVideo.java
│ │ └── PlayVideo.java
│ │ ├── dialog
│ │ ├── AlbumDialog.java
│ │ ├── FlowlayoutDialog.java
│ │ └── MiscDialog.java
│ │ ├── ui
│ │ ├── MainActivity.java
│ │ ├── SVApplication.java
│ │ ├── SettingsActivity.java
│ │ ├── WebActivity.java
│ │ ├── WelcomeActivity.java
│ │ ├── base
│ │ │ ├── BaseActivity.java
│ │ │ ├── BasePlayActivity.java
│ │ │ ├── BaseSearchActivity.java
│ │ │ ├── BaseTVListActivity.java
│ │ │ └── BaseTVLiveActivity.java
│ │ ├── cbchot
│ │ │ ├── CBChotSoActivity.java
│ │ │ ├── CBChotUtils.java
│ │ │ └── CBChotVActivity.java
│ │ ├── iqiyi
│ │ │ ├── IQIyiSoActivity.java
│ │ │ ├── IQiyiUtils.java
│ │ │ ├── IQiyiVActivity.java
│ │ │ └── IQiyiVideo.java
│ │ ├── letv
│ │ │ ├── LetvSoActivity.java
│ │ │ ├── LetvStream.java
│ │ │ ├── LetvUtils.java
│ │ │ └── LetvVActivity.java
│ │ ├── mdd
│ │ │ ├── MDDSoActivity.java
│ │ │ ├── MDDUtils.java
│ │ │ ├── MDDVActivity.java
│ │ │ └── Sign.java
│ │ ├── mgtv
│ │ │ ├── MgtvSoActivity.java
│ │ │ ├── MgtvUtils.java
│ │ │ └── MgtvVActivity.java
│ │ ├── qq
│ │ │ ├── QQSection.java
│ │ │ ├── QQSoActivity.java
│ │ │ ├── QQStream.java
│ │ │ ├── QQUtils.java
│ │ │ └── QQVActivity.java
│ │ ├── qtiptv
│ │ │ └── QTingUtil.java
│ │ ├── tvlive
│ │ │ ├── BuptIVIActivity.java
│ │ │ ├── HuyaListActivity.java
│ │ │ ├── SopPlusActivity.java
│ │ │ ├── SuzhouCMCCActivity.java
│ │ │ ├── TVBusActivity.java
│ │ │ ├── TVListActivity.java
│ │ │ ├── TVPlayActivity.java
│ │ │ └── TVSourceActivity.java
│ │ ├── vip
│ │ │ ├── VipActivity.java
│ │ │ ├── VipSource.java
│ │ │ └── VipUtils.java
│ │ ├── yinyang
│ │ │ ├── ShuiyeVideoController.java
│ │ │ └── TVActivity.java
│ │ └── youku
│ │ │ ├── YoukuSoActivity.java
│ │ │ ├── YoukuUtils.java
│ │ │ ├── YoukuVActivity.java
│ │ │ └── YoukuVideo.java
│ │ ├── util
│ │ ├── CbchotUtil.java
│ │ ├── Constants.java
│ │ ├── HttpUtils.java
│ │ ├── ImageLoader.java
│ │ ├── MD5.java
│ │ ├── MemoryUtil.java
│ │ ├── OkHttpManager.java
│ │ ├── PlayUtils.java
│ │ ├── PreferenceUtil.java
│ │ ├── SHA1.java
│ │ ├── SLog.java
│ │ ├── ThreadPoolUtil.java
│ │ └── Utils.java
│ │ └── widget
│ │ ├── DLVideoView.java
│ │ ├── MarqueeTextView.java
│ │ ├── MiscView.java
│ │ ├── NumberView.java
│ │ ├── ReboundScrollView.java
│ │ └── VideoController.java
│ └── res
│ ├── anim
│ ├── slide_in.xml
│ └── slide_out.xml
│ ├── drawable-hdpi
│ ├── bg_movie.png
│ ├── logo.png
│ ├── logo_src.png
│ ├── logo_tv.png
│ ├── logo_tv1.png
│ ├── logo_tv2.png
│ ├── logo_vd.png
│ ├── rect_green.xml
│ ├── rect_orange.xml
│ └── rect_red.xml
│ ├── drawable-v21
│ └── ripple_bg.xml
│ ├── drawable-xhdpi
│ └── youku.png
│ ├── drawable
│ ├── btn_oval.xml
│ ├── btn_rect.xml
│ ├── btn_rect_transparent.xml
│ ├── btn_select_album.xml
│ ├── circle.xml
│ ├── circle_red.xml
│ ├── oval_blue.xml
│ ├── oval_red.xml
│ ├── oval_white.xml
│ ├── rect_blue.xml
│ ├── rect_blue_dark.xml
│ ├── rect_grey.xml
│ ├── rect_transparent.xml
│ ├── rect_white.xml
│ ├── ripple_bg.xml
│ ├── seekbar_progress_drawable.xml
│ └── thumb_red_shape_drawable.xml
│ ├── layout
│ ├── activity_huyalist.xml
│ ├── activity_main.xml
│ ├── activity_play.xml
│ ├── activity_player_tvlive.xml
│ ├── activity_search.xml
│ ├── activity_settings.xml
│ ├── activity_tvlist.xml
│ ├── activity_tvlive.xml
│ ├── activity_vip.xml
│ ├── activity_web.xml
│ ├── activity_welcome.xml
│ ├── full_screen_dialog.xml
│ ├── itemview_search_video.xml
│ └── media_controller.xml
│ ├── menu
│ └── menu.xml
│ ├── values-hdpi
│ ├── dimens.xml
│ └── strings.xml
│ ├── values-mdpi
│ └── strings.xml
│ ├── values-xhdpi
│ ├── dimens.xml
│ └── strings.xml
│ ├── values-xxhdpi
│ ├── dimens.xml
│ └── strings.xml
│ ├── values-xxxhdpi
│ └── strings.xml
│ └── values
│ ├── arrays.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── common
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ ├── android
│ │ └── permission
│ │ │ ├── FloatWindowManager.java
│ │ │ └── rom
│ │ │ ├── HuaweiUtils.java
│ │ │ ├── MeizuUtils.java
│ │ │ ├── MiuiUtils.java
│ │ │ ├── OppoUtils.java
│ │ │ ├── QikuUtils.java
│ │ │ └── RomUtils.java
│ │ └── shuiyes
│ │ └── video
│ │ ├── os
│ │ ├── ServiceManager.java
│ │ └── WindowManagerPolicyConstants.java
│ │ ├── util
│ │ └── WindowUtil.java
│ │ ├── view
│ │ └── AutoGestureListener.java
│ │ └── widget
│ │ └── Tips.java
│ └── res
│ └── layout
│ └── transient_notification.xml
├── exoplayer
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── shuiyes
│ │ └── video
│ │ ├── ExoCommon.java
│ │ └── ui
│ │ ├── ExoPlayerActivity.java
│ │ ├── base
│ │ └── BaseExoPlayerActivity.java
│ │ └── tvlive
│ │ └── ExoTVBusActivity.java
│ └── res
│ ├── layout
│ ├── activity_player_exo.xml
│ ├── activity_player_exo_tvbus.xml
│ └── activity_player_exo_tvlive.xml
│ └── values
│ ├── strings.xml
│ └── styles.xml
├── flowlayout
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ ├── shuiye
│ │ └── video
│ │ │ └── util
│ │ │ ├── ResourceDef.java
│ │ │ └── ResourceUtils.java
│ │ └── zhy
│ │ └── view
│ │ └── flowlayout
│ │ ├── FlowLayout.java
│ │ ├── TagAdapter.java
│ │ ├── TagFlowLayout.java
│ │ └── TagView.java
│ └── res
│ └── values
│ ├── attrs.xml
│ └── strings.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── sourcetest
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ └── test.list
│ └── java
│ └── com
│ └── shuiyes
│ └── test
│ ├── Classify.java
│ ├── DeDuplication.java
│ ├── FoldDeDuplication.java
│ ├── FoldScanDuplication.java
│ ├── GuessTVUrl.java
│ ├── HttpUtils.java
│ ├── HuyaFormater.java
│ ├── HuyaTest.java
│ ├── Log.java
│ ├── NameFormater.java
│ ├── ScanAgentUrl.java
│ ├── ScanTVUrl.java
│ ├── ScanUrl.java
│ ├── Test.java
│ ├── TestSource.java
│ ├── TextSort.java
│ ├── UrlFormater.java
│ └── UrlSort.java
├── tvbus
├── .gitignore
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tvbus
│ │ └── engine
│ │ ├── TVCore.java
│ │ ├── TVListener.java
│ │ └── TVService.java
│ ├── jniLibs
│ └── armeabi-v7a
│ │ ├── libtvcore.so
│ │ ├── libtvcore_chaojizhibo.so
│ │ ├── libtvcore_github.so
│ │ └── libtvcore_soplus.so
│ └── res
│ └── values
│ └── strings.xml
├── version.gradle
└── yinyangplayer
├── .gitignore
├── build.gradle
├── libs-ijk-yjzb
├── libijkffmpeg.so
├── libijkplayer.so
└── libijksdl.so
├── libs
└── armeabi-v7a
│ ├── libijkffmpeg.so
│ ├── libijkplayer.so
│ └── libijksdl.so
└── src
└── main
├── AndroidManifest.xml
├── java
└── com
│ ├── devlin_n
│ └── yinyangplayer
│ │ ├── controller
│ │ ├── AdController.java
│ │ ├── BaseVideoController.java
│ │ ├── FloatController.java
│ │ └── StandardVideoController.java
│ │ ├── player
│ │ ├── BackgroundPlayService.java
│ │ ├── VideoCacheManager.java
│ │ ├── VideoModel.java
│ │ ├── YinYangPlayer.java
│ │ └── YinYangPlayerManager.java
│ │ ├── util
│ │ ├── Constants.java
│ │ ├── KeyUtil.java
│ │ ├── L.java
│ │ ├── NetworkUtil.java
│ │ └── StorageUtil.java
│ │ └── widget
│ │ ├── CenterView.java
│ │ ├── FloatView.java
│ │ ├── PlayProgressButton.java
│ │ ├── StatusView.java
│ │ ├── YinYangSurfaceView.java
│ │ └── YinYangTextureView.java
│ └── shuiyes
│ └── video
│ └── ui
│ └── tvlive
│ ├── YinyangFM.java
│ └── YinyangTVPlayActivity.java
└── res
├── anim
├── anim_alpha_in.xml
├── anim_alpha_out.xml
├── anim_slide_bottom_in.xml
├── anim_slide_bottom_out.xml
├── anim_slide_top_in.xml
└── anim_slide_top_out.xml
├── drawable-hdpi
├── bg_nosignal.png
├── fm.jpg
├── ic_action_arrow_back.png
├── ic_action_brightness.png
├── ic_action_close.png
├── ic_action_fast_forward.png
├── ic_action_fast_rewind.png
├── ic_action_fullscreen.png
├── ic_action_fullscreen_exit.png
├── ic_action_lock_open.png
├── ic_action_lock_outline.png
├── ic_action_more_vert.png
├── ic_action_pause.png
├── ic_action_picture_in_picture.png
├── ic_action_play_arrow.png
├── ic_action_replay.png
├── ic_action_volume_off.png
├── ic_action_volume_up.png
└── ic_loading.png
├── drawable-mdpi
├── ic_action_arrow_back.png
├── ic_action_brightness.png
├── ic_action_close.png
├── ic_action_fast_forward.png
├── ic_action_fast_rewind.png
├── ic_action_fullscreen.png
├── ic_action_fullscreen_exit.png
├── ic_action_lock_open.png
├── ic_action_lock_outline.png
├── ic_action_more_vert.png
├── ic_action_pause.png
├── ic_action_picture_in_picture.png
├── ic_action_play_arrow.png
├── ic_action_replay.png
├── ic_action_volume_off.png
├── ic_action_volume_up.png
└── ic_loading.png
├── drawable-xhdpi
├── ic_action_arrow_back.png
├── ic_action_brightness.png
├── ic_action_close.png
├── ic_action_fast_forward.png
├── ic_action_fast_rewind.png
├── ic_action_fullscreen.png
├── ic_action_fullscreen_exit.png
├── ic_action_lock_open.png
├── ic_action_lock_outline.png
├── ic_action_more_vert.png
├── ic_action_pause.png
├── ic_action_picture_in_picture.png
├── ic_action_play_arrow.png
├── ic_action_replay.png
├── ic_action_volume_off.png
├── ic_action_volume_up.png
└── ic_loading.png
├── drawable-xxhdpi
├── ic_action_arrow_back.png
├── ic_action_brightness.png
├── ic_action_close.png
├── ic_action_fast_forward.png
├── ic_action_fast_rewind.png
├── ic_action_fullscreen.png
├── ic_action_fullscreen_exit.png
├── ic_action_lock_open.png
├── ic_action_lock_outline.png
├── ic_action_more_vert.png
├── ic_action_pause.png
├── ic_action_picture_in_picture.png
├── ic_action_play_arrow.png
├── ic_action_replay.png
├── ic_action_volume_off.png
├── ic_action_volume_up.png
└── ic_loading.png
├── drawable-xxxhdpi
├── ic_action_arrow_back.png
├── ic_action_brightness.png
├── ic_action_close.png
├── ic_action_fast_forward.png
├── ic_action_fast_rewind.png
├── ic_action_fullscreen.png
├── ic_action_fullscreen_exit.png
├── ic_action_lock_open.png
├── ic_action_lock_outline.png
├── ic_action_more_vert.png
├── ic_action_pause.png
├── ic_action_picture_in_picture.png
├── ic_action_play_arrow.png
├── ic_action_replay.png
├── ic_action_volume_off.png
├── ic_action_volume_up.png
└── ic_loading.png
├── drawable
├── progress_loading.xml
├── seekbar_progress.xml
├── seekbar_thumb.xml
├── seekbar_thumb_normal.xml
├── seekbar_thumb_pressed.xml
├── selector_full_screen_button.xml
├── selector_lock_button.xml
├── selector_play_button.xml
├── shape_ad_bg.xml
├── shape_back_bg.xml
├── shape_float_window_background.xml
├── shape_play_bg.xml
├── shape_standard_controller_top_bg.xml
├── shape_stardard_controller_bottom_bg.xml
└── shape_status_view_btn.xml
├── layout
├── activity_tvplay_yinyang.xml
├── layout_ad_controller.xml
├── layout_center_window.xml
├── layout_float_controller.xml
├── layout_standard_controller.xml
└── layout_status_view.xml
├── menu
├── controller_menu.xml
└── main_menu.xml
└── values
├── colors.xml
├── dimens.xml
├── strings.xml
└── styles.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 |
6 | .DS_Store
7 | /build
8 | /tmp
9 | /captures
10 | .externalNativeBuild
11 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
23 |
24 |
28 |
29 |
30 |
31 |
32 |
33 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply from: "../version.gradle"
3 |
4 | android {
5 | compileSdkVersion rootProject.ext.compileSdkVersion
6 |
7 | defaultConfig {
8 | minSdkVersion rootProject.ext.minSdkVersion
9 | targetSdkVersion rootProject.ext.targetSdkVersion
10 | applicationId rootProject.ext.applicationId
11 | }
12 |
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 |
20 | compileOptions {
21 | sourceCompatibility JavaVersion.VERSION_1_8
22 | targetCompatibility JavaVersion.VERSION_1_8
23 | }
24 |
25 | applicationVariants.all { variant ->
26 | variant.outputs.all { output ->
27 |
28 | def rootName = rootProject.name
29 | def versionName = defaultConfig.versionName
30 | def buildType = variant.variantData.variantConfiguration.buildType.name
31 |
32 | outputFileName = "${rootName}_${versionName}-${buildType}.apk"
33 | }
34 | }
35 | }
36 |
37 | dependencies {
38 | implementation fileTree(include: ['*.jar'], dir: 'libs')
39 |
40 | implementation 'com.android.support:appcompat-v7:28.0.0'
41 |
42 | // required, enough for most devices.
43 | // implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
44 | // implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
45 |
46 | // mdd
47 | implementation 'com.squareup.okhttp3:okhttp:3.9.0'
48 | implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.9.0'
49 |
50 | implementation project(':yinyangplayer')
51 | implementation project(':flowlayout')
52 | implementation project(':common')
53 | implementation project(':tvbus')
54 |
55 | }
--------------------------------------------------------------------------------
/app/src/main/assets/TVBus.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/assets/TVBus.apk
--------------------------------------------------------------------------------
/app/src/main/assets/css/test.css:
--------------------------------------------------------------------------------
1 | html{font-size:100%;}
--------------------------------------------------------------------------------
/app/src/main/assets/css/webkit_tap_highlight.css:
--------------------------------------------------------------------------------
1 | html{font-size:100%;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color: grey;}
--------------------------------------------------------------------------------
/app/src/main/assets/fm/中央广播.fm:
--------------------------------------------------------------------------------
1 | 中央广播
2 | CNR 经济之声,http://ngcdn002.cnr.cn/live/jjzs/index.m3u8
3 | CNR 中国之声,http://ngcdn001.cnr.cn/live/zgzs/index.m3u8
4 | CNR 音乐之声,http://ngcdn003.cnr.cn/live/yyzs/index.m3u8
5 | CNR 经典音乐广播 101.8,http://ngcdn004.cnr.cn/live/dszs/index.m3u8
6 | CNR 中华之声,http://ngcdn005.cnr.cn/live/zhzs/index.m3u8
7 | CNR 神州之声,http://ngcdn006.cnr.cn/live/szzs/index.m3u8
8 | CNR 华夏之声,http://ngcdn007.cnr.cn/live/hxzs/index.m3u8
9 | CNR 香港之声,http://ngcdn008.cnr.cn/live/xgzs/index.m3u8
10 | CNR 民族之声,http://ngcdn009.cnr.cn/live/mzzs/index.m3u8
11 | CNR 文艺之声,http://ngcdn010.cnr.cn/live/wyzs/index.m3u8
12 | CNR 老年之声,http://ngcdn011.cnr.cn/live/lnzs/index.m3u8
13 | CNR 中国乡村之声,http://ngcdn017.cnr.cn/live/xczs/index.m3u8
14 | CNR 哈语广播,http://ngcdn025.cnr.cn/live/hygb/index.m3u8
15 | CNR 藏语广播,http://ngcdn012.cnr.cn/live/zygb/index.m3u8
16 | CNR 维语广播,http://ngcdn013.cnr.cn/live/wygb/index.m3u8
17 | CNR 娱乐广播,http://ngcdn014.cnr.cn/live/ylgb/index.m3u8
18 | CNR 中国交通广播,http://ngcdn016.cnr.cn/live/gsgljtgb/index.m3u8
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/tmp/央视频.ip:
--------------------------------------------------------------------------------
1 | ## IP 会失效 需要经常从下面IP段扫描
2 |
3 | 腾讯云广州,182.254.116.*
4 | 腾讯云深圳,121.51.14.*
5 | 腾讯云广州,121.51.141.*
6 | 腾讯云天津,182.254.21.*
7 | 腾讯云天津,182.254.48.*
8 | 腾讯云上海,182.254.78.*
9 | 腾讯云香港,203.205.220.*
10 | 腾讯云香港,203.205.236.*
11 |
12 | 上海电信,101.89.38.*
13 | 杭州移动,111.0.27.*
14 | 兰州移动,111.11.181.*
15 | 北京移动,111.13.34..*
16 | 天津联通,111.161.121.*
17 | 武汉移动,111.48.79.*
18 | 洛阳移动,111.7.72.*
19 | 南京移动,112.25.104.*
20 | 合肥移动,112.29.151.*
21 | 合肥移动,112.29.212.*
22 | 上海移动,117.144.244.*
23 | 南京联通,117.148.165.*
24 | 台州移动,117.148.191.*
25 | 上海移动,117.184.37.*
26 | 上海移动,117.184.38.*
27 | 上海移动,117.184.42.*
28 | 上海移动,117.184.45.*
29 | 青岛联通,119.167.204.*
30 | 上海移动,120.204.1.*
31 | 普陀移动,120.204.20.*
32 | 济南移动,120.221.179.*
33 | 济南移动,120.221.180.*
34 | 青岛移动,120.221.198.*
35 | 青岛移动,120.221.199.*
36 | 深圳移动,120.233.115.*
37 | 深圳移动,120.241.188.*
38 | 天津电信,123.151.72.*
39 | 天津联通,125.39.52.*
40 | 青岛电信,140.249.247.*
41 | 青岛电信,140.249.30.*
42 | 济南电信,150.138.226.*
43 | 南京电信,180.96.1.*
44 | 杭州电信,183.134.218.*
45 | 深圳电信,183.3.225.*
46 | 佛山电信,183.56.172.*
47 | 重庆移动,221.178.18.*
48 | 重庆移动,221.178.19.*
49 | 无锡电信,221.228.67.*
50 | 南京移动,36.152.72.*
51 | 上海联通,58.246.221.*
52 | 上海联通,58.247.205.*
53 | 深圳联通,58.250.136.*
54 | 深圳联通,58.251.112.*
55 | 深圳联通,58.251.121.*
56 | 武汉电信,58.49.226.*
57 | 深圳电信,59.36.132.*
58 | 合肥电信,60.174.244.*
59 | 南通电信,61.147.237.*
60 | 上海电信,61.151.179.*
61 |
62 | 美国,192.26.92.*
63 | 美国,192.33.14.*
64 | 美国,192.5.6.*
65 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/cctv.myalicdn.com.tv:
--------------------------------------------------------------------------------
1 | CCTV1,http://cctvalih5ca.v.myalicdn.com/live/cctv1_2/index.m3u8
2 | CCTV2,http://cctvalih5ca.v.myalicdn.com/live/cctv2_2/index.m3u8
3 | CCTV3,http://cctvalih5ca.v.myalicdn.com/live/cctv3_2/index.m3u8
4 | CCTV4,http://cctvalih5ca.v.myalicdn.com/live/cctv4_2/index.m3u8
5 | CCTV5,http://cctvalih5ca.v.myalicdn.com/live/cctv5_2/index.m3u8
6 | CCTV6,http://cctvalih5ca.v.myalicdn.com/live/cctv6_2/index.m3u8
7 | CCTV7,http://cctvalih5ca.v.myalicdn.com/live/cctv7_2/index.m3u8
8 | CCTV8,http://cctvalih5ca.v.myalicdn.com/live/cctv8_2/index.m3u8
9 | CCTV9,http://cctvalih5ca.v.myalicdn.com/live/cctvjilu_2/index.m3u8
10 | CCTV10,http://cctvalih5ca.v.myalicdn.com/live/cctv10_2/index.m3u8
11 | CCTV11,http://cctvalih5ca.v.myalicdn.com/live/cctv11_2/index.m3u8
12 | CCTV12,http://cctvalih5ca.v.myalicdn.com/live/cctv12_2/index.m3u8
13 | CCTV13,http://cctvalih5ca.v.myalicdn.com/live/cctv13_2/index.m3u8
14 | CCTV14,http://cctvalih5ca.v.myalicdn.com/live/cctvchild_2/index.m3u8
15 | CCTV15,http://cctvalih5ca.v.myalicdn.com/live/cctv15_2/index.m3u8
16 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.云南.tv:
--------------------------------------------------------------------------------
1 | 云南卫视,http://edge1.yntv.cn/channels/yntv/ynws/flv:sd/live
2 | 云南少儿,http://edge2.yntv.cn/channels/yntv/ynse/flv:sd/live
3 |
4 | 云南卫视,http://edge1.yntv.cn/channels/yntv/ynws/m3u8:sd
5 | 云南少儿,http://edge1.yntv.cn/channels/yntv/ynse/m3u8:sd
6 | 云南都市,http://edge1.yntv.cn/channels/yntv/ynds/m3u8:sd
7 | 云南公共,http://edge1.yntv.cn/channels/yntv/yngg/m3u8:sd
8 | 云南娱乐,http://edge1.yntv.cn/channels/yntv/ynyl/m3u8:sd
9 |
10 |
11 | 云南卫视,https://hwapi.yunshicloud.com/8xughf/e0bx15.m3u8
12 | 云南少儿,https://hwapi.yunshicloud.com/62hdvf/ru416s.m3u8
13 | 云南都市,http://hwzbout.yunshicloud.com/62hdvf/v8260m.m3u8
14 | 云南生活,http://hwzbout.yunshicloud.com/62hdvf/gk6472.m3u8
15 | 云南影视,http://hwzbout.yunshicloud.com/62hdvf/k7daod.m3u8
16 |
17 | 云南 Ⅰ 红河综合台,http://file.hhtv.cc/cms/videos/nmip-media/channellive/channel1/playlist.m3u8
18 | 云南 Ⅰ 文山综合台,http://tvdrs.wsrtv.com.cn:8100/channellive/ch1.flv
19 | 云南 Ⅰ 文山公共台,http://tvdrs.wsrtv.com.cn:8100/channellive/ch2.flv
20 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.吉林.tv:
--------------------------------------------------------------------------------
1 | CCTV 13,http://stream4.jlntv.cn/cctv13/sd/live.m3u8
2 | 吉林卫视,http://stream4.jlntv.cn/test2/sd/live.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.四川.tv:
--------------------------------------------------------------------------------
1 | 四川地方台
2 | 四川卫视,http://scgctvshow.sctv.com/scgc/sctv1deu5453w/1.m3u8
3 | 四川旅游,http://scgctvshow.sctv.com/hdlive/sctv2/1.m3u8
4 | 四川公共,http://scgctvshow.sctv.com/hdlive/sctv9/1.m3u8
5 | 峨眉电影,http://scgctvshow.sctv.com/hdlive/emei/1.m3u8
6 | 康巴卫视,http://scgctvshow.sctv.com/sdlive/kangba/3.m3u8
7 |
8 | 四川 Ⅰ 乐山公共,http://flv.channellive.leshantv.net/live/ch2.flv
9 | 四川 Ⅰ 乐山综合,http://flv.channellive.leshantv.net/live/ch1.flv
10 |
11 | 四川 Ⅰ 巴中公共台,https://30814.hlsplay.aodianyun.com/lms_30814/tv_channel_247.m3u8
12 | 四川 Ⅰ 巴中综合台,http://30814.hlsplay.aodianyun.com/lms_30814/tv_channel_246.flv
13 |
14 | 四川 Ⅰ 泸州综合,http://file.weblz.com.cn:6066/cms/videos/nmip-media-dz/channellive/channel3/playlist.m3u8
15 | 四川 Ⅰ 泸州公共,http://file.weblz.com.cn:6066/cms/videos/nmip-media-dz/channellive/channel4/playlist.m3u8
16 | 四川 Ⅰ 泸州科技,http://file.weblz.com.cn:6066/cms/videos/nmip-media-dz/channellive/channel5/playlist.m3u8
17 |
18 | 四川 Ⅰ 泸州综合,http://tvdrs.weblz.com.cn:8100/channellive/lztv1.flv
19 | 四川 Ⅰ 泸州公共,http://tvdrs.weblz.com.cn:8100/channellive/lztv2.flv
20 | 四川 Ⅰ 泸州科技,http://tvdrs.weblz.com.cn:8100/channellive/lztv3.flv
21 |
22 | 四川 Ⅰ 西昌综合台,http://stream.xctv.news:8084/1a6c203cd4644dd9a27a4b07a1159e14/h264_500k_ts/index.m3u8?type=flv2hls_m3u8
23 | 四川 Ⅰ 西昌综合台,http://stream.xctv.news:8084/live/1a6c203cd4644dd9a27a4b07a1159e14?fmt=h264_500k_flv
24 |
25 | 四川 Ⅰ 达州综合台,http://m3u8.channellive.dzxw.net/cms/videos/nmip-media/channellive/channel35/playlist.m3u8
26 | 四川 Ⅰ 达州公共台,http://m3u8.channellive.dzxw.net/cms/videos/nmip-media/channellive/channel36/playlist.m3u8
27 | 四川 Ⅰ 达州综合台,http://tv.drs.dzxw.net/channellive/dzrtv-hd1.flv
28 | 四川 Ⅰ 达州公共台,http://tv.drs.dzxw.net/channellive/dzrtv-hd2.flv
29 |
30 | 四川 Ⅰ 雅安公共,http://flv.drs.tv.yatv.tv:8080/channellive/gonggong.flv
31 | 四川 Ⅰ 雅安综合,http://flv.drs.tv.yatv.tv:8080/channellive/xinwen.flv
32 |
33 | 四川 Ⅰ 攀枝花综合,http://zb.pzhgd.com:9091/live/xwzh.m3u8
34 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.安徽.tv:
--------------------------------------------------------------------------------
1 | 安徽地方台
2 | 安徽卫视,http://zbbf2.ahtv.cn/live/749.m3u8
3 |
4 | 安徽 Ⅰ 郎溪综合台,http://117.70.93.210:1935/live/xinwen/playlist.m3u8
5 | 安徽 Ⅰ 郎溪影视台,http://117.70.93.210:1935/live/yingshi/playlist.m3u8
6 |
7 | 安徽 Ⅰ 滁州公共,http://183.167.193.45:1935/live/cztvgg/playlist.m3u8
8 | 安徽 Ⅰ 滁州科教,http://183.167.193.45:1935/live/cztvkj/playlist.m3u8
9 | 安徽 Ⅰ 滁州综合,http://183.167.193.45:1935/live/cztvzh/playlist.m3u8
10 |
11 | 安徽 Ⅰ 亳州新闻,http://220.180.110.101:8083/videos/live/33/59/NC7XQdEveyncq/NC7XQdEveyncq.m3u8
12 | 安徽 Ⅰ 亳州农村,http://220.180.110.101:8083/videos/live/39/13/o4ncrHkSp7q09/o4ncrHkSp7q09.m3u8
13 |
14 | 安徽 Ⅰ 铜陵综合,http://dstpush1.retalltech.com/app/stream1.m3u8
15 | 安徽 Ⅰ 铜陵公共,http://dstpush1.retalltech.com/app/stream2.m3u8
16 |
17 | 安徽 Ⅰ 淮北公共,http://live.0561rtv.cn/ggpd/hd/live.m3u8
18 | 安徽 Ⅰ 淮北综合,http://live.0561rtv.cn/xwzh/hd/live.m3u8
19 |
20 | 安徽 Ⅰ 宿州公共,http://live.ahsz.tv/video/s10001-ggpd/index.m3u8
21 | 安徽 Ⅰ 宿州科教,http://live.ahsz.tv/video/s10001-kxjy/index.m3u8
22 |
23 | 安徽 Ⅰ 六安综合,http://live.china-latv.com/channel1/sd/live.m3u8
24 | 安徽 Ⅰ 六安公共,http://live.china-latv.com/channel2/sd/live.m3u8
25 |
26 | 安徽 Ⅰ 马鞍山综合,http://live.massp.cn:5011/vod/video_hls/c01.m3u8
27 |
28 |
29 | 安徽 Ⅰ 芜湖综合,http://live1.wuhubtv.com/channel1/sd/live.m3u8
30 | 安徽 Ⅰ 芜湖生活,http://live1.wuhubtv.com/channel2/sd/live.m3u8
31 | 安徽 Ⅰ 芜湖公共,http://live1.wuhubtv.com/channel3/sd/live.m3u8
32 | 安徽 Ⅰ 芜湖教育,http://live1.wuhubtv.com/channel4/sd/live.m3u8
33 |
34 | 安徽 Ⅰ 芜湖综合,http://live.wjyanghu.com/live/CH2.m3u8
35 | 安徽 Ⅰ 芜湖教育,http://live.wjyanghu.com/live/CH1.m3u8
36 | 安徽 Ⅰ 芜湖公共,http://wuxue.live.cjyun.org/video/s10107-wxtv1/index.m3u8
37 |
38 | 安徽 Ⅰ 蚌埠公共,http://newvod.ahbbtv.com:1935/live/smil:ggpd_copy.smil/playlist.m3u8
39 | 安徽 Ⅰ 蚌埠公交,http://newvod.ahbbtv.com:1935/live/smil:gjpd_copy.smil/playlist.m3u8
40 | 安徽 Ⅰ 蚌埠生活,http://newvod.ahbbtv.com:1935/live/smil:shpd_copy.smil/playlist.m3u8
41 | 安徽 Ⅰ 蚌埠综合,http://newvod.ahbbtv.com:1935/live/smil:xwpd_copy.smil/playlist.m3u8
42 |
43 | 安徽 Ⅰ 蚌埠生活,http://stream.wifizs.cn/xwzh/sd/live.m3u8
44 |
45 | 安徽 Ⅰ 阜阳公共,http://live.zjmc.tv/3/sd/live.m3u8
46 | 安徽 Ⅰ 阜阳教育,http://live.zjmc.tv/1/sd/live.m3u8
47 |
48 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.山东.tv:
--------------------------------------------------------------------------------
1 | 山东 Ⅰ 济南新闻,http://ts1.ijntv.cn/xwhd/playlist.m3u8
2 | 山东 Ⅰ 济南都市,http://ts1.ijntv.cn/jnds/playlist.m3u8
3 | 山东 Ⅰ 济南影视,http://ts1.ijntv.cn/jnyd/playlist.m3u8
4 | 山东 Ⅰ 济南商务,http://ts1.ijntv.cn/jnsw/playlist.m3u8
5 | 山东 Ⅰ 济南娱乐,http://ts2.ijntv.cn/jnyl/playlist.m3u8
6 | 山东 Ⅰ 济南生活,http://ts2.ijntv.cn/jnsh/playlist.m3u8
7 | 山东 Ⅰ 济南少儿,http://ts2.ijntv.cn/jnse/playlist.m3u8
8 |
9 | 山东 Ⅰ 济南新闻,http://ts1.ijntv.cn/xwhd/hd/live.m3u8
10 | 山东 Ⅰ 济南都市,http://ts1.ijntv.cn/jnds/sd/live.m3u8
11 | 山东 Ⅰ 济南影视,http://ts1.ijntv.cn/yshd/hd/live.m3u8
12 | 山东 Ⅰ 济南商务,http://ts1.ijntv.cn/jnsw/sd/live.m3u8
13 | 山东 Ⅰ 济南娱乐,http://ts1.ijntv.cn/jnyd/sd/live.m3u8
14 | 山东 Ⅰ 济南娱乐,http://ts2.ijntv.cn/jnyl/sd/live.m3u8
15 | 山东 Ⅰ 济南生活,http://ts2.ijntv.cn/jnsh/sd/live.m3u8
16 | 山东 Ⅰ 济南少儿,http://ts2.ijntv.cn/jnse/sd1/live.m3u8
17 |
18 | 山东 Ⅰ 临朐先锋,http://184.154.28.210:1935/canal4/canal4/playlist.m3u8
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.新疆.tv:
--------------------------------------------------------------------------------
1 | 兵团卫视,rtmp://v.btzx.com.cn/live/weishi.stream
2 | 兵团卫视,http://v.btzx.com.cn:1935/live/weishi.stream/playlist.m3u8
3 | 兵团卫视,http://v.btzx.com.cn:1935/live/weishi.stream/chunklist_w846804169.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.江苏.tv:
--------------------------------------------------------------------------------
1 | 江苏 Ⅰ 南京综合,http://live.nbs.cn/channels/njtv/xwzh/m3u8:500k/live.m3u8
2 | 江苏 Ⅰ 南京影视,http://live.nbs.cn/channels/njtv/yspd/m3u8:500k/live.m3u8
3 | 江苏 Ⅰ 南京生活,http://live.nbs.cn/channels/njtv/shpd/m3u8:500k/live.m3u8
4 | 江苏 Ⅰ 南京娱乐,http://live.nbs.cn/channels/njtv/ylpd/m3u8:500k/live.m3u8
5 | 江苏 Ⅰ 南京十八,http://live.nbs.cn/channels/njtv/sbpd/m3u8:500k/live.m3u8
6 | 江苏 Ⅰ 南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8
7 | 江苏 Ⅰ 南京教科,http://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8
8 |
9 | 江苏 Ⅰ 南京综合,http://live.nbs.cn/channels/njtv/xwzh/flv:500k/live
10 | 江苏 Ⅰ 南京影视,http://live.nbs.cn/channels/njtv/yspd/flv:500k/live
11 | 江苏 Ⅰ 南京生活,http://live.nbs.cn/channels/njtv/shpd/flv:500k/live
12 | 江苏 Ⅰ 南京娱乐,http://live.nbs.cn/channels/njtv/ylpd/flv:500k/live
13 | 江苏 Ⅰ 南京十八,http://live.nbs.cn/channels/njtv/sbpd/flv:500k/live
14 | 江苏 Ⅰ 南京少儿,http://live.nbs.cn/channels/njtv/sepd/flv:500k/live
15 | 江苏 Ⅰ 南京教科,http://live.nbs.cn/channels/njtv/jkpd/flv:500k/live
16 |
17 | 江苏 Ⅰ 苏州综合,rtmp://csztv.2500sz.com/live/c01
18 | 江苏 Ⅰ 苏州经济,rtmp://csztv.2500sz.com/live/c02
19 | 江苏 Ⅰ 苏州文化,rtmp://csztv.2500sz.com/live/c03
20 | 江苏 Ⅰ 苏州生活,rtmp://csztv.2500sz.com/live/c04
21 |
22 | 江苏 Ⅰ 徐州-1,http://stream1.huaihai.tv/xwzh/playlist.m3u8
23 | 江苏 Ⅰ 徐州-2,http://stream1.huaihai.tv/jjsh/playlist.m3u8
24 | 江苏 Ⅰ 徐州-3,http://stream1.huaihai.tv/wyys/playlist.m3u8
25 | 江苏 Ⅰ 徐州-4,http://stream1.huaihai.tv/ggpd/playlist.m3u8
26 |
27 | 江苏 Ⅰ 徐州-1,http://stream1.huaihai.tv/xwzh/sd/live.m3u8
28 | 江苏 Ⅰ 徐州-2,http://stream1.huaihai.tv/jjsh/sd/live.m3u8
29 | 江苏 Ⅰ 徐州-3,http://stream1.huaihai.tv/wyys/sd/live.m3u8
30 | 江苏 Ⅰ 徐州-4,http://stream1.huaihai.tv/ggpd/sd/live.m3u8
31 |
32 | 江苏 Ⅰ 徐州-1,http://stream.huaihai.tv/xwzh/sd/live.m3u8
33 | 江苏 Ⅰ 徐州-2,http://stream.huaihai.tv/jjsh/sd/live.m3u8
34 | 江苏 Ⅰ 徐州-3,http://stream.huaihai.tv/wyys/sd/live.m3u8
35 | 江苏 Ⅰ 徐州-4,http://stream.huaihai.tv/ggpd/sd/live.m3u8
36 |
37 | 江苏 Ⅰ 无锡综合,http://live-wx.wifiwx.com/wxtv1/sd/live.m3u8
38 | 江苏 Ⅰ 无锡都市,http://live-wx.wifiwx.com/wxtv3/sd/live.m3u8
39 |
40 | 江苏 Ⅰ 句容综合,http://218.3.92.100:1937/live/jrxwzh/playlist.m3u8
41 | 江苏 Ⅰ 句容生活,http://218.3.92.100:1937/live/shenghuo/playlist.m3u8
42 | 江苏 Ⅰ 句容影视,http://218.3.92.100:1937/live/yingshi/playlist.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.河北.tv:
--------------------------------------------------------------------------------
1 | 河北 Ⅰ 河北卫视,http://live01.hebtv.com/channels/hebtv/video_channel_04/flv:2000k/live
2 | 河北 Ⅰ 河北影视,http://live01.hebtv.com/channels/hebtv/video_channel_06/flv:2000k/live
3 | 河北 Ⅰ 河北卫视,http://live01.hebtv.com/channels/hebtv/video_channel_04/m3u8:2000k/live.m3u8
4 | 河北 Ⅰ 河北影视,http://live01.hebtv.com/channels/hebtv/video_channel_06/m3u8:2000k/live.m3u8
5 |
6 | 河北 Ⅰ 河北卫视,http://weblive.hebtv.com/live/hbws_bq/index.m3u8
7 | 河北 Ⅰ 河北影视,http://weblive.hebtv.com/live/hbys_bq/index.m3u8
8 | 河北 Ⅰ 河北经济,http://weblive.hebtv.com/live/hbjj_bq/index.m3u8
9 | 河北 Ⅰ 河北都市,http://weblive.hebtv.com/live/hbds_bq/index.m3u8
10 | 河北 Ⅰ 河北公共,http://weblive.hebtv.com/live/hbgg_bq/index.m3u8
11 | 河北 Ⅰ 河北农民,http://weblive.hebtv.com/live/nmpd_bq/index.m3u8
12 | 河北 Ⅰ 河北少儿,http://weblive.hebtv.com/live/hbse_bq/index.m3u8
13 |
14 | 河北 Ⅰ 衡水新闻综合,http://hls.hsrtv.cn/hls/hstv1.m3u8
15 | 河北 Ⅰ 衡水影视娱乐,http://hls.hsrtv.cn/hls/hstv2.m3u8
16 | 河北 Ⅰ 衡水公共频道,http://hls.hsrtv.cn/hls/hstv3.m3u8
17 |
18 | 河北省 Ⅰ 迁西综合,https://tv.lnshw.com.cn:8123/liveqx2/livestream.m3u8
19 | 河北省 Ⅰ 迁西农业,https://tv.lnshw.com.cn:8123/liveqx1/livestream.m3u8
20 | 河北省 Ⅰ 迁西综艺,https://tv.lnshw.com.cn:8123/lixeqx3/livestream.m3u8
21 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.河南.tv:
--------------------------------------------------------------------------------
1 | 河南 I 郑州地铁2频道,http://117.158.206.60:9080/live/live29_tzwj_500k.m3u8
2 | 河南 I 开封公共频道,http://117.158.206.60:9080/kaifeng/kftv1.m3u8
3 |
4 | 河南 I 梨园频道,http://117.158.206.60:9080/live/lypd.m3u8
5 | 河南 I 移动戏曲宝,http://117.158.206.60:9080/live/xqb.m3u8
6 |
7 | 河北 I 河北戏曲,http://117.158.206.60:9080/live/live31_tzwj_500k.m3u8
8 | 河北 I 河北人文,http://117.158.206.60:9080/live/renwendili.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.浙江.tv:
--------------------------------------------------------------------------------
1 | 浙江卫视,http://yf.m.l.cztv.com/channels/lantian/channel01/1080p.m3u8
2 | 浙江 Ⅰ 浙江钱江,http://yf.m.l.cztv.com/channels/lantian/channel02/1080p.m3u8
3 | 浙江 Ⅰ 浙江经济,http://yf.m.l.cztv.com/channels/lantian/channel03/1080p.m3u8
4 | 浙江 Ⅰ 浙江教育,http://yf.m.l.cztv.com/channels/lantian/channel04/1080p.m3u8
5 | 浙江 Ⅰ 浙江影视,http://yf.m.l.cztv.com/channels/lantian/channel05/1080p.m3u8
6 | 浙江 Ⅰ 浙江休闲,http://yf.m.l.cztv.com/channels/lantian/channel06/1080p.m3u8
7 | 浙江 Ⅰ 浙江新闻,http://yf.m.l.cztv.com/channels/lantian/channel07/1080p.m3u8
8 | 浙江 Ⅰ 浙江少儿,http://yf.m.l.cztv.com/channels/lantian/channel08/1080p.m3u8
9 | 浙江 Ⅰ 浙江留学,http://yf.m.l.cztv.com/channels/lantian/channel09/1080p.m3u8
10 | 浙江 Ⅰ 浙江国际,http://yf.m.l.cztv.com/channels/lantian/channel10/1080p.m3u8
11 | 浙江 Ⅰ 浙江易购,http://yf.m.l.cztv.com/channels/lantian/channel11/1080p.m3u8
12 | 浙江 Ⅰ 浙江数码,http://yf.m.l.cztv.com/channels/lantian/channel12/1080p.m3u8
13 |
14 | 浙江 Ⅰ 浙江钱江,http://hw-m-l.cztv.com/channels/lantian/channel02/720p.m3u8
15 | 浙江 Ⅰ 浙江经济,http://hw-m-l.cztv.com/channels/lantian/channel03/720p.m3u8
16 | 浙江 Ⅰ 浙江教育,http://hw-m-l.cztv.com/channels/lantian/channel04/720p.m3u8
17 | 浙江 Ⅰ 浙江影视,http://hw-m-l.cztv.com/channels/lantian/channel05/720p.m3u8
18 | 浙江 Ⅰ 浙江休闲,http://hw-m-l.cztv.com/channels/lantian/channel06/720p.m3u8
19 | 浙江 Ⅰ 浙江新闻,http://hw-m-l.cztv.com/channels/lantian/channel07/720p.m3u8
20 | 浙江 Ⅰ 浙江少儿,http://hw-m-l.cztv.com/channels/lantian/channel08/720p.m3u8
21 | 浙江 Ⅰ 浙江留学,http://hw-m-l.cztv.com/channels/lantian/channel09/720p.m3u8
22 | 浙江 Ⅰ 浙江国际,http://hw-m-l.cztv.com/channels/lantian/channel10/720p.m3u8
23 | 浙江 Ⅰ 浙江易购,http://hw-m-l.cztv.com/channels/lantian/channel11/720p.m3u8
24 | 浙江 Ⅰ 浙江数码,http://hw-m-l.cztv.com/channels/lantian/channel12/720p.m3u8
25 |
26 | 浙江 Ⅰ 绍兴综合,http://live.shaoxing.com.cn/video/s10001-sxtv1/index.m3u8
27 | 浙江 Ⅰ 绍兴影视,http://live.shaoxing.com.cn/video/s10001-sxtv3/index.m3u8
28 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.湖北.tv:
--------------------------------------------------------------------------------
1 | 湖北卫视,http://live.cjyun.org/hubeitv/s10008-live-hbws.m3u8
2 |
3 | 湖北 Ⅰ 荆门公共台,http://jingmen.live.cjyun.org/video/s10101-jmggpd.m3u8
4 | 湖北 Ⅰ 荆门综合台,http://jingmen.live.cjyun.org/video/s10101-jmnews.m3u8
5 |
6 | 湖北 Ⅰ 荆门公共台,http://live.jmtv.com.cn/ngpd/sd/live.m3u8
7 | 湖北 Ⅰ 荆门综合台,http://live.jmtv.com.cn/xwzh/sd/live.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.湖南.tv:
--------------------------------------------------------------------------------
1 | 湖南卫视,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000136.m3u8
2 | 湖南 Ⅰ 湖南电影,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000026.m3u8
3 | 湖南 Ⅰ 长沙新闻,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000190.m3u8
4 | 湖南 Ⅰ 郴州综合,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000267.m3u8
5 | 湖南 Ⅰ 娄底综合,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000268.m3u8
6 | 湖南 Ⅰ 邵阳综合,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000269.m3u8
7 | 湖南 Ⅰ 株洲综合,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000270.m3u8
8 | 湖南 Ⅰ 张家界综,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000271.m3u8
9 |
10 | 江西卫视,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000238.m3u8
11 | 东方卫视,http://httpdvb.slave.homed.hunancatv.com:13164/playurl?playtype=live&protocol=hls&accesstoken=R5DEE27D0U309B3089K7735A23DIC56EFF0APBM2FFCD29V0Z69015W15DEAE8ECE8A23EB&playtoken=ABCDEFGH&programid=4200000347.m3u8
12 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.重庆.tv:
--------------------------------------------------------------------------------
1 | 重庆卫视,http://qxlmlive.cbg.cn:1935/app_2/ls_67.stream/chunklist.m3u8
2 |
3 | 重庆卫视,https://onsitecdn.cbgcloud.com/76btqk/d6tb4v.m3u8
4 | 重庆新闻,https://onsitecdn.cbgcloud.com/4zjt2a/zb7nip.m3u8
5 |
6 | 万州综合,http://123.146.162.24:8017/iTXwrGs/800/live.m3u8
7 | 万州三峡,http://123.146.162.24:8017/c2F0hmi/1000/live.m3u8
8 | 万州影视,http://123.146.162.24:8017/d4ceB1a/1000/live.m3u8
9 | 万州科教,http://123.146.162.24:8017/Cz7WPb8/800/live.m3u8
10 |
11 | 万州综合,http://wanzhoulive.cbg.cn:8017/iTXwrGs/800/live.m3u8
12 | 万州三峡,http://wanzhoulive.cbg.cn:8017/c2F0hmi/1000/live.m3u8
13 | 万州影视,http://wanzhoulive.cbg.cn:8017/d4ceB1a/1000/live.m3u8
14 | 万州科教,http://wanzhoulive.cbg.cn:8017/Cz7WPb8/800/live.m3u8
15 |
16 | 万州综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8
17 | 万州三峡,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8
18 | 万州影视,http://123.146.162.24:8013/tslslive/vWlnEzU/hls/live_sd.m3u8
19 | 万州科教,http://123.146.162.24:8013/tslslive/URetCnP/hls/live_sd.m3u8
20 |
21 |
22 |
23 | ##重庆少儿,http://219.153.252.50/PLTV/88888888/224/3221225646/chunklist.m3u8
24 | 重庆少儿,http://219.153.252.50/PLTV/88888888/224/3221225646/1.m3u8
25 | 重庆新闻,http://219.153.252.50/PLTV/88888888/224/3221225531/1.m3u8
26 | 重庆文娱,http://219.153.252.50/PLTV/88888888/224/3221225630/1.m3u8
27 | 重庆影视,http://219.153.252.50/PLTV/88888888/224/3221225633/1.m3u8
28 | 重庆时尚,http://219.153.252.50/PLTV/88888888/224/3221225627/1.m3u8
29 | 重庆都市,http://219.153.252.50/PLTV/88888888/224/3221225631/1.m3u8
30 | 阜阳综合,http://219.153.252.50/PLTV/88888888/224/3221225623/1.m3u8
31 | 钦州综合,http://219.153.252.50/PLTV/88888888/224/3221225628/1.m3u8
32 | 防城港综合,http://219.153.252.50/PLTV/88888888/224/3221225644/1.m3u8
33 | 黔西南综合,http://219.153.252.50/PLTV/88888888/224/3221225638/1.m3u8
34 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/地方台/地方台.黑龙江.tv:
--------------------------------------------------------------------------------
1 | 黑龙江台,http://stream3.hljtv.com/hljws2/sd/live.m3u8
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/承德技师学院.tv:
--------------------------------------------------------------------------------
1 | stream.cdjsxy.cn
2 | 北京卫视,http://stream.cdjsxy.cn/bjws/sd/live.m3u8
3 | 湖南卫视,http://stream.cdjsxy.cn/hnws/sd/live.m3u8
4 | CCTV 17,http://stream.cdjsxy.cn/lypd/sd/live.m3u8
5 | CETV 教育一台,http://stream.cdjsxy.cn/zgjy/sd/live.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/教育.北京.tv:
--------------------------------------------------------------------------------
1 | 北京市 教育网
2 | 凤凰中文,rtmp://58.200.131.2:1935/livetv/fhzw
3 | 凤凰资讯,rtmp://58.200.131.2:1935/livetv/fhzx
4 |
5 | CHC高清电影 720P,rtmp://58.200.131.2:1935/livetv/chchd
6 | CHC家庭电影 540P,rtmp://58.200.131.2:1935/livetv/chctv
7 | CHC动作电影 540P,rtmp://58.200.131.2:1935/livetv/chcatv
8 |
9 | 国家地理,rtmp://58.200.131.2:1935/livetv/natlgeo
10 | 探索频道,rtmp://58.200.131.2:1935/livetv/discovery
11 |
12 | Star Sports,rtmp://58.200.131.2:1935/livetv/starsports
13 | CHANNEL[V],rtmp://58.200.131.2:1935/livetv/channelv
14 |
15 | 湖南卫视,rtmp://58.200.131.2:1935/livetv/hunantv
16 | 江苏卫视,rtmp://58.200.131.2:1935/livetv/jstv
17 | 凤凰电影,rtmp://58.200.131.2:1935/livetv/fhdy
18 | 星空卫视,rtmp://58.200.131.2:1935/livetv/startv
19 |
20 | CCTV16,rtmp://58.200.131.2:1935/livetv/cctv16
21 | CETV-1,rtmp://58.200.131.2:1935/livetv/cetv1
22 | CETV-2,rtmp://58.200.131.2:1935/livetv/cetv2
23 | CETV-3,rtmp://58.200.131.2:1935/livetv/cetv3
24 | CETV-4,rtmp://58.200.131.2:1935/livetv/cetv4
25 |
26 | CCTV-风云剧场,rtmp://58.200.131.2:1935/livetv/fyjctv
27 | CCTV-风云音乐,rtmp://58.200.131.2:1935/livetv/fyyytv
28 | CCTV-风云足球,rtmp://58.200.131.2:1935/livetv/fyzqtv
29 | CCTV-国防军事,rtmp://58.200.131.2:1935/livetv/gfjstv
30 | CCTV-怀旧剧场,rtmp://58.200.131.2:1935/livetv/hjjctv
31 | CCTV-世界地理,rtmp://58.200.131.2:1935/livetv/sjdltv
32 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/港澳台.tv:
--------------------------------------------------------------------------------
1 | 香港卫视,http://zhibo.hkstv.tv/livestream/mutfysrq.flv
2 | 香港卫视,http://zhibo.hkstv.tv/livestream/mutfysrq/playlist.m3u8
3 | 香港亞美卫视,http://dcunilive30-lh.akamaihd.net/i/dclive_1@535522/master.m3u8
4 | 香港阳光卫视,https://stream.chinasuntv.com/680k/mid_video_index.m3u8
5 |
6 | 香港亚视,https://de035ceb0768225b04e9a007abe39fca.live.prod.hkatv.com/a1_cbr_lo.m3u8
7 |
8 | 澳门奥视,http://61.244.22.4/ch1/ch1.live/playelist.m3u8
9 | 澳门RTP,http://61.244.22.4/ch2/ch2.live/playelist.m3u8
10 | 澳门电影,http://61.244.22.4/ch3/ch3.live/playelist.m3u8
11 | 澳门体育,http://61.244.22.4/ch4/sport_ch4.live/playelist.m3u8
12 | 澳视卫星,http://61.244.22.5/ch3/_definst_/ch3.live/playlist.m3u8
13 |
14 | 耀才财经,rtmp://202.69.69.180/webcast/bshdlive-pc
15 | GoodTV 综合1080P,http://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch1-3.m3u8
16 | GoodTV 综合 720P,http://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch1-2.m3u8
17 | GoodTV 综合 480P,https://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch1-1.m3u8
18 | GoodTV 真理1080P,http://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch2-3.m3u8
19 | GoodTV 真理 720P,http://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch2-2.m3u8
20 | GoodTV 真理 480P,https://live-350k.streamingfast.net/hls-live/goodtv/_definst_/liveevent/live-ch2-1.m3u8
21 | Electric Now,https://bozztv.com/veset1/720pHi/playlist_720pHi.m3u8
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/源代理.tv:
--------------------------------------------------------------------------------
1 | ## http://livecdn.myntv.cn/live/mykj.flv?wsSecret=2cb2ffccbba1757a3cb0b35b5e14fa78&wsTime=5e718b5c
2 | 四川 Ⅰ 绵阳科技,http://live.826pc.com/mytv/live.php?id=2
3 | 四川 Ⅰ 绵阳公共,http://live.826pc.com/mytv/live.php?id=3
4 | 四川 Ⅰ 绵阳综合,http://live.826pc.com/mytv/live.php?id=4
5 |
6 | ## 代理 http://show.kan0512.com/ncsztv5/playlist.m3u8?_upt=691d7e1d1584445972
7 | 江苏 Ⅰ 苏州生活,http://player.ioioz.com/18/tv.php?tv=jssztv&id=53
8 | 江苏 Ⅰ 苏州未知,http://player.ioioz.com/18/tv.php?tv=jssztv&id=52
9 | 江苏 Ⅰ 苏州未知,http://player.ioioz.com/18/tv.php?tv=jssztv&id=51
10 |
11 | ## 代理 http://stream5.fjtv.net/zhpd/sd/live.m3u8?_upt=138aa2271584445850
12 | 福建 Ⅰ 福建综合,http://player.ioioz.com/18/tv.php?tv=fjtv&id=fjzh
13 | 福建 Ⅰ 福建公共,http://player.ioioz.com/18/tv.php?tv=fjtv&id=fjgg
14 | 福建 Ⅰ 福建旅游,http://player.ioioz.com/18/tv.php?tv=fjtv&id=fjds
15 |
16 | ## 代理 http://stream6.fjtv.net/haixia/sd/live.m3u8?_upt=e17bf1611584504983&drm
17 | 海峡卫视,http://player.ioioz.com/18/tv.php?tv=fjtv&id=hxws
18 |
19 | ## 代理 http://hoge.play3.cloud.henancatv.com/hntv2/playlist.m3u8?_upt=5d4d14481584505122
20 | 河南 Ⅰ 河南都市台,http://player.200877926.top/18/tv.php?tv=hayx&id=82
21 |
22 | ## 代理 http://show.kan0512.com/ncsztv1/sd/live.m3u8?_upt=f5ac42491584440257
23 | 江苏 Ⅰ 苏州综合,http://player.200877926.top/17/js/suzhoum3u8.php?id=60
24 |
25 | ## 代理 http://stream.zhyantai.com/yttv1/playlist.m3u8?_upt=d88c76681584505478
26 | 山东 Ⅰ 烟台综合台,http://player.200877926.top/hogejump/yantai.php?id=2
27 | 山东 Ⅰ 烟台综合台,http://player.200877926.top/hogejump/yantai.php?id=3
28 | 山东 Ⅰ 烟台综合台,http://player.200877926.top/hogejump/yantai.php?id=4
29 | 山东 Ⅰ 烟台影视台,http://player.200877926.top/hogejump/yantai.php?id=5
30 |
31 | ## 代理 http://stream1.hnntv.cn/lywsgq/sd/live.m3u8?_upt=161541891584505321
32 | 海南卫视,http://hnhbxww.com/live.php?http://mlive1.91kds.cn/b9/hitv.m3u8?id=lywshd
33 |
34 | ## 代理 http://hk4-edge26-1.edgeware.tvb.com/session/1e77a532-68c0-11ea-b02c-005056903a13/dtysfd/newslive/smil:mobilehd_inews.smil/playlist.m3u8?token=af68e6ba8cc5c6ef5f6924824450db99_1584584894_1584584894
35 | TVB 无线新闻,http://www.liveviptv.xyz/tv/tvb.php?vid=wxxw
36 | TVB 无线新闻,http://www.liveviptv.xyz/tv/tvb.php
37 |
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/移动源/移动.其他.tv:
--------------------------------------------------------------------------------
1 | 河北石家庄 移动
2 | CCTV04,http://111.63.117.13:6060/030000001000/CCTV-4/CCTV-4.m3u8
3 | CCTV15,http://111.63.117.13:6060/030000001000/G_CCTV-15/G_CCTV-15.m3u8
4 |
5 | 河北石家庄 移动
6 | CCTV3,http://111.11.123.47:6610/030000001000/CCTV-3/CCTV-3.m3u8
7 | CCTV5,http://111.11.123.47:6610/030000001000/CCTV-5/CCTV-5.m3u8
8 |
9 | 北京移动
10 | 卡酷少儿,http://221.179.217.70/PLTV/88888888/224/3221225907/1.m3u8
11 |
12 | 黑龙江哈尔滨 移动
13 | 四川卫视,http://39.134.65.87/PLTV/88888888/224/3221225497/index.m3u8
14 | 东南卫视,http://39.134.65.162/PLTV/88888888/224/3221225500/index.m3u8
15 | 宁夏卫视,http://39.134.65.162/PLTV/88888888/224/3221225579/index.m3u8
16 | 内蒙卫视,http://39.134.65.162/PLTV/88888888/224/3221225577/index.m3u8
--------------------------------------------------------------------------------
/app/src/main/assets/tvlive/移动源/移动.南昌2.tv:
--------------------------------------------------------------------------------
1 | ## m-tvlmedia.public.bcs.ysten.com CDN is 223.82.250.72
2 | ##
3 | 江西省南昌市 移动
4 | CCTV 15,http://m-tvlmedia.public.bcs.ysten.com/live/cctv-15/1.m3u8
5 | CCTV 15,http://223.82.250.72/live/cctv-15/1.m3u8
6 |
7 | 湖南卫视,http://m-tvlmedia.public.bcs.ysten.com/live/hdhunanstv/1.m3u8
8 | 新疆卫视,http://m-tvlmedia.public.bcs.ysten.com/live/xinjiangstv/1.m3u8
9 | 凤凰中文,http://m-tvlmedia.public.bcs.ysten.com/live/fhchinese/1.m3u8
10 | 巴中公共,http://m-tvlmedia.public.bcs.ysten.com/live/hddongfangstv/1.m3u8
11 |
12 | 凤凰中文,http://m-tvlmedia.public.bcs.ysten.com/ysten-bussiness/live/fhchinese/1.m3u8
13 | 凤凰资讯,http://m-tvlmedia.public.bcs.ysten.com/ysten-bussiness/live/fhzixun/1.m3u8
14 | 卡酷少儿,http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/kakukaton/1.m3u8
15 | 优漫卡通,http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/youmankaton/1.m3u8
16 |
17 | 江西南昌移动
18 | CCTV-5+,http://117.169.120.132:8080/live/hdcctv05plus/playlist.m3u8
19 | CCTV-8,http://117.169.120.132:8080/live/cctv-8/playlist.m3u8
20 | CCTV-04,http://117.169.120.140:8080/live/cctv-4/.m3u8
21 | CCTV-13,http://117.169.120.140:8080/live/cctv-13/.m3u8
22 |
23 | 深圳卫视,http://117.169.120.140:8080/live/hdshenzhenstv/.m3u8
24 | 江西卫视,http://117.169.120.140:8080/live/jiangxistv/.m3u8
25 | 重庆卫视,http://117.169.120.132:8080/live/chongqingstv/playlist.m3u8
26 | 东方财经,http://117.169.120.140:8080/live/dongnanstv/.m3u8
27 | 娄底公共,http://117.169.120.140:8080/live/hdtianjinstv/.m3u8
28 |
29 | 凤凰中文,http://117.169.120.138:8080/live/fhchinese/index.m3u8
30 | 凤凰资讯,http://117.169.120.138:8080/live/fhzixun/index.m3u8
31 |
--------------------------------------------------------------------------------
/app/src/main/assets/失效/天翼视讯.tv:
--------------------------------------------------------------------------------
1 | tv189.com 天翼视讯
2 | CIBN炫佳动漫,http://live3.nty.tv189.com/tm-yg1dmpd-512k.m3u8
3 | CIBN风尚运动,http://live3.nty.tv189.com/tm-yg1dysc-512k.m3u8
4 | CIBN健康,http://live3.nty.tv189.com/tm-yg1jkpd-512k.m3u8
5 | CIBN今古珍藏,http://live3.nty.tv189.com/tm-yg1zypd-512k.m3u8
6 | CIBN军事,http://live3.nty.tv189.com/tm-yg1gzjc-512k.m3u8
7 | CIBN旅游,http://live3.nty.tv189.com/tm-yg1lypd-512k.m3u8
8 | CIBN热播剧场,http://live3.nty.tv189.com/tm-yg1rbjc-512k.m3u8
9 | CIBN流金岁月,http://live3.nty.tv189.com/tm-yg1scpd-512k.m3u8
10 | CIBN古装剧场,http://live1.nty.tv189.com/tm-yg1zypd-512k.m3u8
11 | CIBN经典剧场,http://live3.nty.tv189.com/tm-yg1jdjc-512k.m3u8
12 | CIBN骄阳剧场,http://live3.nty.tv189.com/tm-yg1jyjc-512k.m3u8
13 | CIBN动作影院,http://live3.nty.tv189.com/tm-yg1dzyy-512k.m3u8
14 | CIBN情感影院,http://live3.nty.tv189.com/tm-yg1qgyy-512k.m3u8
15 | CIBN精品影院,http://live3.nty.tv189.com/tm-yg1jpyy-512k.m3u8
16 | CIBN喜剧影院,http://live3.nty.tv189.com/tm-yg1xjyy-512k.m3u8
17 | CIBN电影,http://live3.nty.tv189.com/tm-yg1dypd-512k.m3u8
18 | CIBN微电影,http://live3.nty.tv189.com/tm-yg1wdypd-512k.m3u8
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/失效/电信.上海.tv:
--------------------------------------------------------------------------------
1 | 上海市 电信
2 | CCTV1HD,http://101.89.132.136/live/tm-cctv1-4000k.m3u8
3 | CCTV2HD,http://101.89.132.136/live/tm-cctv2-4000k.m3u8
4 | CCTV3HD,http://101.89.132.136/live/tm-cctv3-4000k.m3u8
5 | CCTV4HD,http://101.89.132.136/live/tm-cctv4-4000k.m3u8
6 | CCTV5HD,http://101.89.132.136/live/tm-cctv5-4000k.m3u8
7 | CCTV6HD,http://101.89.132.136/live/tm-cctv6-4000k.m3u8
8 | CCTV7HD,http://101.89.132.136/live/tm-cctv7-4000k.m3u8
9 | CCTV8HD,http://101.89.132.136/live/tm-cctv8-4000k.m3u8
10 | CCTV9HD,http://101.89.132.136/live/tm-cctv9-4000k.m3u8
11 | CCTV10HD,http://101.89.132.136/live/tm-cctv10-4000k.m3u8
12 | CCTV12HD,http://101.89.132.136/live/tm-cctv12-4000k.m3u8
13 | CCTV14HD,http://101.89.132.136/live/tm-cctv14-4000k.m3u8
14 |
15 | 北京卫视,http://101.89.132.136/live/tm-btv1hd-4000k.m3u8
16 | 北京文艺,http://101.89.132.136/live/tm-btv2hd-4000k.m3u8
17 | 北京影视,http://101.89.132.136/live/tm-btv4-4000k.m3u8
18 | 北京新闻,http://101.89.132.136/live/tm-btv9-4000k.m3u8
19 | 北京纪实,http://101.89.132.136/live/tm-btvjishihd-4000k.m3u8
20 | 安徽卫视,http://101.89.132.136/live/tm-ahwshd-4000k.m3u8
21 | 东方卫视,http://101.89.132.136/live/tm-dfwshd-4000k.m3u8
22 | 深圳卫视,http://101.89.132.136/live/tm-shenzhenhd-4000k.m3u8
23 | 广东卫视,http://101.89.132.136/live/tm-guangdonghd-4000k.m3u8
24 | 黑龙卫视,http://101.89.132.136/live/tm-heilongjianghd-4000k.m3u8
25 | 辽宁卫视,http://101.89.132.136/live/tm-liaoninghd-4000k.m3u8
26 |
27 | 喜剧影院,http://101.89.132.179/live/tm-yg1xjyy-1200k.m3u8
28 | 高清电影,http://101.89.132.179/live/tm-yg1dypd-1200k.m3u8
29 | 情感影院,http://101.89.132.179/live/tm-yg1qgyy-1200k.m3u8
30 | 动作影院,http://101.89.132.179/live/tm-yg1dzyy-1200k.m3u8
31 | 精品影院,http://101.89.132.179/live/tm-yg1jpyy-1200k.m3u8
32 | 经典剧场,http://101.89.132.179/live/tm-yg1jdjc-1200k.m3u8
33 | 骄阳剧场,http://101.89.132.179/live/tm-yg1jyjc-1200k.m3u8
34 | 上海电视剧,http://101.89.132.179/live/tm-shdsj-4000k.m3u8
35 |
--------------------------------------------------------------------------------
/app/src/main/assets/失效/电信.其他.tv:
--------------------------------------------------------------------------------
1 |
2 | 河南卫视,http://123.163.119.21:9602/live/live1/500K/tzwj_video.m3u8
3 |
--------------------------------------------------------------------------------
/app/src/main/assets/失效/移动.其他.tv:
--------------------------------------------------------------------------------
1 |
2 | 北京移动
3 | 凤凰中文,http://111.13.42.9/PLTV/88888888/224/3221225942/1.m3u8
4 | 凤凰中文,http://111.13.42.13/PLTV/88888888/224/3221225942/1.m3u8
5 |
6 | 黑龙江哈尔滨 移动
7 | CCTV1,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225587/index.m3u8
8 | CCTV1,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225710/index.m3u8
9 | CCTV3,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225606/index.m3u8
10 | CCTV4,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225590/index.m3u8
11 | CCTV5,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225711/index.m3u8
12 | CCTV6,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225607/index.m3u8
13 | CCTV8,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225608/index.m3u8
14 | CCTV13,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225599/index.m3u8
15 |
16 | 黑龙江哈尔滨 移动
17 | CCTV 04,http://39.134.65.162/PLTV/88888888/224/3221225487/index.m3u8
18 | CCTV 08,http://39.134.65.162/PLTV/88888888/224/3221225692/index.m3u8
19 |
20 | 浙江省温州市 移动
21 | CCTV 4K,http://39.134.185.69/PLTV/88888888/224/3221226758/index.m3u8
22 |
23 | hebyun.com.cn
24 | CCTV 01,http://umslive.hebyun.com.cn/live/cctv1/1500k/tzwj_video.m3u8
25 | CCTV 02,http://umslive.hebyun.com.cn/live/cctv2/1500k/tzwj_video.m3u8
26 | CCTV 04,http://umslive.hebyun.com.cn/live/cctv4/1500k/tzwj_video.m3u8
27 |
28 | 陕西西安 移动
29 | 浙江卫视,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225598/index.m3u8
30 | 宁夏卫视,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225625/index.m3u8
31 | 甘肃卫视,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225626/index.m3u8
32 | 内蒙古台,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225631/index.m3u8
33 | 江苏卫视,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225663/index.m3u8
34 |
35 | 贵州安顺 移动
36 | 吉林卫视,http://39.135.15.70:6610/PLTV/88888888/224/3221225753/1/1000.m3u8?zte_auth=f395930b&IASHttpSessionId=OTT741220200310083219056978&zte_bandwidth=1000&bandwidth=8467456&ispcode=6&timeformat=local&channel=3221225753&m3u8_level=2&ztecid=3221225753
--------------------------------------------------------------------------------
/app/src/main/assets/失效/移动.福州2.tv:
--------------------------------------------------------------------------------
1 | 福建福州移动直播源(https://www.right.com.cn/forum/thread-833312-1-1.html)
2 | CCTV-1,http://183.251.61.207/PLTV/88888888/224/3221225812/index.m3u8
3 | CCTV-4,http://183.251.61.207/PLTV/88888888/224/3221225802/index.m3u8
4 | CCTV-6,http://183.251.61.207/PLTV/88888888/224/3221225804/index.m3u8
5 | CCTV-11,http://183.251.61.207/PLTV/88888888/224/3221225815/index.m3u8
6 | CCTV-13,http://183.251.61.207/PLTV/88888888/224/3221225817/index.m3u8
7 | CCTV-14,http://183.251.61.207/PLTV/88888888/224/3221225819/index.m3u8
8 |
9 | 广东卫视,http://183.251.61.207/PLTV/88888888/224/3221225824/index.m3u8
10 | 湖南卫视,http://183.251.61.207/PLTV/88888888/224/3221225827/index.m3u8
11 | 贵州卫视,http://183.251.61.207/PLTV/88888888/224/3221225838/index.m3u8
12 | 甘肃卫视,http://183.251.61.207/PLTV/88888888/224/3221225845/index.m3u8
13 | 新疆卫视,http://183.251.61.207/PLTV/88888888/224/3221225852/index.m3u8
14 |
15 | CCTV-1HD,http://183.251.61.207/PLTV/88888888/224/3221225922/index.m3u8
16 | CCTV-3HD,http://183.251.61.207/PLTV/88888888/224/3221225924/index.m3u8
17 |
18 | NewTV动作,http://183.251.61.207/PLTV/88888888/224/3221225879/index.m3u8
19 | NewTV惊悚,http://183.251.61.207/PLTV/88888888/224/3221225885/index.m3u8
20 | NewTV军旅,http://183.251.61.207/PLTV/88888888/224/3221225887/index.m3u8
21 | NewTV搏击,http://183.251.61.207/PLTV/88888888/224/3221225895/index.m3u8
22 |
23 | 凤凰资讯,http://183.251.61.221/PLTV/88888888/224/3221225901/index.m3u8
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/失效/移动.福州3.tv:
--------------------------------------------------------------------------------
1 | 福建福州
2 | 纯享4K,http://112.50.243.8/PLTV/88888888/224/3221226825/1.m3u8
3 | 咪咕4K,http://112.50.243.8/PLTV/88888888/224/3221226833/1.m3u8
4 | 凤凰中文,http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8
5 | 凤凰资讯,http://112.50.243.8/PLTV/88888888/224/3221225901/1.m3u8
6 |
7 | 凤凰中文,http://112.50.243.8/PLTV/88888888/224/3221225900/index.m3u8
8 | 凤凰资讯,http://112.50.243.8/PLTV/88888888/224/3221225901/index.m3u8
9 |
10 | 陕西卫视,http://112.50.243.8/PLTV/88888888/224/3221225850/index.m3u8
11 | 内蒙卫视,http://112.50.243.8/PLTV/88888888/224/3221225846/index.m3u8
12 | 新疆卫视,http://112.50.243.8/PLTV/88888888/224/3221225852/index.m3u8
13 | 云南卫视,http://112.50.243.8/PLTV/88888888/224/3221225853/index.m3u8
14 | 青海卫视,http://112.50.243.8/PLTV/88888888/224/3221225841/index.m3u8
15 | 山西卫视,http://112.50.243.8/PLTV/88888888/224/3221225839/index.m3u8
16 | 东南卫视,http://112.50.243.8/PLTV/88888888/224/3221225833/index.m3u8
17 | 甘肃卫视,http://112.50.243.8/PLTV/88888888/224/3221225845/index.m3u8
18 |
19 | Newtv超级电影,http://112.50.243.12/PLTV/88888888/224/3221225804/index.m3u8
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/bean/AlbumList.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.bean;
2 |
3 | import java.util.concurrent.CopyOnWriteArrayList;
4 |
5 | public class AlbumList extends CopyOnWriteArrayList {
6 |
7 | @Override
8 | public boolean add(Album album) {
9 | boolean find = false;
10 | for (Album tmp:this){
11 | if(tmp.getPlayurl().equals(album.getPlayurl()) && tmp.getSize() == album.getSize()){
12 | find = true;
13 | break;
14 | }
15 | }
16 | if(!find){
17 | return super.add(album);
18 | }else{
19 | return false;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/bean/ListVideo.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.bean;
2 |
3 | public class ListVideo {
4 |
5 | private String text;
6 | private String title;
7 | private String url;
8 |
9 | public ListVideo(int id, String title, String url) {
10 | this(id + "", title, url);
11 | }
12 |
13 | public ListVideo(String text, String title, String url) {
14 | this.text = text;
15 | this.title = title;
16 | this.url = url;
17 | }
18 |
19 | public String getText() {
20 | return text;
21 | }
22 |
23 | public void setText(String text) {
24 | this.text = text;
25 | }
26 |
27 | public String getTitle() {
28 | return title;
29 | }
30 |
31 | public void setTitle(String title) {
32 | this.title = title;
33 | }
34 |
35 | public String getUrl() {
36 | return url;
37 | }
38 |
39 | public void setUrl(String url) {
40 | this.url = url;
41 | }
42 |
43 | @Override
44 | public String toString() {
45 | return "ListVideo [text=" + text + ", title='" + title + "', url='" + url + "']";
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/bean/PlayVideo.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.bean;
2 |
3 | public class PlayVideo implements Cloneable {
4 |
5 | protected String text;
6 | protected String url;
7 |
8 | public PlayVideo(String text, String url) {
9 | this.text = text;
10 | this.url = url;
11 | }
12 |
13 | public String getText() {
14 | return text;
15 | }
16 |
17 | public void setText(String text) {
18 | this.text = text;
19 | }
20 |
21 | public String getUrl() {
22 | return url;
23 | }
24 |
25 | public void setUrl(String url) {
26 | this.url = url;
27 | }
28 |
29 | public String toStr() {
30 | return "PlayVideo{" + text
31 | // + ", url='" + url + '\''
32 | + '}';
33 | }
34 |
35 | @Override
36 | public PlayVideo clone() {
37 | try {
38 | return (PlayVideo) super.clone();
39 | } catch (CloneNotSupportedException e) {
40 | e.printStackTrace();
41 | }
42 | return null;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/dialog/AlbumDialog.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.dialog;
2 |
3 | import android.content.Context;
4 | import android.graphics.Color;
5 | import android.os.Bundle;
6 | import android.util.Log;
7 |
8 | import com.shuiye.video.util.ResourceDef;
9 | import com.shuiyes.video.bean.ListVideo;
10 | import com.shuiyes.video.widget.NumberView;
11 | import com.zhy.view.flowlayout.FlowLayout;
12 | import com.zhy.view.flowlayout.TagAdapter;
13 | import com.zhy.view.flowlayout.TagView;
14 |
15 | import java.util.List;
16 |
17 | public class AlbumDialog extends FlowlayoutDialog {
18 |
19 | private final String TAG = this.getClass().getSimpleName();
20 |
21 | private List mVideoList;
22 |
23 | public AlbumDialog(Context context, List videos) {
24 | super(context);
25 | mVideoList = videos;
26 | }
27 |
28 | @Override
29 | protected void onCreate(Bundle savedInstanceState) {
30 | super.onCreate(savedInstanceState);
31 | Log.e(TAG, "onCreate()");
32 |
33 | mView.setAdapter(new TagAdapter(mVideoList) {
34 | @Override
35 | public TagView getView(FlowLayout parent, int position, ListVideo t) {
36 | NumberView view = new NumberView(getContext(), t);
37 | view.setTextColor(Color.WHITE);
38 | view.setOnClickListener(mListener);
39 | view.setSize(view.measureWidth(), NumberView.WH);
40 | return view;
41 | }
42 | });
43 | }
44 |
45 | public void show(final int index) {
46 | super.show();
47 | final NumberView view = (NumberView) this.findViewById(ResourceDef.ID_TAG_BTN + index);
48 | if (view != null) {
49 | view.setFocusableInTouchMode(true);
50 | view.requestFocus();
51 | Log.e(TAG, "show(" + index + ") " + view + " focused:" + view.isFocused());
52 | }
53 | }
54 |
55 | @Override
56 | public void show() {
57 | super.show();
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/dialog/FlowlayoutDialog.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.dialog;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.os.Bundle;
6 | import android.view.Gravity;
7 | import android.view.View;
8 | import android.view.WindowManager.LayoutParams;
9 |
10 | import com.shuiyes.video.R;
11 | import com.zhy.view.flowlayout.TagFlowLayout;
12 |
13 | public class FlowlayoutDialog extends Dialog implements View.OnClickListener {
14 |
15 | protected Context mContext = null;
16 | protected TagFlowLayout mView;
17 |
18 |
19 | public FlowlayoutDialog(Context context) {
20 | super(context, R.style.FullScreenDialog);
21 | mContext = context;
22 | }
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 | setContentView(R.layout.full_screen_dialog);
28 | mView = (TagFlowLayout) this.findViewById(R.id.root);
29 | }
30 |
31 | @Override
32 | public void show() {
33 | super.show();
34 |
35 | final LayoutParams layoutParams = getWindow().getAttributes();
36 | // align bottom
37 | layoutParams.gravity = Gravity.BOTTOM;
38 | // fullscreen
39 | layoutParams.width = LayoutParams.MATCH_PARENT;
40 | layoutParams.height = LayoutParams.WRAP_CONTENT;
41 |
42 | getWindow().getDecorView().setPadding(0, 0, 0, 0);
43 | getWindow().setAttributes(layoutParams);
44 |
45 | View firstChild = mView.getChildAt(0);
46 | if (firstChild != null) {
47 | firstChild.requestFocus();
48 | }
49 | }
50 |
51 | @Override
52 | public void onClick(View v) {
53 | switch (v.getId()) {
54 | }
55 | dismiss();
56 | }
57 |
58 | protected View.OnClickListener mListener;
59 |
60 | public void setOnClickListener(View.OnClickListener l) {
61 | mListener = l;
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/dialog/MiscDialog.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.dialog;
2 |
3 | import android.content.Context;
4 | import android.graphics.Color;
5 | import android.os.Bundle;
6 |
7 | import com.shuiyes.video.bean.PlayVideo;
8 | import com.shuiyes.video.widget.MiscView;
9 | import com.zhy.view.flowlayout.FlowLayout;
10 | import com.zhy.view.flowlayout.TagAdapter;
11 | import com.zhy.view.flowlayout.TagView;
12 |
13 | import java.util.List;
14 |
15 | public class MiscDialog extends FlowlayoutDialog {
16 |
17 | private List mUrlList;
18 |
19 | public MiscDialog(Context context, List urls) {
20 | super(context);
21 | mUrlList = urls;
22 | }
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | super.onCreate(savedInstanceState);
27 |
28 | mView.setAdapter(new TagAdapter(mUrlList) {
29 | @Override
30 | public TagView getView(FlowLayout parent, int position, T t) {
31 | MiscView view = new MiscView(getContext(), t);
32 | view.setTextColor(Color.WHITE);
33 | view.setOnClickListener(mListener);
34 | view.setSize(view.measureWidth(), MiscView.WH);
35 | return view;
36 | }
37 | });
38 | }
39 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/SVApplication.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import com.shuiyes.video.BuildConfig;
7 |
8 | public class SVApplication extends Application {
9 |
10 | private static Context sContext;
11 |
12 | @Override
13 | public void onCreate() {
14 | super.onCreate();
15 |
16 | sContext = this.getApplicationContext();
17 |
18 | android.util.Log.e("SY", "onCreate() " + BuildConfig.VERSION_CODE + "/" + BuildConfig.VERSION_NAME);
19 |
20 | // com.tencent.bugly.crashreport.CrashReport.initCrashReport(getApplicationContext(), "a96983310d", true);
21 | }
22 |
23 | public static Context getAppContext() {
24 | return sContext;
25 | }
26 |
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/WelcomeActivity.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.os.Bundle;
7 | import android.os.Handler;
8 | import android.text.TextUtils;
9 | import android.view.View;
10 |
11 | import com.shuiyes.video.R;
12 | import com.shuiyes.video.util.PlayUtils;
13 | import com.shuiyes.video.util.PreferenceUtil;
14 |
15 | public class WelcomeActivity extends Activity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_welcome);
21 |
22 | View decorView = getWindow().getDecorView();
23 | decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
24 | | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
25 | | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
26 | | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
27 | // | View.SYSTEM_UI_FLAG_FULLSCREEN
28 | | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
29 |
30 | getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
31 | getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
32 |
33 | final Context context = this;
34 | new Handler().postDelayed(new Runnable() {
35 | @Override
36 | public void run() {
37 | String urlHistory = PreferenceUtil.getPlayUrl(context);
38 | if (TextUtils.isEmpty(urlHistory)) {
39 | startActivity(new Intent(context, MainActivity.class));
40 | } else {
41 | PlayUtils.play(context, urlHistory, "播放记录恢复中...");
42 | }
43 | }
44 | }, 2345);
45 | }
46 |
47 | @Override
48 | public void onBackPressed() {
49 | }
50 |
51 | @Override
52 | protected void onStop() {
53 | super.onStop();
54 | finish();
55 | }
56 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/letv/LetvStream.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.letv;
2 |
3 | import com.shuiyes.video.bean.PlayVideo;
4 |
5 | public class LetvStream extends PlayVideo {
6 |
7 | private int stream;
8 | private String streamStr;
9 |
10 | public LetvStream(int stream, String url) {
11 | super(stream + "P", url);
12 | this.streamStr = stream + "P";
13 | this.stream = stream;
14 | this.url = url;
15 | }
16 |
17 | public int getStream() {
18 | return stream;
19 | }
20 |
21 | public String getStreamStr() {
22 | return streamStr;
23 | }
24 |
25 | @Override
26 | public String toStr() {
27 | return "LetvStream{" +
28 | "stream=" + streamStr +
29 | // ", url='" + url + '\'' +
30 | '}';
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/mdd/Sign.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.mdd;
2 |
3 | import java.security.MessageDigest;
4 |
5 | public class Sign {
6 | private static String[] charArray = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
7 |
8 | public static String sign(byte[] byteArray) {
9 | StringBuilder stringBuilder = new StringBuilder();
10 | for (byte b : byteArray) {
11 | stringBuilder.append(compute(b));
12 | }
13 | return stringBuilder.toString();
14 | }
15 |
16 | private static String compute(byte b) {
17 | int a = b;
18 | if (a < 0) {
19 | a += 256;
20 | }
21 | return charArray[a / 16] + charArray[a % 16];
22 | }
23 |
24 | public static String md5(String str) {
25 | try {
26 | MessageDigest instance = MessageDigest.getInstance("MD5");
27 | instance.update(str.getBytes("UTF-8"));
28 | return sign(instance.digest());
29 | } catch (Exception e) {
30 | e.printStackTrace();
31 | }
32 | return null;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/mgtv/MgtvSoActivity.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.mgtv;
2 |
3 | import android.app.Activity;
4 |
5 | public class MgtvSoActivity extends Activity {
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/qq/QQSection.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.qq;
2 |
3 | import com.shuiyes.video.bean.PlayVideo;
4 |
5 | public class QQSection extends PlayVideo {
6 |
7 | int index;
8 | private String formatid;
9 | private String vid;
10 |
11 | public QQSection(int index, String formatid, String vid, String fname) {
12 | super("章节" + index, fname);
13 | this.index = index;
14 | this.formatid = formatid;
15 | this.vid = vid;
16 | }
17 |
18 | public int getIndex() {
19 | return index - 1;
20 | }
21 |
22 | public String getFormatid() {
23 | return formatid;
24 | }
25 |
26 | public String getVid() {
27 | return vid;
28 | }
29 |
30 | @Override
31 | public String toStr() {
32 | return "QQSection" + index
33 | + "{" + formatid
34 | + ", vid=" + vid
35 | + ", url=" + url
36 | + '}';
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/qtiptv/QTingUtil.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.qtiptv;
2 |
3 | // view-source:http://www.92kk.com/dance/lists-hits-55-1.html
4 | // http://www.92kk.com/play/50569.html
5 | // http://s1176897.m.awhost.cn/djmv.php?t=/play/50569
6 | public class QTingUtil {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/ui/yinyang/TVActivity.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.yinyang;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.devlin_n.yinyangplayer.controller.StandardVideoController;
6 | import com.shuiyes.video.bean.PlayVideo;
7 | import com.shuiyes.video.ui.tvlive.YinyangTVPlayActivity;
8 | import com.shuiyes.video.util.PreferenceUtil;
9 |
10 | import java.util.ArrayList;
11 |
12 | public class TVActivity extends YinyangTVPlayActivity {
13 |
14 | // 暂先为父母播放CCTV3 综艺频道,后面改成网络API
15 | String[] cctv3Urls = {
16 | "上海百事通 1080p;http://112.25.48.68/live/program/live/cctv3hd/4000000/mnf.m3u8",
17 | "广西防城港 移动;http://39.135.38.165:6610/000000001000/1000000001000011218/1.m3u8?IASHttpSessionId=OTT16157620200202041417014267&fmt=ts2hls&u=45768392",
18 | "央视频;http://cctvalih5ca.v.myalicdn.com/live/cctv3_2/index.m3u8",
19 | "cctvtxyh5ca 480P;https://cctvtxyh5ca.liveplay.myqcloud.com/live/cctv3_2/index.m3u8",
20 | "北邮直播源;http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8",
21 | };
22 |
23 | @Override
24 | protected String[] getIntentStringExtras() {
25 | String urlHistory = PreferenceUtil.getTVUrl(this);
26 | if (TextUtils.isEmpty(urlHistory)) {
27 | urlHistory = cctv3Urls[0];
28 | }
29 | String[] tmp = urlHistory.split(";");
30 | return new String[]{tmp[1], tmp[0]};
31 | }
32 |
33 | @Override
34 | protected StandardVideoController initVideoController() {
35 | ShuiyeVideoController controller = new ShuiyeVideoController(this);
36 | controller.setLive(true);
37 |
38 | ArrayList list = new ArrayList();
39 | for (int i = 0; i < cctv3Urls.length; i++) {
40 | String[] tmp = cctv3Urls[i].split(";");
41 | list.add(new PlayVideo(tmp[0], tmp[1]));
42 | }
43 | controller.setSourceList(list);
44 |
45 | return controller;
46 | }
47 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/util/Constants.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.util;
2 |
3 | public class Constants {
4 |
5 | public static final int MSG_LIST_ALBUM = 100;
6 | public static final int MSG_SET_IMAGE = 101;
7 | public static final int MSG_CHECK_PERMISSION = 102;
8 | public static final int MSG_SHOW_TIPS = 103;
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/util/MD5.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.util;
2 |
3 | import android.text.TextUtils;
4 |
5 | import java.security.MessageDigest;
6 |
7 | public class MD5 {
8 |
9 | public static String encode(String string) {
10 | if (TextUtils.isEmpty(string)) {
11 | return "";
12 | }
13 | try {
14 | MessageDigest md5 = MessageDigest.getInstance("MD5");
15 | byte[] bytes = md5.digest(string.getBytes("utf-8"));
16 | StringBuilder result = new StringBuilder();
17 | for (byte b : bytes) {
18 | String temp = Integer.toHexString(b & 0xff);
19 | if (temp.length() == 1) {
20 | temp = "0" + temp;
21 | }
22 | result.append(temp);
23 | }
24 | return result.toString();
25 | } catch (Exception e) {
26 | e.printStackTrace();
27 | }
28 | return "";
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/util/SHA1.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.util;
2 |
3 | import java.security.MessageDigest;
4 |
5 | public class SHA1 {
6 | private static final char[] HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
7 |
8 | private static String getFormattedText(byte[] bytes) {
9 | int len = bytes.length;
10 | StringBuilder buf = new StringBuilder(len * 2);
11 | // 把密文转换成十六进制的字符串形式
12 | for (int j = 0; j < len; j++) {
13 | buf.append(HEX[(bytes[j] >> 4) & 0x0f]);
14 | buf.append(HEX[bytes[j] & 0x0f]);
15 | }
16 | return buf.toString();
17 | }
18 |
19 | public static String encode(String str) {
20 | if (str == null) {
21 | return null;
22 | }
23 | try {
24 | MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
25 | messageDigest.update(str.getBytes());
26 | return getFormattedText(messageDigest.digest());
27 | } catch (Exception e) {
28 | throw new RuntimeException(e);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/util/SLog.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.util;
2 |
3 | import android.util.Log;
4 |
5 | import java.io.File;
6 |
7 | /**
8 | * SHUIYES LOG
9 | */
10 | public class SLog {
11 |
12 | private static final boolean DEBUGE = new File("/sdcard/.shuiyes/debug").exists();
13 | private static final boolean DEBUGD = false;
14 | private static final String TAG = "SHUIYES";
15 |
16 | public static void e(String tag, String text) {
17 | if (DEBUGE) {
18 | Log.e(tag, text);
19 | }
20 | }
21 |
22 | public static void e(Throwable e) {
23 | // Log.e(TAG, e.getLocalizedMessage());
24 | // StackTraceElement[] stes = e.getStackTrace();
25 | // for(StackTraceElement ste: stes){
26 | // Log.e(TAG, ste.toString());
27 | // }
28 | e(TAG, Log.getStackTraceString(e));
29 | }
30 |
31 | public static void e(String text, Throwable e) {
32 | e(TAG, text + "\n" + Log.getStackTraceString(e));
33 | }
34 |
35 | public static void d(String tag, String text) {
36 | if (DEBUGD) {
37 | Log.d(tag, text);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/util/ThreadPoolUtil.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.util;
2 |
3 | import java.util.concurrent.ArrayBlockingQueue;
4 | import java.util.concurrent.BlockingQueue;
5 | import java.util.concurrent.RejectedExecutionHandler;
6 | import java.util.concurrent.ThreadFactory;
7 | import java.util.concurrent.ThreadPoolExecutor;
8 | import java.util.concurrent.TimeUnit;
9 | import java.util.concurrent.atomic.AtomicInteger;
10 |
11 | /**
12 | * 线程池辅助类,用来管理整个程序的下载线程
13 | */
14 | public class ThreadPoolUtil {
15 |
16 | private ThreadPoolUtil() {
17 | }
18 |
19 | /**
20 | * 线程池核心线程数
21 | */
22 | private static int CORE_POOL_SIZE = 5;
23 | /**
24 | * 线程池最大线程数
25 | */
26 | private static int MAX_POOL_SIZE = 200;
27 | /**
28 | * 额外线程空状态生存时间
29 | */
30 | private static int KEEP_ALIVE_TIME = 5000;
31 | // 阻塞队列。当核心线程都被占用,且阻塞队列已满的情况下,才会开启额外线程
32 | private static BlockingQueue workQueue = new ArrayBlockingQueue(10);
33 |
34 | // 线程工厂
35 | private static ThreadFactory threadFactory = new ThreadFactory() {
36 |
37 | private final AtomicInteger integer = new AtomicInteger();
38 |
39 | @Override
40 | public Thread newThread(Runnable r) {
41 | return new Thread(r, "myThreadPool thread:" + integer.getAndIncrement());
42 | }
43 |
44 | };
45 |
46 | private static RejectedExecutionHandler handler = new RejectedExecutionHandler() {
47 |
48 | @Override
49 | public void rejectedExecution(Runnable arg0, ThreadPoolExecutor arg1) {
50 |
51 | }
52 |
53 | };
54 |
55 | // 线程池
56 | private static ThreadPoolExecutor threadPool;
57 |
58 | static {
59 | threadPool = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, workQueue, threadFactory, handler);
60 | }
61 |
62 | /**
63 | * 从线程池中抽取线程,执行指定的Runnable对象
64 | *
65 | * @param runnable
66 | */
67 | public static void execute(Runnable runnable) {
68 | threadPool.execute(runnable);
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/widget/DLVideoView.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.widget;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.VideoView;
6 |
7 | public class DLVideoView extends VideoView {
8 |
9 | public DLVideoView(Context context, AttributeSet attrs) {
10 | super(context, attrs);
11 | }
12 |
13 | @Override
14 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
15 |
16 | int dlWidth = getDefaultSize(0, widthMeasureSpec);
17 | int dlHeight = getDefaultSize(0, heightMeasureSpec);
18 | setMeasuredDimension(dlWidth, dlHeight);
19 |
20 | // super.onMeasure(widthMeasureSpec, heightMeasureSpec);
21 | //
22 | // int width = getMeasuredWidth();
23 | // int height = getMeasuredHeight();
24 |
25 | // android.util.Log.e("SHUIYES", "DLVideoView " + width + "x" + height + " -> " + dlWidth + "x" + dlHeight);
26 | }
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/widget/MarqueeTextView.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.widget;
2 |
3 | import android.content.Context;
4 | import android.graphics.Rect;
5 | import android.util.AttributeSet;
6 | import android.widget.TextView;
7 |
8 | public class MarqueeTextView extends TextView {
9 |
10 | public MarqueeTextView(Context context) {
11 | super(context);
12 | }
13 |
14 | public MarqueeTextView(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | @Override
23 | public boolean isFocused() {
24 | return true;
25 | }
26 |
27 | @Override
28 | protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
29 | if (focused) {
30 | super.onFocusChanged(focused, direction, previouslyFocusedRect);
31 | }
32 | }
33 |
34 | @Override
35 | public void onWindowFocusChanged(boolean hasWindowFocus) {
36 |
37 | }
38 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/widget/MiscView.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.widget;
2 |
3 | import android.content.Context;
4 | import android.view.Gravity;
5 |
6 | import com.shuiyes.video.R;
7 | import com.shuiyes.video.bean.PlayVideo;
8 | import com.zhy.view.flowlayout.TagView;
9 |
10 | public class MiscView extends TagView {
11 |
12 | public static final int WH = 100;
13 |
14 | public MiscView(Context context) {
15 | super(context);
16 |
17 | this.setBackgroundResource(R.drawable.btn_rect);
18 | this.setGravity(Gravity.CENTER);
19 | this.setPadding(0, 0, 0, 0);
20 | this.setTextSize(25);
21 | }
22 |
23 | private PlayVideo playVideo;
24 |
25 | public MiscView(Context context, PlayVideo video) {
26 | this(context);
27 |
28 | this.playVideo = video;
29 | this.setText(video.getText());
30 | }
31 |
32 | public PlayVideo getPlayVideo() {
33 | return playVideo;
34 | }
35 |
36 | public int measureWidth() {
37 | int measureWidth = Math.round(getPaint().measureText(getText().toString())) + 40;
38 | return measureWidth > WH ? measureWidth : WH;
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/shuiyes/video/widget/VideoController.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.widget;
2 |
3 | import android.content.Context;
4 | import android.os.Build;
5 | import android.util.AttributeSet;
6 | import android.util.Log;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.FrameLayout;
11 | import android.widget.MediaController;
12 |
13 | import com.shuiyes.video.R;
14 |
15 | import java.lang.reflect.Method;
16 |
17 | public class VideoController extends MediaController {
18 |
19 | private final String TAG = this.getClass().getSimpleName();
20 |
21 | public VideoController(Context context, AttributeSet attrs) {
22 | super(context, attrs);
23 | }
24 |
25 | public VideoController(Context context, boolean useFastForward) {
26 | super(context, useFastForward);
27 | }
28 |
29 | public VideoController(Context context) {
30 | super(context);
31 | }
32 |
33 | @Override
34 | public void setAnchorView(View view) {
35 | super.setAnchorView(view);
36 |
37 | Log.e(TAG, " =========================== Build.VERSION.SDK_INT=" + Build.VERSION.SDK_INT);
38 | if (Build.VERSION.SDK_INT == 19) {
39 | FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(
40 | ViewGroup.LayoutParams.MATCH_PARENT,
41 | ViewGroup.LayoutParams.MATCH_PARENT
42 | );
43 |
44 | removeAllViews();
45 | LayoutInflater inflate = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
46 | View v = inflate.inflate(R.layout.media_controller, null);
47 |
48 | try {
49 | Method m_initControllerView = MediaController.class.getDeclaredMethod("initControllerView", View.class);
50 | m_initControllerView.setAccessible(true);
51 | m_initControllerView.invoke(this, v);
52 | } catch (Exception e) {
53 | e.printStackTrace();
54 | }
55 |
56 | addView(v, frameParams);
57 | } else if (Build.VERSION.SDK_INT == 26) {
58 |
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/bg_movie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/bg_movie.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo_src.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo_src.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo_tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo_tv.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo_tv1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo_tv1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo_tv2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo_tv2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/logo_vd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-hdpi/logo_vd.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/rect_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/rect_orange.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/rect_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/ripple_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
20 |
21 |
23 |
25 |
27 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/youku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/app/src/main/res/drawable-xhdpi/youku.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_oval.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_rect.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_rect_transparent.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_select_album.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/oval_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
11 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/oval_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
11 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/oval_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
11 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_blue_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_grey.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_transparent.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rect_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
11 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
20 |
21 |
23 |
25 |
27 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_progress_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 |
14 |
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/thumb_red_shape_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
18 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_huyalist.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
19 |
20 |
25 |
26 |
30 |
31 |
32 |
33 |
37 |
38 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_player_tvlive.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
10 |
11 |
22 |
23 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_search.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
21 |
22 |
34 |
35 |
36 |
43 |
44 |
50 |
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tvlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
17 |
18 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tvlive.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
23 |
24 |
29 |
30 |
35 |
36 |
37 |
38 |
44 |
45 |
48 |
49 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_vip.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
10 |
11 |
17 |
18 |
26 |
27 |
37 |
38 |
47 |
48 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_welcome.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/full_screen_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 36sp
5 | 20sp
6 | 20dp
7 | 10dp
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hdpi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频-hdpi
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-mdpi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频-mdpi
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 26sp
4 | 15sp
5 | 10dp
6 | 5dp
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xhdpi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频-xhdpi
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 20sp
5 | 12sp
6 | 2dp
7 | 1dp
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxhdpi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频-xxhdpi
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-xxxhdpi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频-xxxhdpi
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - "0501"
6 | - "0502"
7 | - "0503"
8 | - "0504"
9 | - "0505"
10 | - "0507"
11 | - "0508"
12 | - "0510"
13 | - "0511"
14 | - "0512"
15 | - "0513"
16 | - "0514"
17 | - "0515"
18 | - "0516"
19 | - "0517"
20 | - "0518"
21 | - "0519"
22 | - "0521"
23 | - "0522"
24 | - "0523"
25 | - "0524"
26 | - "0525"
27 | - "0526"
28 | - "0528"
29 | - "0529"
30 | - "0530"
31 | - "0531"
32 | - "0532"
33 | - "0533"
34 | - "0534"
35 | - "0535"
36 | - "0536"
37 | - "0537"
38 | - "0538"
39 | - "0539"
40 | - "0540"
41 | - "0590"
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 | #66000000
8 | #ddd
9 |
10 | #01000000
11 |
12 | #00FFFFFF
13 | #00FFFFFF
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 20sp
4 | 12sp
5 | 2dp
6 | 1dp
7 |
8 | 30sp
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 水也视频
5 | 水也影视
6 | 水也电视
7 | 水也视频-nodpi
8 | 北邮IVI测试源
9 | 苏州移动源
10 |
11 |
12 | ODg5MjZBOUZGN0U4NDMxM0E0MzZFQTQzNEE0RkY3QTU=
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
14 |
15 |
21 |
22 |
30 |
31 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | maven {
6 | url 'http://maven.aliyun.com/nexus/content/groups/public/'
7 | }
8 | mavenLocal()
9 | mavenCentral()
10 | jcenter()
11 |
12 | google()
13 | }
14 |
15 | dependencies {
16 | classpath 'com.android.tools.build:gradle:3.3.1'
17 | classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
18 |
19 | // NOTE: Do not place your application dependencies here; they belong
20 | // in the individual module build.gradle files
21 | }
22 | }
23 |
24 | allprojects {
25 | repositories {
26 | jcenter()
27 | google()
28 | maven { url 'https://jitpack.io' }
29 | }
30 | }
31 |
32 | task clean(type: Delete) {
33 | delete rootProject.buildDir
34 | }
35 |
36 | ext {
37 | minSdkVersion = 18
38 | // 升级版本会出现 7.0 FileUriExposedException
39 | targetSdkVersion = 23
40 | compileSdkVersion = 28
41 | buildToolsVersion = '28.0.3'
42 | applicationId = 'com.shuiyes.video'
43 | }
44 |
45 | task javadoc(type: Javadoc) {
46 | options.encoding = "utf-8"
47 | }
--------------------------------------------------------------------------------
/common/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/common/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | }
10 | buildTypes {
11 | release {
12 | minifyEnabled false
13 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
14 | }
15 | }
16 | }
17 |
18 | dependencies {
19 | implementation 'com.android.support:support-v4:26.1.0'
20 | implementation 'com.android.support:appcompat-v7:26.1.0'
21 | }
--------------------------------------------------------------------------------
/common/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/common/src/main/java/com/shuiyes/video/os/ServiceManager.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.os;
2 |
3 | import android.os.IBinder;
4 |
5 | import java.lang.reflect.Method;
6 |
7 | public class ServiceManager {
8 |
9 | public static IBinder getService(String name) {
10 | try {
11 | Class clz = Class.forName("android.os.ServiceManager");
12 | Method getService = clz.getMethod("getService", String.class);
13 | IBinder binder = (IBinder) getService.invoke(null, name);
14 | return binder;
15 | } catch (Exception e) {
16 | e.printStackTrace();
17 | }
18 |
19 | return null;
20 | }
21 |
22 | public static void addService(String name, IBinder service) {
23 | try {
24 | Class clz = Class.forName("android.os.ServiceManager");
25 | Method addService = clz.getMethod("addService", String.class, IBinder.class);
26 | addService.invoke(null, name, service);
27 | } catch (Exception e) {
28 | e.printStackTrace();
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/common/src/main/java/com/shuiyes/video/os/WindowManagerPolicyConstants.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.os;
2 |
3 | // cp from @hide android.view.WindowManagerPolicyConstants
4 | public interface WindowManagerPolicyConstants {
5 |
6 | // Navigation bar position values
7 | int NAV_BAR_LEFT = 1 << 0;
8 | int NAV_BAR_RIGHT = 1 << 1;
9 | int NAV_BAR_BOTTOM = 1 << 2;
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/common/src/main/java/com/shuiyes/video/view/AutoGestureListener.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.view;
2 |
3 | import android.content.Context;
4 | import android.os.Handler;
5 | import android.view.GestureDetector;
6 | import android.view.MotionEvent;
7 |
8 | import com.shuiyes.video.util.WindowUtil;
9 |
10 | public class AutoGestureListener extends GestureDetector.SimpleOnGestureListener {
11 |
12 | private Context context;
13 | public AutoGestureListener(Context context){
14 | this.context = context;
15 | }
16 |
17 | @Override
18 | public boolean onDown(MotionEvent e) {
19 | if (!gestureEnabled) return super.onDown(e);
20 | return true;
21 | }
22 |
23 | @Override
24 | public boolean onSingleTapConfirmed(MotionEvent e) {
25 | if (mShowing) {
26 | hide();
27 | } else {
28 | show();
29 | }
30 | return true;
31 | }
32 |
33 | @Override
34 | public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
35 | if (!gestureEnabled) return super.onScroll(e1, e2, distanceX, distanceY);
36 | return true;
37 | }
38 |
39 | @Override
40 | public boolean onDoubleTap(MotionEvent e) {
41 | return true;
42 | }
43 |
44 | //控制器是否处于显示状态
45 | protected boolean mShowing, gestureEnabled;
46 | protected int sDefaultTimeout = 3000;
47 | private Handler mHandler = new Handler();
48 |
49 | public void hide() {
50 | if (mShowing) {
51 | mShowing = false;
52 | WindowUtil.hideStatusBar(context);
53 | WindowUtil.hideNavKey(context);
54 | }
55 | }
56 |
57 | public void show() {
58 | show(sDefaultTimeout);
59 | }
60 |
61 | private void show(int timeout) {
62 | if (!mShowing) {
63 | mShowing = true;
64 | WindowUtil.showStatusBar(context);
65 | WindowUtil.showNavKey(context);
66 |
67 | mHandler.removeCallbacks(mFadeOut);
68 | if (timeout != 0) {
69 | mHandler.postDelayed(mFadeOut, timeout);
70 | }
71 | }
72 | }
73 |
74 | protected final Runnable mFadeOut = new Runnable() {
75 | @Override
76 | public void run() {
77 | hide();
78 | }
79 | };
80 | }
81 |
--------------------------------------------------------------------------------
/common/src/main/java/com/shuiyes/video/widget/Tips.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.widget;
2 |
3 | import android.content.Context;
4 | import android.view.Gravity;
5 | import android.view.LayoutInflater;
6 | import android.widget.Toast;
7 |
8 | import com.shuiyes.common.R;
9 |
10 | import java.util.Arrays;
11 |
12 | public class Tips {
13 |
14 | /**
15 | * Toast align windows top
16 | *
17 | * @param context
18 | * @return
19 | */
20 | public static Toast createToast(Context context) {
21 | Toast toast = new Toast(context);
22 | toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
23 | toast.setView(LayoutInflater.from(context).inflate(R.layout.transient_notification, null));
24 | return toast;
25 | }
26 |
27 | public static void show(Context context, CharSequence text) {
28 | show(context, text, 1);
29 | }
30 |
31 | private static Toast mToast;
32 |
33 | public static void show(Context context, CharSequence text, int duration) {
34 | if (mToast != null) {
35 | mToast.cancel();
36 | mToast = null;
37 | }
38 | if (mToast == null) {
39 | mToast = createToast(context);
40 | }
41 | mToast.setDuration(duration);
42 | mToast.setText(text);
43 | mToast.show();
44 | }
45 |
46 | public static void show(Context context, String[] permissions) {
47 | if (mToast == null) {
48 | mToast = createToast(context);
49 | }
50 | mToast.setDuration(Toast.LENGTH_SHORT);
51 | mToast.setText(Arrays.toString(permissions));
52 | mToast.show();
53 | }
54 |
55 | public static void show(Context context, int resid, int duration) {
56 | if (mToast == null) {
57 | mToast = createToast(context);
58 | }
59 | mToast.setDuration(duration);
60 | mToast.setText(resid);
61 | mToast.show();
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/common/src/main/res/layout/transient_notification.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
21 |
26 |
27 |
38 |
39 |
--------------------------------------------------------------------------------
/exoplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/exoplayer/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | }
10 | }
11 |
12 |
13 | dependencies {
14 | implementation 'com.google.android.exoplayer:exoplayer:2.9.3'
15 | implementation project(':tvbus')
16 | }
--------------------------------------------------------------------------------
/exoplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/exoplayer/src/main/res/layout/activity_player_exo.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/exoplayer/src/main/res/layout/activity_player_exo_tvbus.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
10 |
11 |
15 |
16 |
27 |
28 |
38 |
39 |
40 |
41 |
49 |
50 |
--------------------------------------------------------------------------------
/exoplayer/src/main/res/layout/activity_player_exo_tvlive.xml:
--------------------------------------------------------------------------------
1 |
15 |
21 |
22 |
26 |
27 |
32 |
33 |
41 |
42 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/exoplayer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Unrecognized stereo mode
5 | Permission to access storage was denied
6 | Unexpected intent action: %1$s
7 | Cleartext traffic not permitted
8 | Protected content not supported on API levels below 18
9 | Unrecognized ABR algorithm
10 | This device does not support the required DRM scheme
11 | An unknown DRM error occurred
12 | Playing sample without ads, as the IMA extension was not loaded
13 | Media includes video tracks, but none are playable by this device
14 | Media includes audio tracks, but none are playable by this device
15 | This device does not provide a decoder for %1$s
16 | This device does not provide a secure decoder for %1$s
17 | Unable to query device decoders
18 | Unable to instantiate decoder %1$s
19 | Playback failed
20 |
21 |
22 |
--------------------------------------------------------------------------------
/exoplayer/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/flowlayout/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/flowlayout/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | }
10 |
11 | buildTypes {
12 | release {
13 | minifyEnabled false
14 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/flowlayout/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/flowlayout/src/main/java/com/shuiye/video/util/ResourceDef.java:
--------------------------------------------------------------------------------
1 | package com.shuiye.video.util;
2 |
3 | public interface ResourceDef {
4 |
5 | int ID_TAG_BTN = 10000;
6 | int ID_SEARCH_VIDEO = 20000;
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/flowlayout/src/main/java/com/shuiye/video/util/ResourceUtils.java:
--------------------------------------------------------------------------------
1 | package com.shuiye.video.util;
2 |
3 | import android.content.Context;
4 |
5 | public class ResourceUtils {
6 |
7 | public static int flowBtnMargin(Context context) {
8 | return ResourceUtils.dip2px(context, 10);
9 | }
10 |
11 | public static int flowBtnPadding(Context context) {
12 | return ResourceUtils.dip2px(context, 10);
13 | }
14 |
15 | public static int flowBtnWH(Context context) {
16 | return ResourceUtils.dip2px(context, 60);
17 | }
18 |
19 | public static int dip2px(Context context, float dpValue) {
20 | final float scale = context.getResources().getDisplayMetrics().density;
21 | return (int) (dpValue * scale + 0.5f);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/flowlayout/src/main/java/com/zhy/view/flowlayout/TagAdapter.java:
--------------------------------------------------------------------------------
1 | package com.zhy.view.flowlayout;
2 |
3 | import java.util.List;
4 |
5 | public abstract class TagAdapter {
6 | private List mTagDatas;
7 | private OnDataChangedListener mOnDataChangedListener;
8 |
9 | public TagAdapter(List datas) {
10 | mTagDatas = datas;
11 | }
12 |
13 | interface OnDataChangedListener {
14 | void onChanged();
15 | }
16 |
17 | void setOnDataChangedListener(OnDataChangedListener listener) {
18 | mOnDataChangedListener = listener;
19 | }
20 |
21 | public int getCount() {
22 | return mTagDatas == null ? 0 : mTagDatas.size();
23 | }
24 |
25 | public void notifyDataChanged() {
26 | if (mOnDataChangedListener != null) {
27 | mOnDataChangedListener.onChanged();
28 | }
29 | }
30 |
31 | public T getItem(int position) {
32 | return mTagDatas.get(position);
33 | }
34 |
35 | public abstract TagView getView(FlowLayout parent, int position, T t);
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/flowlayout/src/main/java/com/zhy/view/flowlayout/TagFlowLayout.java:
--------------------------------------------------------------------------------
1 | package com.zhy.view.flowlayout;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import com.shuiye.video.util.ResourceDef;
7 | import com.shuiye.video.util.ResourceUtils;
8 |
9 | public class TagFlowLayout extends FlowLayout
10 | implements TagAdapter.OnDataChangedListener {
11 |
12 | private TagAdapter mTagAdapter;
13 |
14 | public TagFlowLayout(Context context, AttributeSet attrs, int defStyle) {
15 | super(context, attrs, defStyle);
16 | }
17 |
18 | public TagFlowLayout(Context context, AttributeSet attrs) {
19 | this(context, attrs, 0);
20 | }
21 |
22 | public TagFlowLayout(Context context) {
23 | this(context, null);
24 | }
25 |
26 | public void setAdapter(TagAdapter adapter) {
27 | mTagAdapter = adapter;
28 | mTagAdapter.setOnDataChangedListener(this);
29 | updateAdapter();
30 | }
31 |
32 | private void updateAdapter() {
33 | removeAllViews();
34 | for (int i = 0; i < mTagAdapter.getCount(); i++) {
35 | TagView tagView = mTagAdapter.getView(this, i, mTagAdapter.getItem(i));
36 | tagView.setFocusable(true);
37 | tagView.setId(ResourceDef.ID_TAG_BTN + i);
38 |
39 | int width = tagView.getSetWidth();
40 | int height = tagView.getSetHeight();
41 | if (width == 0) {
42 | width = LayoutParams.WRAP_CONTENT;
43 | }
44 | if (height == 0) {
45 | height = LayoutParams.WRAP_CONTENT;
46 | }
47 |
48 | int margin = ResourceUtils.flowBtnMargin(getContext());
49 | MarginLayoutParams lp = new MarginLayoutParams(width, height);
50 | lp.setMargins(0, 0, margin, margin);
51 | tagView.setLayoutParams(lp);
52 |
53 | addView(tagView);
54 | }
55 | }
56 |
57 | @Override
58 | public void onChanged() {
59 | updateAdapter();
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/flowlayout/src/main/java/com/zhy/view/flowlayout/TagView.java:
--------------------------------------------------------------------------------
1 | package com.zhy.view.flowlayout;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.Button;
6 | import android.widget.TextView;
7 |
8 | public class TagView extends TextView {
9 |
10 | private int width;
11 | private int height;
12 |
13 | public int getSetWidth() {
14 | return width;
15 | }
16 |
17 | public void setSize(int width, int height) {
18 | this.width = width;
19 | this.height = height;
20 | }
21 |
22 | public int getSetHeight() {
23 | return height;
24 | }
25 |
26 | public TagView(Context context) {
27 | super(context);
28 | }
29 |
30 | public TagView(Context context, AttributeSet attrs) {
31 | super(context, attrs);
32 | }
33 |
34 | public TagView(Context context, AttributeSet attrs, int defStyleAttr) {
35 | super(context, attrs, defStyleAttr);
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/flowlayout/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/flowlayout/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | flowlayout
3 |
4 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Wed May 16 17:43:41 CST 2018
16 | org.gradle.jvmargs=-Xmx1536m
17 | ver.code=1
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jan 25 15:35:10 CST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':common', ':flowlayout', ':yinyangplayer', ':tvbus', ':exoplayer', ':sourcetest'
--------------------------------------------------------------------------------
/sourcetest/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/sourcetest/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | }
10 | }
11 |
12 | dependencies {
13 | }
--------------------------------------------------------------------------------
/sourcetest/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/sourcetest/src/main/assets/test.list:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/sourcetest/src/main/assets/test.list
--------------------------------------------------------------------------------
/sourcetest/src/main/java/com/shuiyes/test/Classify.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.test;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.BufferedWriter;
5 | import java.io.FileInputStream;
6 | import java.io.FileOutputStream;
7 | import java.io.InputStreamReader;
8 | import java.io.OutputStreamWriter;
9 | import java.text.SimpleDateFormat;
10 | import java.util.Date;
11 |
12 | public class Classify {
13 |
14 | /**
15 | * @param args
16 | */
17 | public static void main(String[] args) {
18 | // TODO Auto-generated method stub
19 |
20 | new Thread(new Runnable() {
21 |
22 | @Override
23 | public void run() {
24 | try {
25 | a();
26 | } catch (Exception e) {
27 | e.printStackTrace();
28 | }
29 | }
30 | }).start();
31 |
32 | }
33 |
34 | static void a() throws Exception {
35 | String filename = "test.list";
36 | FileInputStream in = new FileInputStream(filename);
37 | BufferedReader br = new BufferedReader(new InputStreamReader(in));
38 |
39 | SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
40 | String out = sdf.format(new Date()) + ".list";
41 | String error = sdf.format(new Date()) + "_e.list";
42 | System.out.println(out);
43 | BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(out)));
44 | BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(error)));
45 |
46 | if (filename.endsWith(".list")) {
47 |
48 | String text = null;
49 | while ((text = br.readLine()) != null) {
50 | String split = ",";
51 | if (text.contains(split)) {
52 |
53 | // 分类
54 | if(text.contains("111.40.205")){
55 | bw.write(text + "\n");
56 | bw.flush();
57 | }else{
58 | bw2.write(text + "\n");
59 | bw2.flush();
60 | }
61 | }else{
62 | bw.write(text + "\n");
63 | bw.flush();
64 |
65 | bw2.write(text + "\n");
66 | bw2.flush();
67 | }
68 | }
69 | }
70 |
71 | br.close();
72 | bw.close();
73 | bw2.close();
74 |
75 | System.out.println("end");
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/sourcetest/src/main/java/com/shuiyes/test/HuyaFormater.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.test;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.BufferedWriter;
5 | import java.io.FileInputStream;
6 | import java.io.FileOutputStream;
7 | import java.io.InputStreamReader;
8 | import java.io.OutputStreamWriter;
9 | import java.text.SimpleDateFormat;
10 | import java.util.Date;
11 |
12 | public class HuyaFormater {
13 |
14 | public static void main(String[] args) {
15 | // TODO Auto-generated method stub
16 |
17 | new Thread(new Runnable() {
18 |
19 | @Override
20 | public void run() {
21 | try {
22 | a();
23 | } catch (Exception e) {
24 | e.printStackTrace();
25 | }
26 | }
27 | }).start();
28 |
29 | }
30 |
31 | static void a() throws Exception {
32 | String filename = "test.list";
33 | FileInputStream in = new FileInputStream(filename);
34 | BufferedReader br = new BufferedReader(new InputStreamReader(in));
35 |
36 | SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
37 | String out = sdf.format(new Date()) + ".list";
38 | System.out.println(out);
39 | BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(out)));
40 |
41 | if (filename.endsWith(".list")) {
42 |
43 | String text = null;
44 | while ((text = br.readLine()) != null) {
45 | String split = ",";
46 | if (text.contains(split)) {
47 | String[] tmp = text.split(split);
48 | String title = tmp[0];
49 | String url = tmp[1];
50 |
51 | if(url.contains("huya.com")){
52 | url = url.replace("http://", "https://");
53 | url = url.replace("txdirect.hls", "aldirect.hls");
54 | url = url.replace("jsdirect.hls", "aldirect.hls");
55 | url = url.replace("js.hls", "aldirect.hls");
56 | url = url.replace("tx.hls", "aldirect.hls");
57 | url = url.replace("al.hls", "aldirect.hls");
58 | url = url.replace("1_1200.m3u8", "1.m3u8");
59 | url = url.replace("1_2000.m3u8", "1.m3u8");
60 |
61 | url = url.replace("/backsrc/", "/huyalive/");
62 | url = url.replace("aldirect.hls", "aldirect.rtmp");
63 | }
64 |
65 | bw.write( title+","+url + "\n");
66 | }else{
67 | bw.write( text + "\n");
68 | bw.flush();
69 | }
70 | }
71 | }
72 |
73 | br.close();
74 | bw.close();
75 |
76 | System.out.println("end");
77 | }
78 | }
--------------------------------------------------------------------------------
/sourcetest/src/main/java/com/shuiyes/test/Log.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.test;
2 |
3 | public class Log {
4 |
5 | public static void e(String text) {
6 | System.out.println(text);
7 | }
8 |
9 | public static void e(String tag, String text) {
10 | System.out.println(tag+", "+text);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/sourcetest/src/main/java/com/shuiyes/test/Test.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.test;
2 |
3 | public class Test {
4 |
5 | public static void main(String[] args) {
6 | int[] arrayOfInt = new int[18];
7 | arrayOfInt[0] = 99;
8 | arrayOfInt[1] = 111;
9 | arrayOfInt[2] = 109;
10 | arrayOfInt[3] = 46;
11 | arrayOfInt[4] = 104;
12 | arrayOfInt[5] = 100;
13 | arrayOfInt[6] = 46;
14 | arrayOfInt[7] = 122;
15 | arrayOfInt[8] = 104;
16 | arrayOfInt[9] = 105;
17 | arrayOfInt[10] = 98;
18 | arrayOfInt[11] = 111;
19 |
20 | StringBuilder stringBuilder = new StringBuilder();
21 | for (int i = 0; i list = new ArrayList();
42 | String text = null;
43 | while ((text = br.readLine()) != null) {
44 | if (text.isEmpty()) {
45 | continue;
46 | }
47 | list.add(text);
48 | }
49 |
50 | Collections.sort(list);
51 | Iterator iterator = list.iterator();
52 | while (iterator.hasNext()) {
53 | text = iterator.next();
54 | bw.write(text + "\n");
55 | bw.flush();
56 | }
57 |
58 | br.close();
59 | bw.close();
60 |
61 | System.out.println("end");
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/tvbus/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/tvbus/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | }
10 |
11 | buildTypes {
12 | release {
13 | minifyEnabled false
14 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
15 | }
16 | }
17 | }
18 |
19 | dependencies {
20 | implementation fileTree(include: ['*.jar'], dir: 'libs')
21 | }
--------------------------------------------------------------------------------
/tvbus/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tvbus/src/main/java/com/tvbus/engine/TVListener.java:
--------------------------------------------------------------------------------
1 | package com.tvbus.engine;
2 |
3 | /**
4 | * Created by sopdev on 15/10/13.
5 | * VAN
6 | */
7 | public interface TVListener {
8 | void onInited(String result);
9 | void onStart(String result);
10 | void onPrepared(String result);
11 | void onInfo(String result);
12 | void onStop(String result);
13 | void onQuit(String result);
14 | }
15 |
--------------------------------------------------------------------------------
/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore.so
--------------------------------------------------------------------------------
/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_chaojizhibo.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_chaojizhibo.so
--------------------------------------------------------------------------------
/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_github.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_github.so
--------------------------------------------------------------------------------
/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_soplus.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/tvbus/src/main/jniLibs/armeabi-v7a/libtvcore_soplus.so
--------------------------------------------------------------------------------
/tvbus/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | tvbus
3 |
4 |
--------------------------------------------------------------------------------
/version.gradle:
--------------------------------------------------------------------------------
1 | ext.vername = "gradle.properties";
2 | ext.verprop = "ver.code";
3 |
4 | def getAndAddVersionCode() {
5 | def propsFile = rootProject.file(vername)
6 | if (propsFile.exists()) {
7 | def props = new Properties()
8 | props.load(new FileInputStream(propsFile))
9 | if (props[verprop] != null) {
10 |
11 | def code = (props[verprop]).toInteger()
12 | println("> Task :app version code is " + code)
13 |
14 | def taskNames = gradle.startParameter.taskNames
15 | if ((':app:assembleRelease' in taskNames)/* || (':app:assembleDebug' in taskNames)*/) {
16 | props[verprop] = (++code).toString()
17 | println("> Task :app version code new " + code)
18 | props.store(propsFile.newWriter(), null)
19 | }
20 |
21 | return code
22 | } else {
23 | throw new GradleException("No such property " + verprop + " in " + propsFile.toPath())
24 | }
25 | } else {
26 | throw new GradleException("No such file " + propsFile.toPath())
27 | }
28 | }
29 |
30 | def time2VersionName() {
31 | def date = new Date()
32 | def vname = "v" + date.format('yyyyMMddHHmm')
33 | return vname
34 | }
35 |
36 | def time2VersionCode() {
37 | return new Date().time.intValue()
38 | }
39 |
40 | android {
41 | defaultConfig {
42 | versionCode getAndAddVersionCode()
43 | versionName time2VersionName()
44 | }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/yinyangplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/yinyangplayer/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'com.github.dcendents.android-maven'
3 | group='com.github.DevlinChiu'
4 |
5 | android {
6 | compileSdkVersion rootProject.ext.compileSdkVersion
7 |
8 | defaultConfig {
9 | minSdkVersion rootProject.ext.minSdkVersion
10 | targetSdkVersion rootProject.ext.targetSdkVersion
11 | }
12 |
13 | sourceSets {
14 | main {
15 | jniLibs.srcDirs = ['libs']
16 | }
17 | }
18 | }
19 |
20 | dependencies {
21 | implementation "tv.danmaku.ijk.media:ijkplayer-java:0.8.8"
22 | // implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
23 |
24 | // https://github.com/danikula/AndroidVideoCache
25 | implementation 'com.danikula:videocache:2.7.0'
26 |
27 | // https://github.com/Bilibili/DanmakuFlameMaster
28 | implementation 'com.github.ctiao:DanmakuFlameMaster:0.8.3'
29 | implementation 'com.github.ctiao:ndkbitmap-armv7a:0.8.3'
30 |
31 | // for Tips
32 | implementation project(':common')
33 | implementation 'com.android.support:appcompat-v7:28.0.0'
34 | }
35 |
--------------------------------------------------------------------------------
/yinyangplayer/libs-ijk-yjzb/libijkffmpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs-ijk-yjzb/libijkffmpeg.so
--------------------------------------------------------------------------------
/yinyangplayer/libs-ijk-yjzb/libijkplayer.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs-ijk-yjzb/libijkplayer.so
--------------------------------------------------------------------------------
/yinyangplayer/libs-ijk-yjzb/libijksdl.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs-ijk-yjzb/libijksdl.so
--------------------------------------------------------------------------------
/yinyangplayer/libs/armeabi-v7a/libijkffmpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs/armeabi-v7a/libijkffmpeg.so
--------------------------------------------------------------------------------
/yinyangplayer/libs/armeabi-v7a/libijkplayer.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs/armeabi-v7a/libijkplayer.so
--------------------------------------------------------------------------------
/yinyangplayer/libs/armeabi-v7a/libijksdl.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/libs/armeabi-v7a/libijksdl.so
--------------------------------------------------------------------------------
/yinyangplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/player/VideoCacheManager.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.player;
2 |
3 | import android.content.Context;
4 |
5 | import com.danikula.videocache.HttpProxyCacheServer;
6 | import com.danikula.videocache.file.Md5FileNameGenerator;
7 | import com.devlin_n.yinyangplayer.util.StorageUtil;
8 |
9 | import java.io.File;
10 |
11 | public class VideoCacheManager {
12 |
13 | private static HttpProxyCacheServer sharedProxy;
14 |
15 | private VideoCacheManager() {
16 | }
17 |
18 | public static HttpProxyCacheServer getProxy(Context context) {
19 | return sharedProxy == null ? (sharedProxy = newProxy(context)) : sharedProxy;
20 | }
21 |
22 | private static HttpProxyCacheServer newProxy(Context context) {
23 | return new HttpProxyCacheServer.Builder(context).maxCacheSize(1024 * 1024 * 1024/*1 Gb for cache*/).build();
24 | }
25 |
26 | /**
27 | * 删除所有缓存文件
28 | *
29 | * @return 返回缓存是否删除成功
30 | */
31 | public static boolean clearAllCache(Context context) {
32 | File cacheDirectory = StorageUtil.getIndividualCacheDirectory(context);
33 | return StorageUtil.deleteFiles(cacheDirectory);
34 | }
35 |
36 | /**
37 | * 删除url对应默认缓存文件
38 | *
39 | * @return 返回缓存是否删除成功
40 | */
41 | public static boolean clearDefaultCache(Context context, String url) {
42 | Md5FileNameGenerator md5FileNameGenerator = new Md5FileNameGenerator();
43 | String name = md5FileNameGenerator.generate(url);
44 | String pathTmp = StorageUtil.getIndividualCacheDirectory(context.getApplicationContext()).getAbsolutePath() + File.separator + name + ".download";
45 | String path = StorageUtil.getIndividualCacheDirectory(context.getApplicationContext()).getAbsolutePath() + File.separator + name;
46 | return StorageUtil.deleteFile(pathTmp) && StorageUtil.deleteFile(path);
47 | }
48 | }
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/player/VideoModel.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.player;
2 |
3 | import com.devlin_n.yinyangplayer.controller.BaseVideoController;
4 |
5 | /**
6 | * Created by Devlin_n on 2017/4/11.
7 | */
8 |
9 | public class VideoModel {
10 |
11 | public String url;
12 | public String title;
13 |
14 | public VideoModel(String url, String title, BaseVideoController controller) {
15 | this.url = url;
16 | this.title = title;
17 | this.controller = controller;
18 | }
19 |
20 | public BaseVideoController controller;
21 | }
22 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/player/YinYangPlayerManager.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.player;
2 |
3 | import java.lang.ref.WeakReference;
4 |
5 | /**
6 | * 视频播放器管理器.
7 | */
8 | public class YinYangPlayerManager {
9 |
10 | private WeakReference mPlayer; //写成弱引用防止内存泄露
11 |
12 | private YinYangPlayerManager() {
13 | }
14 |
15 | private static YinYangPlayerManager sInstance;
16 |
17 | public static synchronized YinYangPlayerManager instance() {
18 | if (sInstance == null) {
19 | sInstance = new YinYangPlayerManager();
20 | }
21 | return sInstance;
22 | }
23 |
24 | public void setCurrentVideoPlayer(YinYangPlayer player) {
25 | mPlayer = new WeakReference<>(player);
26 | }
27 |
28 | public YinYangPlayer getCurrentVideoPlayer() {
29 | if (mPlayer == null) return null;
30 | return mPlayer.get();
31 | }
32 |
33 | public void releaseVideoPlayer() {
34 | if (mPlayer != null && mPlayer.get() != null) {
35 | mPlayer.get().release();
36 | mPlayer = null;
37 | }
38 | }
39 |
40 | public boolean onBackPressed() {
41 | return mPlayer != null && mPlayer.get() != null && mPlayer.get().onBackPressed();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/util/Constants.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.util;
2 |
3 | /**
4 | * 常量
5 | * Created by Devlin_n on 2017/6/15.
6 | */
7 |
8 | public class Constants {
9 |
10 | public static int SCREEN_WIDTH;
11 |
12 | public static int SCREEN_HEIGHT;
13 |
14 | public static boolean IS_START_FLOAT_WINDOW = false;
15 |
16 | // 记录是否在移动网络下播放视频
17 | public static boolean IS_PLAY_ON_MOBILE_NETWORK = true;
18 | }
19 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/util/KeyUtil.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.util;
2 |
3 | /**
4 | * Created by Devlin_n on 2017/4/14.
5 | */
6 |
7 | public class KeyUtil {
8 | public static final String URL = "url";
9 | public static final String TITLE = "title";
10 | public static final String POSITION = "position";
11 | public static final String ENABLE_CACHE = "enable_cache";
12 | public static final String IS_FM = "is_fm";
13 | }
14 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/util/L.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.util;
2 |
3 | import android.util.Log;
4 |
5 | /**
6 | * 日志类
7 | * Created by Devlin_n on 2017/6/5.
8 | */
9 |
10 | public class L {
11 |
12 | private static final String TAG = "YinYangPlayer";
13 |
14 | public static void d(String msg) {
15 | Log.d(TAG, msg);
16 | }
17 |
18 | public static void e(String msg) {
19 | Log.e(TAG, msg);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/devlin_n/yinyangplayer/widget/CenterView.java:
--------------------------------------------------------------------------------
1 | package com.devlin_n.yinyangplayer.widget;
2 |
3 | import android.content.Context;
4 | import android.view.Gravity;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.animation.Animation;
8 | import android.view.animation.AnimationUtils;
9 | import android.widget.ImageView;
10 | import android.widget.LinearLayout;
11 | import android.widget.ProgressBar;
12 | import android.widget.TextView;
13 |
14 | import com.devlin_n.yinyangplayer.R;
15 |
16 | /**
17 | * 显示亮度,音量,进度
18 | * Created by Devlin_n on 2017/4/17.
19 | */
20 |
21 | public class CenterView extends LinearLayout {
22 |
23 | private ImageView ivIcon;
24 | private TextView tvPercent;
25 | private ProgressBar proPercent;
26 |
27 | public CenterView(Context context) {
28 | super(context);
29 |
30 | init();
31 | }
32 |
33 | private void init() {
34 | setGravity(Gravity.CENTER);
35 | View view = LayoutInflater.from(getContext()).inflate(R.layout.layout_center_window, this);
36 | ivIcon = (ImageView) view.findViewById(R.id.iv_icon);
37 | tvPercent = (TextView) view.findViewById(R.id.tv_percent);
38 | proPercent = (ProgressBar) view.findViewById(R.id.pro_percent);
39 | }
40 |
41 | public void setIcon(int icon) {
42 | if (ivIcon != null) ivIcon.setImageResource(icon);
43 | }
44 |
45 | public void setTextView(String text) {
46 | if (tvPercent != null) tvPercent.setText(text);
47 | }
48 |
49 | public void setProPercent(int percent) {
50 | if (proPercent != null) proPercent.setProgress(percent);
51 | }
52 |
53 | public void setProVisibility(int visibility) {
54 | if (proPercent != null) proPercent.setVisibility(visibility);
55 | }
56 |
57 | @Override
58 | public void setVisibility(int visibility) {
59 | super.setVisibility(visibility);
60 | if (visibility != VISIBLE) {
61 | Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.anim_alpha_out);
62 | this.startAnimation(animation);
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/java/com/shuiyes/video/ui/tvlive/YinyangFM.java:
--------------------------------------------------------------------------------
1 | package com.shuiyes.video.ui.tvlive;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.android.permission.FloatWindowManager;
7 | import com.devlin_n.yinyangplayer.player.BackgroundPlayService;
8 | import com.devlin_n.yinyangplayer.util.KeyUtil;
9 |
10 | public class YinyangFM {
11 |
12 | public static void start(Context context, String url, String title) {
13 |
14 | if (FloatWindowManager.getInstance().checkPermission(context)) {
15 | /**
16 | * 启动画中画播放的后台服务
17 | */
18 | Intent intent = new Intent(context, BackgroundPlayService.class);
19 | intent.putExtra(KeyUtil.URL, url);
20 | intent.putExtra(KeyUtil.TITLE, title);
21 | intent.putExtra(KeyUtil.IS_FM, true);
22 | context.startService(intent);
23 | } else {
24 | FloatWindowManager.getInstance().applyPermission(context);
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_alpha_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_alpha_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_slide_bottom_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_slide_bottom_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_slide_top_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/anim/anim_slide_top_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/bg_nosignal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/bg_nosignal.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/fm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/fm.jpg
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_arrow_back.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_brightness.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_close.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fast_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fast_forward.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fast_rewind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fast_rewind.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fullscreen.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fullscreen_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_fullscreen_exit.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_lock_open.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_lock_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_lock_outline.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_more_vert.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_picture_in_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_picture_in_picture.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_play_arrow.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_replay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_replay.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_volume_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_volume_off.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_action_volume_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_action_volume_up.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-hdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-hdpi/ic_loading.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_arrow_back.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_brightness.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_close.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fast_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fast_forward.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fast_rewind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fast_rewind.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fullscreen.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fullscreen_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_fullscreen_exit.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_lock_open.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_lock_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_lock_outline.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_more_vert.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_picture_in_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_picture_in_picture.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_play_arrow.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_replay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_replay.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_volume_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_volume_off.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_action_volume_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_action_volume_up.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-mdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-mdpi/ic_loading.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_arrow_back.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_brightness.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_close.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fast_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fast_forward.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fast_rewind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fast_rewind.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fullscreen.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fullscreen_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_fullscreen_exit.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_lock_open.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_lock_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_lock_outline.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_more_vert.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_picture_in_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_picture_in_picture.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_play_arrow.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_replay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_replay.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_volume_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_volume_off.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_volume_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_action_volume_up.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xhdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xhdpi/ic_loading.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_arrow_back.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_brightness.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_close.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fast_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fast_forward.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fast_rewind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fast_rewind.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fullscreen.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fullscreen_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_fullscreen_exit.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_lock_open.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_lock_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_lock_outline.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_more_vert.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_picture_in_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_picture_in_picture.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_play_arrow.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_replay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_replay.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_volume_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_volume_off.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_volume_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_action_volume_up.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxhdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxhdpi/ic_loading.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_arrow_back.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_brightness.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_close.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fast_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fast_forward.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fast_rewind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fast_rewind.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fullscreen.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fullscreen_exit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_fullscreen_exit.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_lock_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_lock_open.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_lock_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_lock_outline.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_more_vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_more_vert.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_pause.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_picture_in_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_picture_in_picture.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_play_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_play_arrow.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_replay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_replay.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_volume_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_volume_off.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_volume_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_action_volume_up.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/movin2008/ShuiyeVideo/f7dc0ec72f5dfb7cd66e53594033fff65c68bf98/yinyangplayer/src/main/res/drawable-xxxhdpi/ic_loading.png
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/progress_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/seekbar_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/seekbar_thumb_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/seekbar_thumb_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/selector_full_screen_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/selector_lock_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/selector_play_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_ad_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_back_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_float_window_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_play_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_standard_controller_top_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_stardard_controller_bottom_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/drawable/shape_status_view_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/layout/activity_tvplay_yinyang.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/layout/layout_ad_controller.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
15 |
16 |
23 |
24 |
25 |
30 |
31 |
35 |
36 |
40 |
41 |
45 |
46 |
50 |
51 |
55 |
56 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/layout/layout_center_window.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
24 |
25 |
32 |
33 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/layout/layout_float_controller.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
16 |
17 |
24 |
25 |
33 |
34 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/layout/layout_status_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
21 |
22 |
32 |
33 |
34 |
35 |
36 |
44 |
45 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/menu/controller_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/menu/main_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 | -
9 |
10 |
11 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #39C5BB
4 | #9939C5BB
5 | #64000000
6 |
7 | #00000000
8 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 40dp
4 | 10dp
5 | 16sp
6 | 10dp
7 | 14dp
8 | 14dp
9 | 1dp
10 | 50dp
11 | 14sp
12 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | magic_player
3 | 当前无权限使用悬浮窗,请授权!
4 | 出了点小问题,稍后重试
5 | 重 试
6 | 继续播放
7 | 您正在使用移动网络,继续播放将消耗流量
8 | 请先解锁屏幕!
9 | 已解锁
10 | 已锁定
11 | 重新播放
12 |
13 |
--------------------------------------------------------------------------------
/yinyangplayer/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
21 |
22 |
28 |
29 |
33 |
34 |
--------------------------------------------------------------------------------