From fc77a00a664c10931a894c8cfe87e1cc09404d70 Mon Sep 17 00:00:00 2001 From: garyxgwang Date: Fri, 6 Aug 2021 16:23:56 +0800 Subject: [PATCH] Fix bug, update sdk. --- Demo/app/build.gradle | 18 +- Demo/app/src/main/AndroidManifest.xml | 26 +- Demo/app/src/main/assets/UserProtocol.html | 57 +- Demo/app/src/main/assets/UserProtocol_EN.html | 69 +- .../tencent/liteav/demo/DemoApplication.java | 36 +- .../com/tencent/liteav/demo/MainActivity.java | 14 +- .../demo/common/widget/AvatarConstant.java | 2 +- .../BaseExpandableRecyclerViewAdapter.java | 21 +- .../expandableadapter/ViewProducer.java | 3 +- .../res/drawable/app_bg_avatar_select.xml | 7 +- .../src/main/res/drawable/app_bg_dialog.xml | 4 +- .../res/drawable/app_bg_my_info_content.xml | 4 +- .../app/src/main/res/drawable/ic_launcher.png | Bin 7061 -> 2616 bytes .../app/src/main/res/layout/activity_main.xml | 36 +- .../main/res/layout/activity_trtc_main.xml | 5 +- .../main/res/layout/app_activity_about.xml | 12 +- .../main/res/layout/app_activity_my_info.xml | 97 ++- .../main/res/layout/app_activity_webview.xml | 2 +- .../app_view_modify_nickname_dialog.xml | 2 +- .../src/main/res/layout/module_entry_item.xml | 1 - .../res/layout/module_trtc_entry_item.xml | 1 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3880 -> 2616 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 3880 -> 1531 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3880 -> 2616 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6083 -> 5405 bytes Demo/app/src/main/res/values-en/strings.xml | 10 +- .../src/main/res/values-zh-rHK/strings.xml | 2 +- .../src/main/res/values-zh-rTW/strings.xml | 2 +- Demo/app/src/main/res/values-zh/strings.xml | 25 +- Demo/app/src/main/res/values/strings.xml | 34 +- Demo/app/src/main/res/values/styles.xml | 6 +- Demo/build.gradle | 9 +- Demo/common/build.gradle | 27 + Demo/common/proguard-rules.pro | 21 + Demo/common/src/main/AndroidManifest.xml | 4 + .../liteav/demo/common/AppRuntime.java | 40 + .../common/src/main/res/values-en/strings.xml | 2 + Demo/common/src/main/res/values/colors.xml | 2 + Demo/common/src/main/res/values/strings.xml | 2 + Demo/common/src/main/res/values/styles.xml | 2 + Demo/gradle.properties | 2 - Demo/settings.gradle | 1 + Demo/superplayerdemo/build.gradle | 3 + .../src/main/AndroidManifest.xml | 2 + .../demo/player/demo/QRCodeScanActivity.java | 6 +- .../demo/player/demo/SuperPlayerActivity.java | 94 +-- .../demo/player/demo/VodPlayerActivity.java | 720 ++++++++++++++++++ .../expand/model/SuperPlayerConstants.java | 34 +- .../player/expand/model/VideoDataMgr.java | 10 +- .../player/expand/model/entity/VideoInfo.java | 8 +- .../expand/model/entity/VideoModel.java | 2 +- .../model/utils/SuperVodListLoader.java | 18 +- .../expand/ui/TCVodPlayerListAdapter.java | 14 +- .../player/expand/webdata/WebDataInfo.java | 19 +- .../player/expand/webdata/WebDataParser.java | 7 +- .../liteav/demo/player/view/BitrateView.java | 129 ++++ .../res/drawable-xhdpi/superplayer_add.png | Bin 0 -> 3139 bytes .../superplayer_adjust_mode.png | Bin 0 -> 2953 bytes .../res/drawable-xhdpi/superplayer_cache.png | Bin 0 -> 3378 bytes .../superplayer_close_press.png | Bin 0 -> 3250 bytes .../drawable-xhdpi/superplayer_fill_mode.png | Bin 0 -> 3190 bytes .../drawable-xhdpi/superplayer_input_box.png | Bin 0 -> 1234 bytes .../drawable-xhdpi/superplayer_landscape.png | Bin 0 -> 3274 bytes .../drawable-xhdpi/superplayer_log_hidden.png | Bin 0 -> 3128 bytes .../drawable-xhdpi/superplayer_log_show.png | Bin 0 -> 2902 bytes .../superplayer_mic_disable.png | Bin 0 -> 8275 bytes .../drawable-xhdpi/superplayer_mic_enable.png | Bin 0 -> 7778 bytes .../drawable-xhdpi/superplayer_play_pause.png | Bin 0 -> 3175 bytes .../drawable-xhdpi/superplayer_play_start.png | Bin 0 -> 3242 bytes .../drawable-xhdpi/superplayer_portrait.png | Bin 0 -> 3274 bytes .../drawable-xhdpi/superplayer_qr_code.png | Bin 0 -> 2118 bytes .../res/drawable-xhdpi/superplayer_quick.png | Bin 0 -> 3803 bytes ...ng => superplayer_default_cover_thumb.png} | Bin .../superplayer_seekbar_icon.png | Bin 0 -> 1000 bytes .../drawable/superplayer_btn_back_gray.png | Bin 0 -> 1407 bytes .../res/drawable/superplayer_input_bg.xml | 8 + .../res/layout/superplayer_activity_vod.xml | 282 +++++++ .../superplayer_sample_bitrate_view.xml | 8 +- .../main/res/layout/superplayer_title_bar.xml | 42 + .../src/main/res/values/strings.xml | 8 + .../demo/superplayer/SuperPlayerCode.java | 12 +- .../superplayer/SuperPlayerGlobalConfig.java | 2 +- .../demo/superplayer/SuperPlayerView.java | 37 +- .../demo/superplayer/model/SuperPlayer.java | 7 +- .../superplayer/model/SuperPlayerImpl.java | 76 +- .../model/SuperPlayerObserver.java | 40 +- .../model/entity/PlayInfoStream.java | 12 +- .../model/entity/ResolutionName.java | 4 +- .../model/entity/SuperPlayerVideoIdV2.java | 3 +- .../model/entity/VideoClassification.java | 6 +- .../model/entity/VideoQuality.java | 4 +- .../demo/superplayer/model/net/LogReport.java | 31 +- .../model/protocol/IPlayInfoParser.java | 1 + .../model/protocol/IPlayInfoProtocol.java | 1 + .../protocol/IPlayInfoRequestCallback.java | 2 +- .../model/protocol/PlayInfoConstant.java | 6 +- .../model/protocol/PlayInfoParams.java | 5 +- .../model/protocol/PlayInfoParserV2.java | 32 +- .../model/protocol/PlayInfoParserV4.java | 4 +- .../model/protocol/PlayInfoProtocolV2.java | 12 +- .../model/protocol/PlayInfoProtocolV4.java | 16 +- .../superplayer/model/utils/NetWatcher.java | 30 +- .../model/utils/VideoGestureDetector.java | 41 +- .../model/utils/VideoQualityUtils.java | 2 +- .../demo/superplayer/ui/player/AbsPlayer.java | 5 +- .../superplayer/ui/player/FloatPlayer.java | 2 +- .../ui/player/FullScreenPlayer.java | 166 ++-- .../superplayer/ui/player/WindowPlayer.java | 103 ++- .../demo/superplayer/ui/view/DanmuView.java | 16 +- .../superplayer/ui/view/PointSeekBar.java | 79 +- .../ui/view/VideoProgressLayout.java | 10 +- .../demo/superplayer/ui/view/VodMoreView.java | 43 +- .../superplayer/ui/view/VodQualityView.java | 6 +- .../view/VolumeBrightnessProgressLayout.java | 20 +- .../superplayer_shape_vtt_text_bg.xml | 2 +- .../main/res/drawable/superplayer_thumb.xml | 11 +- .../main/res/drawable/superplayer_track.xml | 9 +- 117 files changed, 2075 insertions(+), 805 deletions(-) mode change 100755 => 100644 Demo/app/src/main/res/mipmap-hdpi/ic_launcher.png mode change 100755 => 100644 Demo/app/src/main/res/mipmap-mdpi/ic_launcher.png mode change 100755 => 100644 Demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png mode change 100755 => 100644 Demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Demo/common/build.gradle create mode 100644 Demo/common/proguard-rules.pro create mode 100644 Demo/common/src/main/AndroidManifest.xml create mode 100644 Demo/common/src/main/java/com/tencent/liteav/demo/common/AppRuntime.java create mode 100644 Demo/common/src/main/res/values-en/strings.xml create mode 100644 Demo/common/src/main/res/values/colors.xml create mode 100644 Demo/common/src/main/res/values/strings.xml create mode 100644 Demo/common/src/main/res/values/styles.xml create mode 100644 Demo/superplayerdemo/src/main/java/com/tencent/liteav/demo/player/demo/VodPlayerActivity.java create mode 100644 Demo/superplayerdemo/src/main/java/com/tencent/liteav/demo/player/view/BitrateView.java create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_add.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_adjust_mode.png create mode 100755 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_cache.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_close_press.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_fill_mode.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_input_box.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_landscape.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_log_hidden.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_log_show.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_mic_disable.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_mic_enable.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_play_pause.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_play_start.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_portrait.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_qr_code.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xhdpi/superplayer_quick.png rename Demo/superplayerdemo/src/main/res/drawable-xxhdpi/{default_cover_thumb.png => superplayer_default_cover_thumb.png} (100%) create mode 100644 Demo/superplayerdemo/src/main/res/drawable-xxhdpi/superplayer_seekbar_icon.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable/superplayer_btn_back_gray.png create mode 100644 Demo/superplayerdemo/src/main/res/drawable/superplayer_input_bg.xml create mode 100644 Demo/superplayerdemo/src/main/res/layout/superplayer_activity_vod.xml create mode 100644 Demo/superplayerdemo/src/main/res/layout/superplayer_title_bar.xml diff --git a/Demo/app/build.gradle b/Demo/app/build.gradle index 1282b3c..88269b5 100644 --- a/Demo/app/build.gradle +++ b/Demo/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.tencent.liteav.demo" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 19 - versionName "8.9.1015" + versionCode 20 + versionName "9.0.857" multiDexEnabled true ndk { @@ -17,8 +17,8 @@ android { } } - signingConfigs{ - release{ + signingConfigs { + release { } } @@ -38,11 +38,17 @@ android { doNotStrip "*/arm64-v8a/libYTCommon.so" } + dexOptions { + jumboMode true + javaMaxHeapSize "4g" + } + } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) + compile project(':common') compile project(':superplayerdemo') compile 'com.android.support:appcompat-v7:25.+' @@ -53,7 +59,9 @@ dependencies { compile 'com.android.support.constraint:constraint-layout:1.1.3' compile "com.android.support:design:$rootProject.ext.supportSdkVersion" compile 'com.squareup.picasso:picasso:2.71828' - compile 'com.blankj:utilcode:1.25.9' + compile('com.blankj:utilcode:1.25.9', { + exclude group: 'com.google.code.gson', module: 'gson' + }) compile 'com.tencent.bugly:crashreport_upgrade:1.5.1' compile 'com.tencent.bugly:nativecrashreport:3.8.0' diff --git a/Demo/app/src/main/AndroidManifest.xml b/Demo/app/src/main/AndroidManifest.xml index 62a82cf..4a7f180 100644 --- a/Demo/app/src/main/AndroidManifest.xml +++ b/Demo/app/src/main/AndroidManifest.xml @@ -1,17 +1,11 @@ + xmlns:tools="http://schemas.android.com/tools" package="com.tencent.liteav.demo" + android:versionCode="1" android:versionName="1.0"> - - + - diff --git a/Demo/app/src/main/assets/UserProtocol.html b/Demo/app/src/main/assets/UserProtocol.html index 36a6dc3..dbe4da6 100644 --- a/Demo/app/src/main/assets/UserProtocol.html +++ b/Demo/app/src/main/assets/UserProtocol.html @@ -1,30 +1,31 @@ - - - - 用户协议 - - - -

用户协议

-

尊敬的用户,请您仔细阅读以下条款,如果您对本协议的条款存在异议,您可以选择不使用本应用。使用则表示您同意本协议下的全部条款。

-

遵守法律及法律效力

-

会员同意遵守《中华人民共和国保密法》、《计算机信息系统国际联网保密管理规定》、《中华人民共和国计算机信息系统安全保护条例》、《计算机信息网络国际联网安全保护管理办法》、《中华人民共和国计算机信息网络国际联网管理暂行规定》及其实施办法等相关法律法规的任何及所有的规定,并对会员以任何方式使用服务的任何行为及其结果承担全部责任。

-

用户说明

-

用户不得利用本服务制作、上载、复制、发布、传播如下法律、法规和政策禁止的内容:

-

1. 反对宪法所确定的基本原则的;

-

2. 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;

-

3. 损害国家荣誉和利益的;

-

4. 煽动民族仇恨、民族歧视,破坏民族团结的;

-

5. 破坏国家宗教政策,宣扬邪教和封建迷信的;

-

6. 散布谣言,扰乱社会秩序,破坏社会稳定的;

-

7. 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;

-

8. 侮辱或者诽谤他人,侵害他人合法权益的;

-

9.不遵守法律法规底线、社会主义制度底线、国家利益底线、公民合法权益底线、社会公共秩序底线、道德风尚底线和信息真实性底线的“七条底线”要求的;

-

10.含有法律、行政法规禁止的其他内容的信息。 -

-

如果用户出现以上情况一种几种,将承担关闭全部权限,禁止使用的后果。

- - - + + + + 用户协议 + + + +

用户协议

+

尊敬的用户,请您仔细阅读以下条款,如果您对本协议的条款存在异议,您可以选择不使用本应用。使用则表示您同意本协议下的全部条款。

+

遵守法律及法律效力

+

+ 会员同意遵守《中华人民共和国保密法》、《计算机信息系统国际联网保密管理规定》、《中华人民共和国计算机信息系统安全保护条例》、《计算机信息网络国际联网安全保护管理办法》、《中华人民共和国计算机信息网络国际联网管理暂行规定》及其实施办法等相关法律法规的任何及所有的规定,并对会员以任何方式使用服务的任何行为及其结果承担全部责任。

+

用户说明

+

用户不得利用本服务制作、上载、复制、发布、传播如下法律、法规和政策禁止的内容:

+

1. 反对宪法所确定的基本原则的;

+

2. 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;

+

3. 损害国家荣誉和利益的;

+

4. 煽动民族仇恨、民族歧视,破坏民族团结的;

+

5. 破坏国家宗教政策,宣扬邪教和封建迷信的;

+

6. 散布谣言,扰乱社会秩序,破坏社会稳定的;

+

7. 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;

+

8. 侮辱或者诽谤他人,侵害他人合法权益的;

+

9.不遵守法律法规底线、社会主义制度底线、国家利益底线、公民合法权益底线、社会公共秩序底线、道德风尚底线和信息真实性底线的“七条底线”要求的;

+

10.含有法律、行政法规禁止的其他内容的信息。 +

+

如果用户出现以上情况一种几种,将承担关闭全部权限,禁止使用的后果。

+ + + diff --git a/Demo/app/src/main/assets/UserProtocol_EN.html b/Demo/app/src/main/assets/UserProtocol_EN.html index 12bb187..9c15445 100644 --- a/Demo/app/src/main/assets/UserProtocol_EN.html +++ b/Demo/app/src/main/assets/UserProtocol_EN.html @@ -1,30 +1,45 @@ - - - - Terms and Conditions - - - -

Terms and Conditions

-

Please read carefully the content below. If you have any objections, you can choose not to use this app. By using this app, you agree to all terms in this agreement.

-

Law Compliance

-

You agree to abide by the Law of the People's Republic of China on Guarding State Secrets, Regulations on Confidentiality Protection for the International Networking of Computer Information Networks, Regulations of the People's Republic of China on Protecting the Safety of Computer Information Systems, Measures for Security Protection Administration of the International Networking of Computer Information Networks, Provisional Regulations of the People's Republic of China on the Management of the International Networking of Computer Information Networks, as well as their implementation rules. You assume all responsibility with respect to your use of the app and the consequences.

-

Terms of Use

-

You must not use this app to create, upload, copy, publish or spread any content that is forbidden by laws, regulations or government policies, including:

-

1. Content that violates the Constitution of the People's Republic of China;

-

2. Content that endangers national security, leaks state secrets, subverts state power, or undermines national unity;

-

3. Content that harms national reputation or interests;

-

4. Content that incites ethnic enmity, propagates racial discrimination, or undermines ethnic unity;

-

5. Content that violates China’s policies on religion, or promotes cults or superstitions;

-

6. Content that spreads rumors, disturbs social order, or undermines social stability;

-

7. Obscene, pornographic, violent, gambling/murder/terrorism-related, or crime-abetting content;

-

8. Insulting or defaming content or content that infringes others’ legal rights;

-

9. Content that crosses any of the “Seven Baselines” of laws and regulations, the socialist system, national interests, citizens’ legal rights and interests, public order, morality, and information accuracy.

-

10. Other content forbidden by laws and regulations. -

-

You take responsibility for the consequences of having your permissions and access to the app revoked as a result of violating any of the above terms.

- - + + + Terms and Conditions + + + +

Terms and Conditions

+

Please read carefully the content below. If you have any objections, you can choose not to use + this app. By using this app, you agree to all terms in this agreement.

+

Law Compliance

+

You agree to abide by the Law of the People's Republic of China on Guarding State Secrets, + Regulations on Confidentiality Protection for the International Networking of Computer + Information Networks, Regulations of the People's Republic of China on Protecting the Safety of + Computer Information Systems, Measures for Security Protection Administration of the + International Networking of Computer Information Networks, Provisional Regulations of the + People's Republic of China on the Management of the International Networking of Computer + Information Networks, as well as their implementation rules. You assume all responsibility with + respect to your use of the app and the consequences.

+

Terms of Use

+

You must not use this app to create, upload, copy, publish or spread any content that is + forbidden by laws, regulations or government policies, including:

+

1. Content that violates the Constitution of the People's Republic of China;

+

2. Content that endangers national security, leaks state secrets, subverts state power, or + undermines national unity;

+

3. Content that harms national reputation or interests;

+

4. Content that incites ethnic enmity, propagates racial discrimination, or undermines ethnic + unity;

+

5. Content that violates China’s policies on religion, or promotes cults or superstitions;

+

6. Content that spreads rumors, disturbs social order, or undermines social stability;

+

7. Obscene, pornographic, violent, gambling/murder/terrorism-related, or crime-abetting + content;

+

8. Insulting or defaming content or content that infringes others’ legal rights;

+

9. Content that crosses any of the “Seven Baselines” of laws and regulations, the socialist + system, national interests, citizens’ legal rights and interests, public order, morality, and + information accuracy.

+

10. Other content forbidden by laws and regulations. +

+

You take responsibility for the consequences of having your permissions and access to the app + revoked as a result of violating any of the above terms.

+ + + diff --git a/Demo/app/src/main/java/com/tencent/liteav/demo/DemoApplication.java b/Demo/app/src/main/java/com/tencent/liteav/demo/DemoApplication.java index 8c1eeeb..185e60a 100644 --- a/Demo/app/src/main/java/com/tencent/liteav/demo/DemoApplication.java +++ b/Demo/app/src/main/java/com/tencent/liteav/demo/DemoApplication.java @@ -22,14 +22,10 @@ public class DemoApplication extends MultiDexApplication { - private static String TAG = "DemoApplication"; - - //配置bugly组件的appId - private static final String BUGLY_APPID = ""; - // 配置bugly组件的APP渠道号 - private static final String BUGLY_APP_CHANNEL = ""; - //配置bugly组件的调试模式(true或者false) - private static final boolean BUGLY_ENABLE_DEBUG = true; + private static String TAG = "DemoApplication"; + private static final String BUGLY_APPID = ""; //配置bugly组件的appId + private static final String BUGLY_APP_CHANNEL = ""; // 配置bugly组件的APP渠道号 + private static final boolean BUGLY_ENABLE_DEBUG = true; //配置bugly组件的调试模式(true或者false) // private RefWatcher mRefWatcher; private static DemoApplication instance; @@ -69,18 +65,18 @@ public static DemoApplication getApplication() { private void closeAndroidPDialog() { try { - Class aClass = Class.forName("android.content.pm.PackageParser$Package"); + Class aClass = Class.forName("android.content.pm.PackageParser$Package"); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); declaredConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } try { - Class cls = Class.forName("android.app.ActivityThread"); + Class cls = Class.forName("android.app.ActivityThread"); Method declaredMethod = cls.getDeclaredMethod("currentActivityThread"); declaredMethod.setAccessible(true); - Object activityThread = declaredMethod.invoke(null); - Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); + Object activityThread = declaredMethod.invoke(null); + Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); mHiddenApiWarningShown.setAccessible(true); mHiddenApiWarningShown.setBoolean(activityThread, true); } catch (Exception e) { @@ -101,40 +97,40 @@ public void onReceive(DownloadTask downloadTask) { @Override public void onCompleted(DownloadTask downloadTask) { - Log.d(TAG,"downloadListener download apk file success"); + Log.d(TAG, "downloadListener download apk file success"); } @Override public void onFailed(DownloadTask downloadTask, int i, String s) { - Log.d(TAG,"downloadListener download apk file fail"); + Log.d(TAG, "downloadListener download apk file fail"); } }; //监听APP升级状态 - Beta.upgradeStateListener = new UpgradeStateListener(){ + Beta.upgradeStateListener = new UpgradeStateListener() { @Override public void onUpgradeFailed(boolean b) { - Log.d(TAG,"upgradeStateListener upgrade failed"); + Log.d(TAG, "upgradeStateListener upgrade failed"); } @Override public void onUpgradeSuccess(boolean b) { - Log.d(TAG,"upgradeStateListener upgrade success"); + Log.d(TAG, "upgradeStateListener upgrade success"); } @Override public void onUpgradeNoVersion(boolean b) { - Log.d(TAG,"upgradeStateListener upgrade has no new version"); + Log.d(TAG, "upgradeStateListener upgrade has no new version"); } @Override public void onUpgrading(boolean b) { - Log.d(TAG,"upgradeStateListener upgrading"); + Log.d(TAG, "upgradeStateListener upgrading"); } @Override public void onDownloadCompleted(boolean b) { - Log.d(TAG,"upgradeStateListener download apk file success"); + Log.d(TAG, "upgradeStateListener download apk file success"); } }; Bugly.init(getApplicationContext(), BUGLY_APPID, BUGLY_ENABLE_DEBUG, strategy); diff --git a/Demo/app/src/main/java/com/tencent/liteav/demo/MainActivity.java b/Demo/app/src/main/java/com/tencent/liteav/demo/MainActivity.java index 4fc71b4..8866ad5 100644 --- a/Demo/app/src/main/java/com/tencent/liteav/demo/MainActivity.java +++ b/Demo/app/src/main/java/com/tencent/liteav/demo/MainActivity.java @@ -52,7 +52,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); mTvVersion = (TextView) findViewById(R.id.main_tv_version); - mTvVersion.setText(getString(R.string.app_tv_super_player_version, TXLiveBase.getSDKVersionStr()+"(8.9.1015)")); + mTvVersion.setText(getString(R.string.app_tv_super_player_version, TXLiveBase.getSDKVersionStr()+"(9.0.857)")); mMainTitle = (TextView) findViewById(R.id.main_title); mMainTitle.setOnLongClickListener(new View.OnLongClickListener() { @@ -322,12 +322,12 @@ private File getLogFile() { return null; } - String path = sdcardDir.getAbsolutePath() + "/log/liteav"; - List logs = new ArrayList<>(); - File directory = new File(path); + String path = sdcardDir.getAbsolutePath() + "/log/liteav"; + List logs = new ArrayList<>(); + File directory = new File(path); if (directory != null && directory.exists() && directory.isDirectory()) { long lastModify = 0; - File files[] = directory.listFiles(); + File files[] = directory.listFiles(); if (files != null && files.length > 0) { for (File file : files) { if (file.getName().endsWith("xlog")) { @@ -345,7 +345,7 @@ private File getLogFile() { private File zip(List files, String zipFileName) { File zipFile = new File(zipFileName); zipFile.deleteOnExit(); - InputStream is = null; + InputStream is = null; ZipOutputStream zos = null; try { @@ -359,7 +359,7 @@ private File zip(List files, String zipFileName) { is = new FileInputStream(file); zos.putNextEntry(new ZipEntry(file.getName())); byte[] buffer = new byte[8 * 1024]; - int length = 0; + int length = 0; while ((length = is.read(buffer)) != -1) { zos.write(buffer, 0, length); } diff --git a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/AvatarConstant.java b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/AvatarConstant.java index c9da2c9..44f9e88 100644 --- a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/AvatarConstant.java +++ b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/AvatarConstant.java @@ -1,7 +1,7 @@ package com.tencent.liteav.demo.common.widget; public interface AvatarConstant { - String USER_AVATAR_ARRAY [] = { + String USER_AVATAR_ARRAY[] = { "https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar1.png", "https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar2.png", "https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar3.png", diff --git a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/BaseExpandableRecyclerViewAdapter.java b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/BaseExpandableRecyclerViewAdapter.java index 1397260..bec1cdf 100644 --- a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/BaseExpandableRecyclerViewAdapter.java +++ b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/BaseExpandableRecyclerViewAdapter.java @@ -49,11 +49,10 @@ public abstract class BaseExpandableRecyclerViewAdapter private Set mExpandGroupSet; private Map mGroupBeanVideoHolder; private ExpandableRecyclerViewOnClickListener mListener; - - private boolean mIsEmpty; - private boolean mShowHeaderViewWhenEmpty; - private ViewProducer mEmptyViewProducer; - private ViewProducer mHeaderViewProducer; + private boolean mIsEmpty; + private boolean mShowHeaderViewWhenEmpty; + private ViewProducer mEmptyViewProducer; + private ViewProducer mHeaderViewProducer; public GroupViewHolder getGroupViewHolder(GroupBean bean) { return (GroupViewHolder) mGroupBeanVideoHolder.get(bean); @@ -207,7 +206,7 @@ public final void foldAll() { Iterator iter = mExpandGroupSet.iterator(); while (iter.hasNext()) { GroupBean groupBean = iter.next(); - final int position = getAdapterPosition(getGroupIndex(groupBean)); + final int position = getAdapterPosition(getGroupIndex(groupBean)); notifyItemRangeRemoved(position + 1, groupBean.getChildCount()); notifyItemChanged(position, EXPAND_PAYLOAD); iter.remove(); @@ -275,7 +274,7 @@ public final int getItemViewType(int position) { if (position == 0 && mHeaderViewProducer != null) { return TYPE_HEADER; } - int[] coord = translateToDoubleIndex(position); + int[] coord = translateToDoubleIndex(position); GroupBean groupBean = getGroupItem(coord[0]); if (coord[1] < 0) { int groupType = getGroupType(groupBean); @@ -430,9 +429,9 @@ protected final int[] translateToDoubleIndex(int adapterPosition) { if (mHeaderViewProducer != null) { adapterPosition--; } - final int[] result = new int[]{-1, -1}; - final int groupCount = getGroupCount(); - int adaptePositionCursor = 0; + final int[] result = new int[]{-1, -1}; + final int groupCount = getGroupCount(); + int adaptePositionCursor = 0; for (int groupCursor = 0; groupCursor < groupCount; groupCursor++) { if (adaptePositionCursor == adapterPosition) { result[0] = groupCursor; @@ -442,7 +441,7 @@ protected final int[] translateToDoubleIndex(int adapterPosition) { GroupBean groupBean = getGroupItem(groupCursor); if (mExpandGroupSet.contains(groupBean)) { final int childCount = groupBean.getChildCount(); - final int offset = adapterPosition - adaptePositionCursor; + final int offset = adapterPosition - adaptePositionCursor; if (childCount >= offset) { result[0] = groupCursor; result[1] = offset - 1; diff --git a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/ViewProducer.java b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/ViewProducer.java index 7a75bb1..0f37439 100644 --- a/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/ViewProducer.java +++ b/Demo/app/src/main/java/com/tencent/liteav/demo/common/widget/expandableadapter/ViewProducer.java @@ -16,8 +16,9 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; + public interface ViewProducer { - int VIEW_TYPE_EMPTY = 1 << 30; + int VIEW_TYPE_EMPTY = 1 << 30; int VIEW_TYPE_HEADER = VIEW_TYPE_EMPTY >> 1; /** diff --git a/Demo/app/src/main/res/drawable/app_bg_avatar_select.xml b/Demo/app/src/main/res/drawable/app_bg_avatar_select.xml index f230ad0..80754f4 100644 --- a/Demo/app/src/main/res/drawable/app_bg_avatar_select.xml +++ b/Demo/app/src/main/res/drawable/app_bg_avatar_select.xml @@ -1,4 +1,7 @@ - - + + \ No newline at end of file diff --git a/Demo/app/src/main/res/drawable/app_bg_dialog.xml b/Demo/app/src/main/res/drawable/app_bg_dialog.xml index 3d17149..0812ff9 100644 --- a/Demo/app/src/main/res/drawable/app_bg_dialog.xml +++ b/Demo/app/src/main/res/drawable/app_bg_dialog.xml @@ -2,5 +2,7 @@ - + diff --git a/Demo/app/src/main/res/drawable/app_bg_my_info_content.xml b/Demo/app/src/main/res/drawable/app_bg_my_info_content.xml index f5d5b15..fc712dc 100644 --- a/Demo/app/src/main/res/drawable/app_bg_my_info_content.xml +++ b/Demo/app/src/main/res/drawable/app_bg_my_info_content.xml @@ -1,5 +1,7 @@ - + \ No newline at end of file diff --git a/Demo/app/src/main/res/drawable/ic_launcher.png b/Demo/app/src/main/res/drawable/ic_launcher.png index 7e0aa78bc6ae2945df7e26733b357860ee5430de..00056fe2afd98435d0353e319a0c58db960e8ad7 100644 GIT binary patch delta 2608 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 Z<}P`(+m4vh|8N^XTirmdUBxl({{VmuF3 - + - + - @@ -8,7 +7,7 @@ + android:src="@drawable/bg_main_title" /> + app:layout_constraintTop_toBottomOf="@id/main_title" /> + app:layout_constraintTop_toBottomOf="@id/main_title" /> @@ -79,7 +79,7 @@ android:textSize="16sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_sdk_version"/> + app:layout_constraintTop_toBottomOf="@id/tv_sdk_version" /> + app:layout_constraintTop_toBottomOf="@id/tv_sdk_version" /> + app:layout_constraintTop_toTopOf="@id/tv_app_logout" /> - - + + - - + + - - + + - - - + + + app:layout_constraintBottom_toBottomOf="parent" /> + app:layout_constraintBottom_toTopOf="@id/tv_tips" /> diff --git a/Demo/app/src/main/res/layout/app_activity_webview.xml b/Demo/app/src/main/res/layout/app_activity_webview.xml index ebe201e..d823e4c 100644 --- a/Demo/app/src/main/res/layout/app_activity_webview.xml +++ b/Demo/app/src/main/res/layout/app_activity_webview.xml @@ -33,6 +33,6 @@ + android:layout_height="match_parent" /> diff --git a/Demo/app/src/main/res/layout/app_view_modify_nickname_dialog.xml b/Demo/app/src/main/res/layout/app_view_modify_nickname_dialog.xml index 8a57aaa..1fc90ff 100644 --- a/Demo/app/src/main/res/layout/app_view_modify_nickname_dialog.xml +++ b/Demo/app/src/main/res/layout/app_view_modify_nickname_dialog.xml @@ -53,7 +53,7 @@ android:textColorHint="#BBBBBB" android:textSize="16sp" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintTop_toBottomOf="@id/title"/> + app:layout_constraintTop_toBottomOf="@id/title" /> - + 0Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}m;000JJOGiWi{{a60|De66lK=n-u}MThRCwC$ooSF1 zj$7~7Nd@5=c!@?qcyRW{$6vR}Z?`OXs z-4u}esBPg0FnbKMTSz6=N2;@9q6vU611?3(21d2J-aY_(*@W3lAVWIY9Et9ZseTjW zYaC(`;z^1*A3zPvmpe+FG0R~BN~BU00T;T=EzL}4I4@=9J?@^huI8LiBChf$1&jrpizb~0dY5w zDC^ns06qGBirAMfhoN5_YBKxC}s0ZRH&^ z9+9I_59905YQ5B50L_qb1Th!!2ENW^VtC`? z10w)xH#0BQqsJp&z+)l4LRr%~Fal6H6A&wD)NFi}wxnJnwH5#Y&#rx? zHh=U2rXp73>na-M#CI;&f+`&at;9Ho-CV*Qy;qV>-ihZOkJ%rnt;LBiAsz*m;wxRL zuv!>~Zp4^~@l`VRA`iA10i_Zjl1^TU+3CP?hq}5Tg;+wP=2apj$|h(RFc0H6GWHuX zw!6bS)5&F+HDGo%;36%>RgLn1b1M}P1%EGMjOBitM8-Cj^h7!tkWN0@+ARGV*jf7P z_Gz!x`Vy<^#$I&y_eI+Tz~G?7kD#q31Po~=47dKrjrE-CSZ0xu)3;V`#e1=c{uC<1i&L0qsiDDGJjS) zn=MxuMUNg&A^i<>O36m0M?*UK0_Kgu>;|AIWP6-bQS|m<*FJwQ#+XdTUhVLST%jM* z6oOz1ZF57*C7sv_%q3TN9O+j`KcHn@r{-~41NM$A-p9Bck25=Tey(6-^Oq3>ZzJ7C zCC+b4D)A9PpC4hC!fbJhAIdhl9HS7-x~OPddDwD-1)LiF6g!==>WJ0q_L5!UANwDwY=#?gG$} z^RxNhKqEm=dTyvoQi-jV3+a@K3R8F`@s(AO&0mDH0%;EAIA5wmAuaz%Fn_q&WkIOO zhc5eo|C7z1$R6e*ogIZyo#=Hmxx(F?qf1!VU%Wm9w)TuPYtC%|a)o-N+mU`u^y!Ih z^m?a13T{T43>*Z&$j!#^EwE~^ST)Gl9nECfT>!HAZxaL$0rinsQjDdmJv{FUf<1Qv z!`of26P&owIJ!x^J`~>XUw`%5;BY@c7g0;j&lVamZzqX%ZBj~hcs>p{fYk1kX#zbylH8ejj=IOE^q;9bu9 zhyAk;$Q6bn{SxViRkLBl7Gu~}STjhxHQ3p(b^i)LHs1^QDM4@>a7fkPUnltTe~qIy zi8qJ9+5r_OWbPjUcz^X(*gfEUqjdQpt)pc4{vGAAcMyoGvA-XU)2D_%H4ymn|g&WD!N z@JA3?d^HrkBb{7L(B}foE(F$;X~PoCQlyhtSHt-bPJdod$87E?77Z6KA8s`Ds-*Uv zidame9>dp&c2`du3F+i>c-|PyrqFf9+&av@3!FhZS)ES36?aWguJ9m1@ROp~c6spD zV6kRUS4+FyVKZ6ejSaf*-UA7%hAsr@c`TF5aRViqvWk%NkRxxfWwJhcNO1I!|0n=VZCT{& zFvLvYD&SL$TY=wodXh>^2>AL6z6M9FMkq{7OiWBnOiWBnOiWBnOw1RI{{gb5F$)*) R)TRIc002ovPDHLkV1ioX(ER`a literal 3880 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 literal 3880 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 R)TRIc002ovPDHLkV1ioX(ER`a literal 3880 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 Iqh=lcKZpFmzhR8ag%75L=bE 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 Kkb}#73i%%a%7F<0 diff --git a/Demo/app/src/main/res/values-en/strings.xml b/Demo/app/src/main/res/values-en/strings.xml index ba10acb..f998b86 100755 --- a/Demo/app/src/main/res/values-en/strings.xml +++ b/Demo/app/src/main/res/values-en/strings.xml @@ -23,7 +23,7 @@ Chat Salon Logged in - Login failed [%d]%s + Login failed [%1$d]%2$s Video Cloud Toolkit v%s Share Logs @@ -31,8 +31,9 @@ Are you sure you want to exit? Push (Camera) - Push (Screen) + Screen Share Pull + Leb Co-anchoring (New) Co-anchoring (Old) Co-anchoring @@ -91,4 +92,9 @@ Interactive Live Video Streaming Video Call Speed Test + Live Play + TRTC + Scene + Open Debug + Close Debug diff --git a/Demo/app/src/main/res/values-zh-rHK/strings.xml b/Demo/app/src/main/res/values-zh-rHK/strings.xml index c030bf9..7b17f6d 100755 --- a/Demo/app/src/main/res/values-zh-rHK/strings.xml +++ b/Demo/app/src/main/res/values-zh-rHK/strings.xml @@ -1,5 +1,5 @@ - 騰訊雲工具包 + 騰訊雲視立方 取消 確定 diff --git a/Demo/app/src/main/res/values-zh-rTW/strings.xml b/Demo/app/src/main/res/values-zh-rTW/strings.xml index c030bf9..7b17f6d 100755 --- a/Demo/app/src/main/res/values-zh-rTW/strings.xml +++ b/Demo/app/src/main/res/values-zh-rTW/strings.xml @@ -1,5 +1,5 @@ - 騰訊雲工具包 + 騰訊雲視立方 取消 確定 diff --git a/Demo/app/src/main/res/values-zh/strings.xml b/Demo/app/src/main/res/values-zh/strings.xml index 79dd272..12315bc 100755 --- a/Demo/app/src/main/res/values-zh/strings.xml +++ b/Demo/app/src/main/res/values-zh/strings.xml @@ -1,7 +1,7 @@ - 腾讯云工具包 + 腾讯云视立方 取消 确定 @@ -25,25 +25,25 @@ 语音沙龙 登录成功 - 登录IM失败,所有功能不可用[%d]%s + 登录IM失败,所有功能不可用[%1$d]%2$s - 视频云工具包 v%s + 视频云视立方 v%s 分享日志 确定要退出登录吗? 确定要退出APP吗? - 推流演示(摄像头推流) - 推流演示(录屏推流) + 直播推流 + 屏幕分享 标准直播播放 快直播播放 连麦演示(新方案) 连麦演示(旧方案) 连麦演示 小直播 - 移动直播 MLVB + 直播推流 超级播放器 - 播放器 Player + 播放器 视频录制 特效编辑 @@ -51,13 +51,13 @@ 图片转场 视频上传 小视频 - 短视频 UGSV + 短视频 实时音视频 TRTC 腾讯云TRTC实时互动 Smart版本 v%s - 腾讯视频云 + 腾讯云视立方 version = 1.0 本APP用于展示腾讯视频云终端产品的各类功能 @@ -73,5 +73,10 @@ 腾讯云 UGC v%s TRTC APP - TRTC 网络测速 + 网络测速 + 直播播放 + 实时互动 + 场景应用 + DEBUG开关已打开 + DEBUG开关已关闭 diff --git a/Demo/app/src/main/res/values/strings.xml b/Demo/app/src/main/res/values/strings.xml index 3e7984c..b541368 100644 --- a/Demo/app/src/main/res/values/strings.xml +++ b/Demo/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ - 腾讯云工具包 + 腾讯云视立方 取消 确定 @@ -25,25 +25,25 @@ 语音沙龙 登录成功 - 登录IM失败,所有功能不可用[%d]%s + 登录IM失败,所有功能不可用[%1$d]%2$s - 视频云工具包 v%s + 视频云视立方 v%s 分享日志 确定要退出登录吗? 确定要退出APP吗? - 推流演示(摄像头推流) - 推流演示(录屏推流) + 直播推流 + 屏幕分享 标准直播播放 快直播播放 连麦演示(新方案) 连麦演示(旧方案) 连麦演示 小直播 - 移动直播 MLVB + 直播推流 超级播放器 - 播放器 Player + 播放器 视频录制 特效编辑 @@ -51,13 +51,13 @@ 图片转场 视频上传 小视频 - 短视频 UGSV + 短视频 实时音视频 TRTC 腾讯云TRTC实时互动 Smart版本 v%s - 腾讯视频云 + 腾讯云视立方 version = 1.0 本APP用于展示腾讯视频云终端产品的各类功能 @@ -90,7 +90,7 @@ 我确定 再等等 用户协议 - 视频云工具包(“本产品”)是由腾讯云提供的一款测试产品,腾讯云享有本产品的著作权和所有权。本产品仅用于功能体验,不得用于任何商业用途。为配合相关部门监管要求,本产品音视频互动全程均有录音录像存档,严禁在使用中有任何但不限于色情、辱骂、暴恐、涉政等违规内容的传播。 + 视频云视立方(“本产品”)是由腾讯云提供的一款测试产品,腾讯云享有本产品的著作权和所有权。本产品仅用于功能体验,不得用于任何商业用途。为配合相关部门监管要求,本产品音视频互动全程均有录音录像存档,严禁在使用中有任何但不限于色情、辱骂、暴恐、涉政等违规内容的传播。 注销账户 注销成功 注销后,您将无法使用当前账号,相关数据\n也将删除无法找回 @@ -100,7 +100,15 @@ 设置头像 TRTC APP - TRTC 视频互动 - TRTC 视频通话 - TRTC 网络测速 + 连麦互动 + 视频通话 + 网络测速 + + 直播播放 + 实时互动 + 场景应用 + DEBUG开关已打开 + DEBUG开关已关闭 + 点播播放器 + 超低延时播放 diff --git a/Demo/app/src/main/res/values/styles.xml b/Demo/app/src/main/res/values/styles.xml index 9506737..c51cbb3 100644 --- a/Demo/app/src/main/res/values/styles.xml +++ b/Demo/app/src/main/res/values/styles.xml @@ -21,8 +21,10 @@ -