Compare commits
166 Commits
v.6.6.8
...
gong_dev_a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3b4fe3d03 | ||
|
|
1f66204031 | ||
|
|
3a12d848e1 | ||
|
|
cf245b0df8 | ||
|
|
0ea92c00a2 | ||
|
|
a0f3f246a6 | ||
|
|
a11d7f07e9 | ||
|
|
90bc70ebf7 | ||
|
|
4618c0a4f1 | ||
|
|
15a52aaa62 | ||
|
|
6d6010d023 | ||
|
|
94156e2984 | ||
|
|
769f527565 | ||
|
|
3dcc801331 | ||
|
|
963fe2c110 | ||
|
|
9dd3619049 | ||
|
|
96b80a460b | ||
|
|
a68bee94a9 | ||
|
|
40a2843696 | ||
| 2cefd50ac3 | |||
|
|
833b58d311 | ||
|
|
f14fb4612b | ||
| 3510a565f2 | |||
| e0669e98cf | |||
|
|
8f82c7c785 | ||
|
|
2eea1f1b75 | ||
| f1a1aae787 | |||
|
|
b68c7f1c46 | ||
|
|
dd7eb2326a | ||
| 3f1fe93f3d | |||
|
|
8c9cf4e3a8 | ||
| 0451f518d5 | |||
| a154f480f6 | |||
|
|
29badbf725 | ||
|
|
e89f22329f | ||
|
|
81e08d41af | ||
| d89b356395 | |||
| 4d2985456d | |||
| 48e3ff46ab | |||
|
|
6dd3e02c1d | ||
| d8e9cc2189 | |||
|
|
0310628ba3 | ||
| 2f54fdab12 | |||
|
|
a3228f48c2 | ||
|
|
35c83a255a | ||
|
|
0aeb2d32c2 | ||
|
|
313320473f | ||
|
|
2b86927b5b | ||
|
|
bf3ebfedbd | ||
|
|
1a2db91ceb | ||
|
|
9fa4924278 | ||
|
|
3318fa761c | ||
| a7421ba1a6 | |||
|
|
40a081caa6 | ||
|
|
1485173227 | ||
|
|
d5b60523a5 | ||
|
|
309d04653e | ||
|
|
45ae3b1624 | ||
|
|
e874c2ee16 | ||
|
|
002f0ad654 | ||
|
|
bb49472817 | ||
|
|
05e4ff89d7 | ||
| 020b5c1025 | |||
|
|
2cf10cc35a | ||
|
|
4c53c990e9 | ||
|
|
cd8b58a0ec | ||
| b41bd3b89b | |||
|
|
d66f098692 | ||
|
|
f131fcf546 | ||
|
|
eeb1cc008a | ||
| 6eba9558e1 | |||
|
|
0425b56106 | ||
|
|
c5de062171 | ||
|
|
f82dbccaa5 | ||
| 07d6b959d5 | |||
| 5ae55f87fa | |||
|
|
f59e5e527a | ||
| d70c3a8b27 | |||
|
|
c20147bf8f | ||
|
|
45743e3070 | ||
|
|
b8b43c1ef2 | ||
| 73847c46a3 | |||
|
|
b7c53a3b21 | ||
| c91947ce71 | |||
|
|
62e50ae310 | ||
|
|
5baea0f156 | ||
|
|
419e3a7ab5 | ||
|
|
66822139ba | ||
|
|
5a924d9fea | ||
| cb0772c9e3 | |||
|
|
9c9eb34756 | ||
|
|
1b57d8bc8f | ||
| edc738d80b | |||
| b5417f90b4 | |||
|
|
4bd1e4bc91 | ||
|
|
cb2729433e | ||
|
|
985e626cb5 | ||
|
|
efce2ad93c | ||
|
|
6132338c6c | ||
|
|
8c89fc1de1 | ||
|
|
a061637492 | ||
| 98095e07ee | |||
| 9764b3370e | |||
|
|
bbb5a12899 | ||
|
|
680780145c | ||
|
|
19c270ad22 | ||
|
|
ce9336737f | ||
| 0396e2d06d | |||
|
|
39cf76439f | ||
|
|
11c9a53028 | ||
|
|
c4d378daba | ||
|
|
efa698ebfa | ||
|
|
6496440e5d | ||
|
|
d3de01666c | ||
| 9621d8a6d8 | |||
| 07f97fefdb | |||
| 186b9d61ee | |||
| b7c0f5d3ec | |||
| 949c0ab759 | |||
|
|
278801b77a | ||
| 5f3ebb4235 | |||
| ab24348f72 | |||
| 022806d9da | |||
|
|
b0c5d44d1c | ||
|
|
d9b1149832 | ||
|
|
9711b1f8d4 | ||
|
|
0252963b2e | ||
|
|
ff8e75768e | ||
| c92e8dd8bc | |||
|
|
01dfb81a46 | ||
|
|
0afee3543e | ||
| 8d5990c25b | |||
|
|
d5f78cc83a | ||
|
|
cf48be7d15 | ||
| 225929c891 | |||
| bc63a3e601 | |||
| c33975fe67 | |||
| c033340aad | |||
| 24170d55e2 | |||
|
|
26a71ff825 | ||
| e36fbdc6b8 | |||
|
|
b6d0ea1fba | ||
|
|
cbf517bed6 | ||
|
|
dc0ae1124f | ||
|
|
3167ab0be8 | ||
|
|
0b218157d2 | ||
|
|
6a4ac35203 | ||
|
|
93dbee14b3 | ||
|
|
cb376aa83a | ||
| 92d1861d8f | |||
| 0ff0cb52f6 | |||
|
|
afef088555 | ||
|
|
73414f3349 | ||
|
|
abfd15f751 | ||
| 8d87dda691 | |||
|
|
95ded2f77c | ||
|
|
d78055cdd9 | ||
|
|
b4adf4c77c | ||
|
|
7d46ab8520 | ||
|
|
9320d6c209 | ||
|
|
8228c45a4d | ||
|
|
4147e3c5f5 | ||
|
|
583740e866 | ||
|
|
0db8eefbe6 | ||
|
|
3f68e2a3aa | ||
|
|
5922f4c08b |
@@ -1,12 +1,12 @@
|
|||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'img-optimizer'
|
apply plugin: 'img-optimizer'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-parcelize'
|
||||||
|
apply from: "../package_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
namespace "com.yunbao.faceunity"
|
||||||
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
compileSdk rootProject.ext.android.compileSdkVersion
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
pickFirst "lib/armeabi/libyuvutils.so"
|
pickFirst "lib/armeabi/libyuvutils.so"
|
||||||
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
||||||
@@ -33,7 +33,7 @@ android {
|
|||||||
versionName rootProject.ext.android.versionName
|
versionName rootProject.ext.android.versionName
|
||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a","x86","x86_64"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
@@ -48,8 +48,8 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_18
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_18
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
@@ -58,15 +58,15 @@ repositories {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation rootProject.ext.dependencies["appcompat-androidx"]
|
api rootProject.ext.dependencies["appcompat-androidx"]
|
||||||
implementation rootProject.ext.dependencies["recyclerview-androidx"]
|
api rootProject.ext.dependencies["recyclerview-androidx"]
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
//common
|
//common
|
||||||
implementation project(path: ':common')
|
api project(path: ':common')
|
||||||
|
|
||||||
implementation 'com.faceunity:core:8.3.1'
|
api 'com.faceunity:core:8.7.0'
|
||||||
implementation 'com.faceunity:model:8.3.1'
|
api 'com.faceunity:model:8.7.0'
|
||||||
//implementation 'com.faceunity:nama:8.3.1' //底层库-标准版
|
//implementation 'com.faceunity:nama:8.3.1' //底层库-标准版
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
package="com.yunbao.faceunity"
|
|
||||||
>
|
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
|||||||
@@ -96,11 +96,17 @@ public class FaceManager implements SensorEventListener {
|
|||||||
faceUnityView.setIFaceUnityInter(new FaceUnityView.IFaceUnityInter() {
|
faceUnityView.setIFaceUnityInter(new FaceUnityView.IFaceUnityInter() {
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
|
if(onMirrorChanged!=null){
|
||||||
|
onMirrorChanged.onChange(false);
|
||||||
|
}
|
||||||
pauseFace = true;
|
pauseFace = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
|
if(onMirrorChanged!=null){
|
||||||
|
onMirrorChanged.onChange(true);
|
||||||
|
}
|
||||||
pauseFace = false;
|
pauseFace = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -295,7 +301,18 @@ public class FaceManager implements SensorEventListener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnMirrorChanged onMirrorChanged;
|
||||||
|
|
||||||
|
public void setOnMirrorChanged(OnMirrorChanged onMirrorChanged) {
|
||||||
|
this.onMirrorChanged = onMirrorChanged;
|
||||||
|
}
|
||||||
|
|
||||||
public interface FaceStatusChanged {
|
public interface FaceStatusChanged {
|
||||||
void onFaceChanged(int num);
|
void onFaceChanged(int num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface OnMirrorChanged{
|
||||||
|
void onChange(boolean falg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ public class FURenderer extends IFURenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* 特效FURenderKit*/
|
/* 特效FURenderKit*/
|
||||||
private FURenderKit mFURenderKit;
|
public FURenderKit mFURenderKit;
|
||||||
|
|
||||||
/* AI道具*/
|
/* AI道具*/
|
||||||
public static String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor_lite.bundle";
|
public static String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor.bundle";
|
||||||
public static String BUNDLE_AI_HUMAN = "model" + File.separator + "ai_human_processor.bundle";
|
public static String BUNDLE_AI_HUMAN = "model" + File.separator + "ai_human_processor.bundle";
|
||||||
|
|
||||||
/* GL 线程 ID */
|
/* GL 线程 ID */
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class FaceUnityConfig {
|
|||||||
|
|
||||||
/************************** 算法Model ******************************/
|
/************************** 算法Model ******************************/
|
||||||
// 人脸识别
|
// 人脸识别
|
||||||
public static String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor_lite.bundle";
|
public static String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor.bundle";
|
||||||
// 手势
|
// 手势
|
||||||
public static String BUNDLE_AI_HAND = "model" + File.separator + "ai_hand_processor.bundle";
|
public static String BUNDLE_AI_HAND = "model" + File.separator + "ai_hand_processor.bundle";
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import com.google.gson.JsonObject;
|
|||||||
import com.yunbao.faceunity.entity.net.FineStickerEntity;
|
import com.yunbao.faceunity.entity.net.FineStickerEntity;
|
||||||
import com.yunbao.faceunity.utils.FaceUnityData;
|
import com.yunbao.faceunity.utils.FaceUnityData;
|
||||||
import com.yunbao.faceunity.utils.FileUtils;
|
import com.yunbao.faceunity.utils.FileUtils;
|
||||||
import com.yunbao.faceunity.utils.ZipUtils;
|
import com.yunbao.common.utils.ZipUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
|
apply from: "../package_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
namespace "com.samsung.android.sdk.iap.lib"
|
||||||
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
compileSdk rootProject.ext.android.compileSdkVersion
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion minSdkVersion
|
minSdkVersion rootProject.ext.android.minSdkVersion
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
consumerProguardFiles "consumer-rules.pro"
|
consumerProguardFiles "consumer-rules.pro"
|
||||||
versionCode versionCode
|
versionCode rootProject.ext.android.versionCode
|
||||||
versionName versionName
|
versionName rootProject.ext.android.versionName
|
||||||
targetSdkVersion targetSdkVersion
|
targetSdkVersion rootProject.ext.android.targetSdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
@@ -18,7 +20,15 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
flatDir {
|
||||||
|
dirs 'libs', '../libs'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||||
}
|
}
|
||||||
BIN
IAP6Helper/libs/samsung-iap-6.1.1.aar
Normal file
BIN
IAP6Helper/libs/samsung-iap-6.1.1.aar
Normal file
Binary file not shown.
@@ -1,6 +1,5 @@
|
|||||||
<manifest
|
<manifest
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.samsung.android.sdk.iap.lib"
|
|
||||||
android:versionCode="601000004"
|
android:versionCode="601000004"
|
||||||
android:versionName="6.1.0">
|
android:versionName="6.1.0">
|
||||||
<!-- version code [Major/Minor/Bug fix release/Build number ] : x xx xxx xxx -->
|
<!-- version code [Major/Minor/Bug fix release/Build number ] : x xx xxx xxx -->
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.samsung.android.iap.IAPConnector;
|
|||||||
import com.samsung.android.sdk.iap.lib.R;
|
import com.samsung.android.sdk.iap.lib.R;
|
||||||
import com.samsung.android.sdk.iap.lib.activity.CheckPackageActivity;
|
import com.samsung.android.sdk.iap.lib.activity.CheckPackageActivity;
|
||||||
import com.samsung.android.sdk.iap.lib.activity.PaymentActivity;
|
import com.samsung.android.sdk.iap.lib.activity.PaymentActivity;
|
||||||
|
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
|
||||||
import com.samsung.android.sdk.iap.lib.helper.task.ConsumePurchasedItemsTask;
|
import com.samsung.android.sdk.iap.lib.helper.task.ConsumePurchasedItemsTask;
|
||||||
import com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask;
|
import com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask;
|
||||||
import com.samsung.android.sdk.iap.lib.helper.task.GetProductsDetailsTask;
|
import com.samsung.android.sdk.iap.lib.helper.task.GetProductsDetailsTask;
|
||||||
@@ -33,7 +34,6 @@ public class IapHelper extends HelperDefine {
|
|||||||
private static final String TAG = IapHelper.class.getSimpleName();
|
private static final String TAG = IapHelper.class.getSimpleName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When you release a application, this Mode must be set to {@link HelperDefine.OperationMode.OPERATION_MODE_PRODUCTION}
|
|
||||||
* Please double-check this mode before release.
|
* Please double-check this mode before release.
|
||||||
*/
|
*/
|
||||||
private int mMode = HelperDefine.OperationMode.OPERATION_MODE_PRODUCTION.getValue();
|
private int mMode = HelperDefine.OperationMode.OPERATION_MODE_PRODUCTION.getValue();
|
||||||
@@ -46,9 +46,9 @@ public class IapHelper extends HelperDefine {
|
|||||||
|
|
||||||
// AsyncTask for API
|
// AsyncTask for API
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
private GetProductsDetailsTask mGetProductsDetailsTask = null;
|
private com.samsung.android.sdk.iap.lib.helper.task.GetProductsDetailsTask mGetProductsDetailsTask = null;
|
||||||
private GetOwnedListTask mGetOwnedListTask = null;
|
private com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask mGetOwnedListTask = null;
|
||||||
private ConsumePurchasedItemsTask mConsumePurchasedItemsTask = null;
|
private com.samsung.android.sdk.iap.lib.helper.task.ConsumePurchasedItemsTask mConsumePurchasedItemsTask = null;
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
|
|
||||||
private ArrayList<BaseService> mServiceQueue = new ArrayList<BaseService>();
|
private ArrayList<BaseService> mServiceQueue = new ArrayList<BaseService>();
|
||||||
@@ -267,7 +267,7 @@ public class IapHelper extends HelperDefine {
|
|||||||
if (mIapConnector == null || mContext == null) {
|
if (mIapConnector == null || mContext == null) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
mGetProductsDetailsTask = new GetProductsDetailsTask(_baseService,
|
mGetProductsDetailsTask = new com.samsung.android.sdk.iap.lib.helper.task.GetProductsDetailsTask(_baseService,
|
||||||
mIapConnector,
|
mIapConnector,
|
||||||
mContext,
|
mContext,
|
||||||
_productIDs,
|
_productIDs,
|
||||||
@@ -344,7 +344,7 @@ public class IapHelper extends HelperDefine {
|
|||||||
if (mIapConnector == null || mContext == null) {
|
if (mIapConnector == null || mContext == null) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
mGetOwnedListTask = new GetOwnedListTask(_baseService,
|
mGetOwnedListTask = new com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask(_baseService,
|
||||||
mIapConnector,
|
mIapConnector,
|
||||||
mContext,
|
mContext,
|
||||||
_productType,
|
_productType,
|
||||||
@@ -417,7 +417,7 @@ public class IapHelper extends HelperDefine {
|
|||||||
mConsumePurchasedItemsTask.cancel(true);
|
mConsumePurchasedItemsTask.cancel(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
mConsumePurchasedItemsTask = new ConsumePurchasedItemsTask(_baseService,
|
mConsumePurchasedItemsTask = new com.samsung.android.sdk.iap.lib.helper.task.ConsumePurchasedItemsTask(_baseService,
|
||||||
mIapConnector,
|
mIapConnector,
|
||||||
mContext,
|
mContext,
|
||||||
_purchaseIds,
|
_purchaseIds,
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'img-optimizer'
|
apply plugin: 'img-optimizer'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-parcelize'
|
||||||
|
apply from: "../package_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
namespace "com.pdlive.shayu"
|
||||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
||||||
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
@@ -33,7 +34,7 @@ android {
|
|||||||
versionName rootProject.ext.android.versionName
|
versionName rootProject.ext.android.versionName
|
||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a","x86","x86_64"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
package="com.pdlive.shayu">
|
|
||||||
|
|
||||||
<queries>
|
<queries>
|
||||||
<package android:name="com.pdlive.shayu"/>
|
<package android:name="com.pdlive.shayu"/>
|
||||||
|
|||||||
270
app/build.gradle
270
app/build.gradle
@@ -3,59 +3,11 @@ apply plugin: 'img-optimizer'
|
|||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
apply plugin: 'com.google.firebase.crashlytics'
|
apply plugin: 'com.google.firebase.crashlytics'
|
||||||
apply plugin: 'com.alibaba.arouter'
|
apply plugin: 'com.alibaba.arouter'
|
||||||
|
apply from: "../package_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
dexOptions {
|
namespace "myname.pdlive.shayu"
|
||||||
jumboMode = true
|
compileSdk rootProject.ext.android.compileSdkVersion
|
||||||
}
|
|
||||||
project.tasks.getByName("tasks").doFirst {
|
|
||||||
|
|
||||||
}
|
|
||||||
/* flavorDimensions "packageApk"
|
|
||||||
productFlavors {
|
|
||||||
LinkTest {
|
|
||||||
dimension "packageApk"
|
|
||||||
manifestPlaceholders = [serverHost: "https://ceshi.yaoulive.com",isGooglePlay:0,isPluginModel:true]
|
|
||||||
}
|
|
||||||
LinkOfficial {
|
|
||||||
dimension "packageApk"
|
|
||||||
manifestPlaceholders = [serverHost: "https://napi.yaoulive.com",isGooglePlay:0,isPluginModel:true]
|
|
||||||
}
|
|
||||||
GoogleTest {
|
|
||||||
dimension "packageApk"
|
|
||||||
manifestPlaceholders = [serverHost: "https://ceshi.yaoulive.com",isGooglePlay:1,isPluginModel:false]
|
|
||||||
}
|
|
||||||
GoogleOfficial{
|
|
||||||
dimension "packageApk"
|
|
||||||
manifestPlaceholders = [serverHost: "https://napi.yaoulive.com",isGooglePlay:1,isPluginModel:false]
|
|
||||||
}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
/* applicationVariants.all { variant ->
|
|
||||||
variant.mergeAssetsProvider.configure {
|
|
||||||
doLast {
|
|
||||||
delete(fileTree(dir: outputDir, includes: [
|
|
||||||
'model/ai_bgseg_green.bundle',
|
|
||||||
'model/ai_face_processor.bundle',
|
|
||||||
'model/ai_face_processor_lite.bundle',
|
|
||||||
'model/ai_hairseg.bundle',
|
|
||||||
'model/ai_hand_processor.bundle',
|
|
||||||
'model/ai_human_processor.bundle',
|
|
||||||
'model/ai_human_processor_gpu.bundle',
|
|
||||||
'model/ai_human_processor_mb_fast.bundle',
|
|
||||||
'graphics/body_slim.bundle',
|
|
||||||
'graphics/controller_cpp.bundle',
|
|
||||||
'graphics/face_beautification.bundle',
|
|
||||||
'graphics/face_makeup.bundle',
|
|
||||||
'graphics/fuzzytoonfilter.bundle',
|
|
||||||
'graphics/fxaa.bundle',
|
|
||||||
'graphics/tongue.bundle'
|
|
||||||
]))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
|
||||||
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
pickFirst "lib/armeabi/libyuvutils.so"
|
pickFirst "lib/armeabi/libyuvutils.so"
|
||||||
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
||||||
@@ -123,27 +75,128 @@ android {
|
|||||||
exclude 'lib/arm64-v8a/libfuai.so'
|
exclude 'lib/arm64-v8a/libfuai.so'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//声网 rtc
|
||||||
|
exclude 'lib/arm64-v8a/libagora_ai_echo_cancellation_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_ai_noise_suppression_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_audio_beauty_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_clear_vision_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_content_inspect_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_face_capture_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_face_detection_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_lip_sync_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_screen_capture_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_segmentation_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_spatial_audio_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_video_av1_decoder_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_video_decoder_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_video_encoder_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora_video_quality_analyzer_extension.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora-core.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora-fdkaac.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora-ffmpeg.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora-rtc-sdk.so'
|
||||||
|
exclude 'lib/arm64-v8a/libagora-soundtouch.so'
|
||||||
|
exclude 'lib/arm64-v8a/libvideo_dec.so'
|
||||||
|
exclude 'lib/arm64-v8a/libvideo_enc.so'
|
||||||
|
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_ai_echo_cancellation_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_ai_noise_suppression_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_audio_beauty_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_clear_vision_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_content_inspect_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_face_capture_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_face_detection_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_lip_sync_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_screen_capture_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_segmentation_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_spatial_audio_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_video_av1_decoder_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_video_decoder_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_video_encoder_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora_video_quality_analyzer_extension.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora-core.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora-fdkaac.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora-ffmpeg.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora-rtc-sdk.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libagora-soundtouch.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libvideo_dec.so'
|
||||||
|
exclude 'lib/armeabi-v7a/libvideo_enc.so'
|
||||||
|
|
||||||
|
exclude 'lib/x86/libagora_ai_echo_cancellation_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_ai_noise_suppression_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_audio_beauty_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_clear_vision_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_content_inspect_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_face_capture_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_face_detection_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_lip_sync_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_screen_capture_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_segmentation_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_spatial_audio_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_video_av1_decoder_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_video_decoder_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_video_encoder_extension.so'
|
||||||
|
exclude 'lib/x86/libagora_video_quality_analyzer_extension.so'
|
||||||
|
exclude 'lib/x86/libagora-core.so'
|
||||||
|
exclude 'lib/x86/libagora-fdkaac.so'
|
||||||
|
exclude 'lib/x86/libagora-ffmpeg.so'
|
||||||
|
exclude 'lib/x86/libagora-rtc-sdk.so'
|
||||||
|
exclude 'lib/x86/libagora-soundtouch.so'
|
||||||
|
exclude 'lib/x86/libvideo_dec.so'
|
||||||
|
exclude 'lib/x86/libvideo_enc.so'
|
||||||
|
|
||||||
|
exclude 'lib/x86_64/libagora_ai_echo_cancellation_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_ai_noise_suppression_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_audio_beauty_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_clear_vision_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_content_inspect_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_face_capture_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_face_detection_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_lip_sync_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_screen_capture_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_segmentation_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_spatial_audio_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_video_av1_decoder_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_video_decoder_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_video_encoder_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora_video_quality_analyzer_extension.so'
|
||||||
|
exclude 'lib/x86_64/libagora-core.so'
|
||||||
|
exclude 'lib/x86_64/libagora-fdkaac.so'
|
||||||
|
exclude 'lib/x86_64/libagora-ffmpeg.so'
|
||||||
|
exclude 'lib/x86_64/libagora-rtc-sdk.so'
|
||||||
|
exclude 'lib/x86_64/libagora-soundtouch.so'
|
||||||
|
exclude 'lib/x86_64/libvideo_dec.so'
|
||||||
|
exclude 'lib/x86_64/libvideo_enc.so'
|
||||||
|
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_18
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_18
|
||||||
}
|
}
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
applicationVariants.all { variant ->
|
applicationVariants.all { variant ->
|
||||||
println "清空build文件夹";
|
println "清空build文件夹";
|
||||||
for (final def project in rootProject.getAllprojects()) {
|
for (final def project in rootProject.getAllprojects()) {
|
||||||
delete project.buildDir
|
def name = variant.name.replace('Debug', '').replace('Release', '').toLowerCase()
|
||||||
println project.buildDir
|
//delete project.buildDir
|
||||||
|
delete project.rootDir.absolutePath+File.separator+"app"+File.separator+name
|
||||||
|
//println project.buildDir
|
||||||
}
|
}
|
||||||
|
//delete project.rootDir.absolutePath + File.separator + "outputs"
|
||||||
String variantName = variant.name.capitalize()
|
String variantName = variant.name.capitalize()
|
||||||
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
|
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
|
||||||
processManifestTask.doLast { pm ->
|
processManifestTask.doLast { pm ->
|
||||||
String manifestPath = "build/intermediates/bundle_manifest/release/bundle-manifest/AndroidManifest.xml"
|
String manifestPath = "build/intermediates/bundle_manifest/google_onlineRelease/bundle-manifest/AndroidManifest.xml"
|
||||||
def isGooglePlay = rootProject.ext.manifestPlaceholders.isGooglePlay
|
def isGooglePlay = variant.name.contains("google")
|
||||||
println "谷歌版本:" + isGooglePlay
|
println "谷歌版本:" + isGooglePlay
|
||||||
println "文件存在" + file(manifestPath).exists()
|
println "文件存在" + file(manifestPath).exists()
|
||||||
println "" + (isGooglePlay != 0)
|
println "" + (isGooglePlay != 0)
|
||||||
println "" + (file(manifestPath).exists() && isGooglePlay != 0)
|
println "" + (file(manifestPath).exists() && isGooglePlay)
|
||||||
if (file(manifestPath).exists() && isGooglePlay != 0) {
|
if (file(manifestPath).exists() && isGooglePlay) {
|
||||||
def manifestContent = file(manifestPath).getText()
|
def manifestContent = file(manifestPath).getText()
|
||||||
println "移除权限"
|
println "移除权限"
|
||||||
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
|
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
|
||||||
@@ -152,8 +205,8 @@ android {
|
|||||||
} else {
|
} else {
|
||||||
print "not Exists = " + manifestPath
|
print "not Exists = " + manifestPath
|
||||||
}
|
}
|
||||||
manifestPath = "build/intermediates/merged_manifests/release/processReleaseManifest/AndroidManifest.xml"
|
manifestPath = "build/intermediates/merged_manifests/google_onlineRelease/processReleaseManifest/AndroidManifest.xml"
|
||||||
if (file(manifestPath).exists() && isGooglePlay != 0) {
|
if (file(manifestPath).exists() && isGooglePlay) {
|
||||||
def manifestContent = file(manifestPath).getText()
|
def manifestContent = file(manifestPath).getText()
|
||||||
println "移除权限2"
|
println "移除权限2"
|
||||||
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
|
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
|
||||||
@@ -164,7 +217,7 @@ android {
|
|||||||
variant.mergeAssetsProvider.configure {
|
variant.mergeAssetsProvider.configure {
|
||||||
doLast {
|
doLast {
|
||||||
delete(fileTree(dir: outputDir, includes: ['model/ai_bgseg_green.bundle',
|
delete(fileTree(dir: outputDir, includes: ['model/ai_bgseg_green.bundle',
|
||||||
'model/ai_face_processor.bundle',
|
//'model/ai_face_processor.bundle',
|
||||||
//'model/ai_face_processor_lite.bundle',
|
//'model/ai_face_processor_lite.bundle',
|
||||||
'model/ai_hairseg.bundle',
|
'model/ai_hairseg.bundle',
|
||||||
'model/ai_hand_processor.bundle',
|
'model/ai_hand_processor.bundle',
|
||||||
@@ -191,31 +244,63 @@ android {
|
|||||||
]))
|
]))
|
||||||
println "isPluginModel = " + rootProject.ext.manifestPlaceholders.isPluginModel
|
println "isPluginModel = " + rootProject.ext.manifestPlaceholders.isPluginModel
|
||||||
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
|
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
|
||||||
delete(fileTree(dir: outputDir, includes: ['model/ai_face_processor_lite.bundle',
|
delete(fileTree(dir: outputDir, includes: ['model/ai_face_processor.bundle',
|
||||||
'graphics/face_beautification.bundle']))
|
'graphics/face_beautification.bundle']))
|
||||||
} else {
|
} else {
|
||||||
println "不删除bundle"
|
println "不删除bundle"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
variant.outputs.all {
|
variant.assemble.doLast { vt ->
|
||||||
def isGoogle = "链接"
|
def channel = ''
|
||||||
if (rootProject.ext.manifestPlaceholders.isGooglePlay == 1) {
|
def server = ''
|
||||||
isGoogle = "谷歌"
|
if (variant.name.contains('huawei')) {
|
||||||
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 2) {
|
channel = "华为"
|
||||||
isGoogle = "Huawei"
|
} else if (variant.name.contains('samsung')) {
|
||||||
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 3) {
|
channel = "三星"
|
||||||
isGoogle = "Samsung"
|
} else if (variant.name.contains('google')) {
|
||||||
|
channel = "谷歌"
|
||||||
|
} else {
|
||||||
|
channel = "链接"
|
||||||
}
|
}
|
||||||
def isPlugin = "完整"
|
if (variant.name.contains('online')) {
|
||||||
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
|
server = '正式服'
|
||||||
isPlugin = "插件"
|
} else {
|
||||||
|
server = '测试服'
|
||||||
}
|
}
|
||||||
def isTest = "测试服"
|
def fileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${defaultConfig.versionCode}-${channel}-${server}-${variant.buildType.name}.apk"
|
||||||
if (rootProject.ext.manifestPlaceholders.serverHost == "https://napi.yaoulive.com") {
|
variant.outputs.forEach { fe ->
|
||||||
isTest = "正式服"
|
copy {
|
||||||
|
from fe.outputFile
|
||||||
|
into file("${project.rootDir}\\outputs\\apk\\")
|
||||||
|
rename { fn ->
|
||||||
|
fileName
|
||||||
}
|
}
|
||||||
outputFileName = "[${new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
tasks.named("sign${variant.name.capitalize()}Bundle", com.android.build.gradle.internal.tasks.FinalizeBundleTask) {
|
||||||
|
File file = finalBundleFile.asFile.get()
|
||||||
|
def channel = ''
|
||||||
|
def server = ''
|
||||||
|
if (variant.name.startsWith('huawei')) {
|
||||||
|
channel = "华为"
|
||||||
|
} else if (variant.name.startsWith('samsung')) {
|
||||||
|
channel = "三星"
|
||||||
|
} else if (variant.name.startsWith('google')) {
|
||||||
|
channel = "谷歌"
|
||||||
|
} else {
|
||||||
|
channel = "链接"
|
||||||
|
}
|
||||||
|
if (variant.name.contains('online')) {
|
||||||
|
server = '正式服'
|
||||||
|
} else {
|
||||||
|
server = '测试服'
|
||||||
|
}
|
||||||
|
def fileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${defaultConfig.versionCode}-${channel}-${server}-${variant.buildType.name}.aab"
|
||||||
|
File finalFile = new File("${project.rootDir}\\outputs\\aab", fileName)
|
||||||
|
finalBundleFile.set(finalFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
@@ -256,8 +341,17 @@ android {
|
|||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
ndk {
|
ndk {
|
||||||
// TODO: 谷歌商城需要兼容两个平台
|
Gradle gradle = getGradle()
|
||||||
|
String tskReqStr = gradle.getStartParameter().getTaskRequests().args.toString()
|
||||||
|
println("处理ndk 版本 = " + tskReqStr)
|
||||||
|
def isLink = tskReqStr.contains("Link")
|
||||||
|
if (isLink) {
|
||||||
|
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
|
||||||
|
println("打包ndk 链接")
|
||||||
|
} else {
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
|
println("打包ndk其他")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
javaCompileOptions {
|
javaCompileOptions {
|
||||||
annotationProcessorOptions {
|
annotationProcessorOptions {
|
||||||
@@ -287,7 +381,6 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
flatDir {
|
flatDir {
|
||||||
dirs 'libs', '../libs'
|
dirs 'libs', '../libs'
|
||||||
@@ -305,6 +398,7 @@ dependencies {
|
|||||||
api project(':main')
|
api project(':main')
|
||||||
//短视频
|
//短视频
|
||||||
api project(':video')
|
api project(':video')
|
||||||
|
implementation project(path: ':lib_so')
|
||||||
|
|
||||||
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
|
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
|
||||||
|
|
||||||
@@ -313,17 +407,3 @@ dependencies {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// 链接包需要注释掉 否正无法更新 谷歌包需要打开
|
|
||||||
/*
|
|
||||||
project.afterEvaluate {
|
|
||||||
android.applicationVariants.all { variant ->
|
|
||||||
variant.outputs.each { output ->
|
|
||||||
output.processResources.doFirst { pm->
|
|
||||||
String manifestPath = output.processResources.manifestFile;
|
|
||||||
def manifestContent = file(manifestPath).getText()
|
|
||||||
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
|
|
||||||
file(manifestPath).write(manifestContent)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|||||||
13
app/proguard-rules.pro
vendored
13
app/proguard-rules.pro
vendored
@@ -190,13 +190,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-keep class org.greenrobot.eventbus.android.AndroidComponentsImpl*
|
-keep class org.greenrobot.eventbus.android.AndroidComponentsImpl*
|
||||||
|
|
||||||
#--------ARouter
|
#--------ARouter
|
||||||
|
|
||||||
|
-keep public class com.alibaba.android.arouter.**{*;}
|
||||||
-keep public class com.alibaba.android.arouter.routes.**{*;}
|
-keep public class com.alibaba.android.arouter.routes.**{*;}
|
||||||
-keep public class com.alibaba.android.arouter.facade.**{*;}
|
-keep public class com.alibaba.android.arouter.facade.**{*;}
|
||||||
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
|
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
|
||||||
|
|
||||||
# If you use the byType method to obtain Service, add the following rules to protect the interface:
|
# 如果使用了 byType 的方式获取 Service,需添加下面规则,保护接口
|
||||||
-keep interface * implements com.alibaba.android.arouter.facade.template.IProvider
|
-keep interface * implements com.alibaba.android.arouter.facade.template.IProvider
|
||||||
|
|
||||||
|
# 如果使用了 单类注入,即不定义接口实现 IProvider,需添加下面规则,保护实现
|
||||||
|
-keep class * implements com.alibaba.android.arouter.facade.template.IProvider
|
||||||
|
|
||||||
# If single-type injection is used, that is, no interface is defined to implement IProvider, the following rules need to be added to protect the implementation
|
# If single-type injection is used, that is, no interface is defined to implement IProvider, the following rules need to be added to protect the implementation
|
||||||
# -keep class * implements com.alibaba.android.arouter.facade.template.IProvider
|
# -keep class * implements com.alibaba.android.arouter.facade.template.IProvider
|
||||||
|
|
||||||
@@ -304,3 +309,9 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.shayu.lib_google.**{*;}
|
-keep class com.shayu.lib_google.**{*;}
|
||||||
-keep class com.shayu.lib_huawei.**{*;}
|
-keep class com.shayu.lib_huawei.**{*;}
|
||||||
|
|
||||||
|
-keep class io.agora.**{*;}
|
||||||
|
|
||||||
|
-keep class com.qiniu.**{*;}
|
||||||
|
-keep class com.qiniu.**{public <init>();}
|
||||||
|
-ignorewarnings
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
package="myname.pdlive.shayu">
|
|
||||||
|
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.CALL_PHONE"
|
android:name="android.permission.CALL_PHONE"
|
||||||
@@ -89,6 +88,11 @@
|
|||||||
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
|
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
|
||||||
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
|
<!-- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />-->
|
||||||
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
|
||||||
|
|
||||||
|
<!-- 声网新增 -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
|
||||||
|
|
||||||
<queries>
|
<queries>
|
||||||
<package android:name="com.twitter.android" />
|
<package android:name="com.twitter.android" />
|
||||||
<package android:name="jp.naver.line.android" />
|
<package android:name="jp.naver.line.android" />
|
||||||
@@ -157,6 +161,12 @@
|
|||||||
<meta-data
|
<meta-data
|
||||||
android:name="firebase_crashlytics_collection_enabled"
|
android:name="firebase_crashlytics_collection_enabled"
|
||||||
android:value="${isUploadLog}" />
|
android:value="${isUploadLog}" />
|
||||||
|
<meta-data
|
||||||
|
android:name="BUILD_TIME"
|
||||||
|
android:value="${buildTime}" />
|
||||||
|
<meta-data
|
||||||
|
android:name="SW_RELEASE_MODEL"
|
||||||
|
android:value="${swReleaseModel}" />
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.openinstall.APP_KEY"
|
android:name="com.openinstall.APP_KEY"
|
||||||
android:value="smvslm" />
|
android:value="smvslm" />
|
||||||
|
|||||||
@@ -25,20 +25,19 @@ import com.blankj.utilcode.util.Utils;
|
|||||||
import com.facebook.appevents.AppEventsLogger;
|
import com.facebook.appevents.AppEventsLogger;
|
||||||
import com.fm.openinstall.OpenInstall;
|
import com.fm.openinstall.OpenInstall;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.shayu.phonelive.utils.LogUtils;
|
import com.pdlive.lib_so.DynamicSoLauncher;
|
||||||
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
|
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
|
||||||
import com.tencent.imsdk.v2.V2TIMManager;
|
import com.tencent.imsdk.v2.V2TIMManager;
|
||||||
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
|
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
|
||||||
import com.tencent.imsdk.v2.V2TIMUserInfo;
|
import com.tencent.imsdk.v2.V2TIMUserInfo;
|
||||||
import com.yunbao.common.utils.MobclickAgent;
|
|
||||||
import com.yunbao.common.BuildConfig;
|
import com.yunbao.common.BuildConfig;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
import com.yunbao.common.Constants;
|
import com.yunbao.common.Constants;
|
||||||
import com.yunbao.common.bean.AnchorStartLiveBean;
|
import com.yunbao.common.bean.AnchorStartLiveBean;
|
||||||
import com.yunbao.common.bean.CrashSaveBean;
|
import com.yunbao.common.bean.CrashSaveBean;
|
||||||
import com.yunbao.common.dialog.DebugDialog;
|
|
||||||
import com.yunbao.common.event.SudGameSocketImEvent;
|
import com.yunbao.common.event.SudGameSocketImEvent;
|
||||||
|
import com.yunbao.common.manager.OpenAdManager;
|
||||||
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
|
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
|
||||||
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
|
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
|
||||||
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
||||||
@@ -48,12 +47,17 @@ import com.yunbao.common.utils.AppManager;
|
|||||||
import com.yunbao.common.utils.Bus;
|
import com.yunbao.common.utils.Bus;
|
||||||
import com.yunbao.common.utils.GoogleUtils;
|
import com.yunbao.common.utils.GoogleUtils;
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
|
import com.yunbao.common.utils.LoadSoUtil;
|
||||||
|
import com.yunbao.common.utils.LogUtils;
|
||||||
|
import com.yunbao.common.utils.MobclickAgent;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.live.socket.SocketReceiveBean;
|
import com.yunbao.live.socket.SocketReceiveBean;
|
||||||
import com.yunbao.live.socket.SocketRyClient;
|
import com.yunbao.live.socket.SocketRyClient;
|
||||||
|
import com.yunbao.live.socket.SocketSwClient;
|
||||||
import com.yunbao.live.utils.LiveImDeletUtil;
|
import com.yunbao.live.utils.LiveImDeletUtil;
|
||||||
import com.yunbao.live.views.PortraitLiveManager;
|
import com.yunbao.live.views.PortraitLiveManager;
|
||||||
import com.yunbao.live.views.RecommendLiveRoomProvider;
|
import com.yunbao.live.views.RecommendLiveRoomProvider;
|
||||||
|
import com.yunbao.main.activity.LoginActivity;
|
||||||
import com.yunbao.main.activity.MsgSettActivity;
|
import com.yunbao.main.activity.MsgSettActivity;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
@@ -63,6 +67,7 @@ import java.io.IOException;
|
|||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.rong.imkit.config.RongConfigCenter;
|
import io.rong.imkit.config.RongConfigCenter;
|
||||||
@@ -108,27 +113,31 @@ public class AppContext extends CommonAppContext {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityDestroyed(@NonNull Activity activity) {
|
public void onActivityDestroyed(@NonNull Activity activity) {
|
||||||
|
AppManager.getInstance().removeActivity(activity);
|
||||||
for (WeakReference<Activity> reference : activities) {
|
for (WeakReference<Activity> reference : activities) {
|
||||||
if (reference.get() == activity) {
|
if (reference.get() == activity) {
|
||||||
activities.remove(reference);
|
activities.remove(reference);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AppManager.getInstance().removeActivity(activity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
|
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
|
||||||
activities.add(new WeakReference<>(activity));
|
activities.add(new WeakReference<>(activity));
|
||||||
|
if (activity instanceof LoginActivity) {
|
||||||
|
AppManager.getInstance().clear();
|
||||||
|
}
|
||||||
CrashSaveBean.getInstance().setActivitySize(activities);
|
CrashSaveBean.getInstance().setActivitySize(activities);
|
||||||
AppManager.getInstance().addActivity(activity);
|
AppManager.getInstance().addActivity(activity);
|
||||||
|
OpenAdManager.getInstance().dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityStarted(@NonNull Activity activity) {
|
public void onActivityStarted(@NonNull Activity activity) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -137,6 +146,17 @@ public class AppContext extends CommonAppContext {
|
|||||||
if (!isMainProcess()) {
|
if (!isMainProcess()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//如果第三方的SDK自己不支持动态加载so文件时,需要自己主动加载so
|
||||||
|
String path = LoadSoUtil.so_path + "/";
|
||||||
|
File file = new File(path);
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.mkdir();
|
||||||
|
}
|
||||||
|
// 在合适的时候将自定义路径插入so检索路径 需要使用者自己负责在这个路径上有写入权限
|
||||||
|
DynamicSoLauncher.INSTANCE.initDynamicSoConfig(this, path, s -> {
|
||||||
|
// 处理一些自定义逻辑
|
||||||
|
return true;
|
||||||
|
});
|
||||||
CrashSaveBean.getInstance().setStartTime(System.currentTimeMillis());
|
CrashSaveBean.getInstance().setStartTime(System.currentTimeMillis());
|
||||||
//注册全局异常捕获
|
//注册全局异常捕获
|
||||||
registerError();
|
registerError();
|
||||||
@@ -199,7 +219,7 @@ public class AppContext extends CommonAppContext {
|
|||||||
RongcloudIMManager.addRongcloudIMOnReceiveMessageListener(new RongIMClient.OnReceiveMessageWrapperListener() {
|
RongcloudIMManager.addRongcloudIMOnReceiveMessageListener(new RongIMClient.OnReceiveMessageWrapperListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onReceived(io.rong.imlib.model.Message message, int i, boolean b, boolean b1) {
|
public boolean onReceived(io.rong.imlib.model.Message message, int i, boolean b, boolean b1) {
|
||||||
Log.e("wewe", message.getConversationType() + "112121");
|
Log.e("wewe", message.getConversationType() + "112121 " + message.getContent());
|
||||||
MessageIMManager.get(sInstance).getSystemForRongcloud(message);
|
MessageIMManager.get(sInstance).getSystemForRongcloud(message);
|
||||||
//融云直播间聊天
|
//融云直播间聊天
|
||||||
Message msg = Message.obtain();
|
Message msg = Message.obtain();
|
||||||
@@ -210,6 +230,31 @@ public class AppContext extends CommonAppContext {
|
|||||||
if (content.getContent().contains("_method_")) {
|
if (content.getContent().contains("_method_")) {
|
||||||
msg.obj = content.getContent();
|
msg.obj = content.getContent();
|
||||||
//观众页面
|
//观众页面
|
||||||
|
|
||||||
|
String time = String.valueOf(new Date().getTime());
|
||||||
|
//声网
|
||||||
|
if (SocketSwClient.mSocketHandler != null && (TextUtils.equals("__system__", message.getTargetId()) || ("g" + PortraitLiveManager.liveID).contains(message.getTargetId()))) {
|
||||||
|
SocketSwClient.mSocketHandler.sendMessage(msg);
|
||||||
|
} else if (content.getContent().contains("LivePK_anchorStartLiveNotify")) {//开播通知
|
||||||
|
SocketReceiveBean received = JSON.parseObject(content.getContent(), SocketReceiveBean.class);
|
||||||
|
JSONObject map = received.getMsg().getJSONObject(0);
|
||||||
|
sendStartAnchorLive(map);
|
||||||
|
} else if (message.getTargetId().contains("v")) {
|
||||||
|
/*String contentJson = ((TextMessage) message.getContent()).getContent();
|
||||||
|
Log.e("wewe", contentJson);
|
||||||
|
SudGameSocketImEvent sudGameSocketImEvent = new Gson().fromJson(contentJson, SudGameSocketImEvent.class);
|
||||||
|
if (sudGameSocketImEvent.getMsg().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
sudGameSocketImEvent.getMsg().get(0).setTime(time);
|
||||||
|
Bus.get().post(sudGameSocketImEvent);*/
|
||||||
|
}
|
||||||
|
//主播页面
|
||||||
|
if (TextUtils.isEmpty(PortraitLiveManager.liveID) && SocketSwClient.mSocketHandler != null) {
|
||||||
|
SocketSwClient.mSocketHandler.sendMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
//融云
|
||||||
if (SocketRyClient.mSocketHandler != null && (TextUtils.equals("__system__", message.getTargetId()) || ("g" + PortraitLiveManager.liveID).contains(message.getTargetId()))) {
|
if (SocketRyClient.mSocketHandler != null && (TextUtils.equals("__system__", message.getTargetId()) || ("g" + PortraitLiveManager.liveID).contains(message.getTargetId()))) {
|
||||||
SocketRyClient.mSocketHandler.sendMessage(msg);
|
SocketRyClient.mSocketHandler.sendMessage(msg);
|
||||||
} else if (content.getContent().contains("LivePK_anchorStartLiveNotify")) {//开播通知
|
} else if (content.getContent().contains("LivePK_anchorStartLiveNotify")) {//开播通知
|
||||||
@@ -220,13 +265,16 @@ public class AppContext extends CommonAppContext {
|
|||||||
String contentJson = ((TextMessage) message.getContent()).getContent();
|
String contentJson = ((TextMessage) message.getContent()).getContent();
|
||||||
Log.e("wewe", contentJson);
|
Log.e("wewe", contentJson);
|
||||||
SudGameSocketImEvent sudGameSocketImEvent = new Gson().fromJson(contentJson, SudGameSocketImEvent.class);
|
SudGameSocketImEvent sudGameSocketImEvent = new Gson().fromJson(contentJson, SudGameSocketImEvent.class);
|
||||||
|
if (sudGameSocketImEvent.getMsg().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
sudGameSocketImEvent.getMsg().get(0).setTime(time);
|
||||||
Bus.get().post(sudGameSocketImEvent);
|
Bus.get().post(sudGameSocketImEvent);
|
||||||
}
|
}
|
||||||
//主播页面
|
//主播页面
|
||||||
if (TextUtils.isEmpty(PortraitLiveManager.liveID) && SocketRyClient.mSocketHandler != null) {
|
if (TextUtils.isEmpty(PortraitLiveManager.liveID) && SocketRyClient.mSocketHandler != null) {
|
||||||
SocketRyClient.mSocketHandler.sendMessage(msg);
|
SocketRyClient.mSocketHandler.sendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (message.getConversationType() == Conversation.ConversationType.PRIVATE) {//私聊信息
|
} else if (message.getConversationType() == Conversation.ConversationType.PRIVATE) {//私聊信息
|
||||||
EventBus.getDefault().post(message);
|
EventBus.getDefault().post(message);
|
||||||
}
|
}
|
||||||
@@ -275,6 +323,7 @@ public class AppContext extends CommonAppContext {
|
|||||||
|
|
||||||
});
|
});
|
||||||
configSPApp();
|
configSPApp();
|
||||||
|
|
||||||
//初始化美颜SDK
|
//初始化美颜SDK
|
||||||
// FaceManager.initFaceUnity(this);
|
// FaceManager.initFaceUnity(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.shayu.phonelive.activity;
|
package com.shayu.phonelive.activity;
|
||||||
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
@@ -22,7 +21,6 @@ import android.widget.ImageView;
|
|||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.app.ActivityCompat;
|
|
||||||
import androidx.core.app.ActivityOptionsCompat;
|
import androidx.core.app.ActivityOptionsCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
|
|
||||||
@@ -50,14 +48,12 @@ import com.yunbao.common.interfaces.CommonCallback;
|
|||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
||||||
import com.yunbao.common.utils.DownloadUtil;
|
import com.yunbao.common.utils.DownloadUtil;
|
||||||
import com.yunbao.common.utils.DpUtil;
|
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
import com.yunbao.common.utils.LogUtil;
|
import com.yunbao.common.utils.LogUtil;
|
||||||
import com.yunbao.common.utils.MD5Util;
|
import com.yunbao.common.utils.MD5Util;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
|
||||||
import com.yunbao.live.views.LauncherAdViewHolder;
|
import com.yunbao.live.views.LauncherAdViewHolder;
|
||||||
import com.yunbao.main.activity.EntryActivity;
|
import com.yunbao.main.activity.EntryActivity;
|
||||||
import com.yunbao.main.activity.MainActivity;
|
import com.yunbao.main.activity.MainActivity;
|
||||||
@@ -74,6 +70,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import myname.pdlive.shayu.R;
|
import myname.pdlive.shayu.R;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by cxf on 2018/9/17.
|
* Created by cxf on 2018/9/17.
|
||||||
*/
|
*/
|
||||||
@@ -113,6 +110,7 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
|
|||||||
res.updateConfiguration(config, res.getDisplayMetrics());
|
res.updateConfiguration(config, res.getDisplayMetrics());
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
|
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
|
||||||
@@ -144,7 +142,11 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
mHandler.sendEmptyMessageDelayed(WHAT_GET_CONFIG, 1000);
|
mHandler.sendEmptyMessageDelayed(WHAT_GET_CONFIG, 1000);
|
||||||
|
try {
|
||||||
LogUtil.uploadErrorLog(AppContext.sInstance);
|
LogUtil.uploadErrorLog(AppContext.sInstance);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
SpUtil.getInstance().setBooleanValue("NOTIFICATION", NotificationManagerCompat.from(this).areNotificationsEnabled());
|
SpUtil.getInstance().setBooleanValue("NOTIFICATION", NotificationManagerCompat.from(this).areNotificationsEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,7 +231,7 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
|
|||||||
} else {
|
} else {
|
||||||
checkUidAndToken();
|
checkUidAndToken();
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
ToastUtil.show(getString(R.string.net_error));
|
ToastUtil.show(getString(R.string.net_error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -586,4 +588,5 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
|
|||||||
this.finish();
|
this.finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ android {
|
|||||||
versionName rootProject.ext.android.versionName
|
versionName rootProject.ext.android.versionName
|
||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a","arm64-v8a"
|
abiFilters "armeabi-v7a","arm64-v8a","x86","x86_64"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ android {
|
|||||||
versionName rootProject.ext.android.versionName
|
versionName rootProject.ext.android.versionName
|
||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a","arm64-v8a"
|
abiFilters "armeabi-v7a","arm64-v8a","x86","x86_64"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
|
|||||||
27
build.gradle
27
build.gradle
@@ -1,30 +1,31 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
apply from: "config.gradle"
|
apply from: "config.gradle"
|
||||||
apply from: "dependencies.gradle"
|
apply from: "dependencies.gradle"
|
||||||
|
apply from: "config.gradle"
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.6.20'
|
ext.kotlin_version = '1.8.22'
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "https://mvn.mob.com/android" }
|
maven { url "https://mvn.mob.com/android" }
|
||||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||||
maven { url 'https://maven.aliyun.com/repository/google' }
|
maven { url 'https://maven.aliyun.com/repository/google' }
|
||||||
maven { url 'https://maven.fabric.io/public' }
|
maven { url 'https://maven.fabric.io/public' }
|
||||||
maven { url 'http://maven.faceunity.com/repository/maven-public/' }//美颜库
|
maven { url 'https://maven.faceunity.com/repository/maven-public/' }//美颜库
|
||||||
maven { url 'https://repo1.maven.org/maven2/' }//埋点
|
maven { url 'https://repo1.maven.org/maven2/' }//埋点
|
||||||
maven {url 'https://developer.huawei.com/repo/'}
|
maven {url 'https://developer.huawei.com/repo/'}
|
||||||
|
maven { url "https://jitpack.io" }
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:4.0.2'
|
classpath 'com.android.tools.build:gradle:8.3.1'
|
||||||
//一键压缩png工具
|
//一键压缩png工具
|
||||||
classpath 'com.chenenyu:img-optimizer:1.3.0'
|
classpath 'com.chenenyu:img-optimizer:1.3.0'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.3.3'
|
classpath 'com.google.gms:google-services:4.3.3'
|
||||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
|
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
|
||||||
classpath "com.alibaba:arouter-register:1.0.2"
|
classpath "com.github.jadepeakpoet.ARouter:arouter-register:1.0.3"
|
||||||
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
|
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,16 +41,22 @@ allprojects {
|
|||||||
maven { url "https://mvn.mob.com/android" }
|
maven { url "https://mvn.mob.com/android" }
|
||||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||||
maven { url 'https://maven.aliyun.com/repository/google' }
|
maven { url 'https://maven.aliyun.com/repository/google' }
|
||||||
maven { url 'http://developer.huawei.com/repo'}//华为库
|
maven { url 'https://developer.huawei.com/repo'}//华为库
|
||||||
maven { url 'https://maven.fabric.io/public' }
|
maven { url 'https://maven.fabric.io/public' }
|
||||||
maven { url 'http://maven.faceunity.com/repository/maven-public/' }//美颜库
|
maven { url 'https://maven.faceunity.com/repository/maven-public/' }//美颜库
|
||||||
maven { url "https://jitpack.io" }
|
maven { url "https://jitpack.io" }
|
||||||
maven { url 'https://repo1.maven.org/maven2/' }//埋点
|
maven { url 'https://repo1.maven.org/maven2/' }//埋点
|
||||||
google() // Google's Maven repository
|
google() // Google's Maven repository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task clean(type: Delete) {
|
/*task clean(type: Delete) {
|
||||||
delete rootProject.buildDir
|
delete rootProject.buildDir
|
||||||
|
}*/
|
||||||
|
ext {
|
||||||
|
IS_PUBLISH_LOCAL=true
|
||||||
|
LIB_VERSION="1.0.6"
|
||||||
|
AGORA_RTC_SDK= 'io.agora.rtc:agora-special-full:4.2.6.14'
|
||||||
|
// AGORA_RTC_SDK= "${rootProject.rootDir.absolutePath}/sdk"
|
||||||
|
// AGORA_RTC_SDK="io.agora.rtc:full-sdk:4.2.6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'img-optimizer'
|
apply plugin: 'img-optimizer'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
apply from: "../package_config.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
namespace "com.yunbao.common"
|
||||||
buildToolsVersion rootProject.ext.android.buildToolsVersion
|
compileSdk rootProject.ext.android.compileSdkVersion
|
||||||
|
publishNonDefault true
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion rootProject.ext.android.minSdkVersion
|
minSdkVersion rootProject.ext.android.minSdkVersion
|
||||||
@@ -13,10 +15,21 @@ android {
|
|||||||
versionName rootProject.ext.android.versionName
|
versionName rootProject.ext.android.versionName
|
||||||
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
manifestPlaceholders = rootProject.ext.manifestPlaceholders
|
||||||
ndk {
|
ndk {
|
||||||
|
// abiFilters "armeabi-v7a", "arm64-v8a","x86","x86_64"
|
||||||
|
if (rootProject.ext.manifestPlaceholders.isGooglePlay == 0) {
|
||||||
|
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
|
||||||
|
} else {
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a"
|
abiFilters "armeabi-v7a", "arm64-v8a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
javaCompileOptions {
|
||||||
|
annotationProcessorOptions {
|
||||||
|
arguments = [AROUTER_MODULE_NAME: project.getName()]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
pickFirst "lib/armeabi/libyuvutils.so"
|
pickFirst "lib/armeabi/libyuvutils.so"
|
||||||
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
pickFirst "lib/arm64-v8a/libyuvutils.so"
|
||||||
@@ -53,8 +66,11 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_18
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_18
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
@@ -64,7 +80,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation project(':lib_so')
|
||||||
|
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||||
api files('libs/jcc-bate-0.7.3.jar')
|
api files('libs/jcc-bate-0.7.3.jar')
|
||||||
compileOnly fileTree(dir: '../libs', include: ['*.aar'])
|
compileOnly fileTree(dir: '../libs', include: ['*.aar'])
|
||||||
@@ -158,14 +177,14 @@ dependencies {
|
|||||||
//腾讯im
|
//腾讯im
|
||||||
api 'com.tencent.imsdk:imsdk-plus:5.4.666'
|
api 'com.tencent.imsdk:imsdk-plus:5.4.666'
|
||||||
api 'com.google.code.gson:gson:2.8.8'
|
api 'com.google.code.gson:gson:2.8.8'
|
||||||
api 'cn.rongcloud.sdk:rtc_lib:5.2.0' // 音视频通话基础能力库
|
api 'cn.rongcloud.sdk:rtc_lib:5.7.0' // 音视频通话基础能力库
|
||||||
//此处以集成 5.1.2 版本为例
|
//此处以集成 5.1.2 版本为例
|
||||||
api 'cn.rongcloud.sdk:im_lib:5.2.0.2'
|
api 'cn.rongcloud.sdk:im_lib:5.7.0'
|
||||||
|
|
||||||
//此处以集成 5.1.2 版本为例
|
//此处以集成 5.1.2 版本为例
|
||||||
api 'cn.rongcloud.sdk:im_kit:5.2.5.4' // 即时通讯 UI 基础组件
|
api 'cn.rongcloud.sdk:im_kit:5.7.0' // 即时通讯 UI 基础组件
|
||||||
//融云小视频模块
|
//融云小视频模块
|
||||||
api 'cn.rongcloud.sdk:sight:5.2.5.4'
|
api 'cn.rongcloud.sdk:sight:5.7.0'
|
||||||
api 'com.facebook.android:facebook-android-sdk:15.2.0'
|
api 'com.facebook.android:facebook-android-sdk:15.2.0'
|
||||||
implementation 'com.facebook.android:facebook-android-sdk:15.2.0'
|
implementation 'com.facebook.android:facebook-android-sdk:15.2.0'
|
||||||
|
|
||||||
@@ -211,18 +230,35 @@ dependencies {
|
|||||||
api 'com.yanzhenjie.recyclerview:x:1.3.2'
|
api 'com.yanzhenjie.recyclerview:x:1.3.2'
|
||||||
|
|
||||||
//华为支付插件包
|
//华为支付插件包
|
||||||
// api project(':lib_huawei')
|
//api project(':lib_huawei')
|
||||||
|
|
||||||
//google插件包
|
//google插件包
|
||||||
api project(':lib_google')
|
api project(':lib_google')
|
||||||
|
|
||||||
//samsung插件包
|
//samsung插件包
|
||||||
api project(':IAP6Helper')
|
//api project(':IAP6Helper')
|
||||||
|
|
||||||
|
//時間選擇器
|
||||||
|
api 'com.contrarywind:Android-PickerView:4.1.9'
|
||||||
|
|
||||||
|
//瀑布流
|
||||||
|
api 'com.wuxiaolong.pullloadmorerecyclerview:library:1.1.2'
|
||||||
|
//时间选择器
|
||||||
|
api 'com.contrarywind:Android-PickerView:4.1.9'
|
||||||
|
//UI框架
|
||||||
|
api 'com.github.xuexiangjys:XUI:1.1.6'
|
||||||
|
api 'com.github.xuexiangjys.XUtil:xutil-core:2.0.0'
|
||||||
|
|
||||||
|
//ExoPlayer,腾讯的播放器不支持无缝切换
|
||||||
|
api 'com.google.android.exoplayer:exoplayer:2.18.2'
|
||||||
|
api 'com.google.android.exoplayer:exoplayer-core:2.18.2@aar'
|
||||||
//文字渐变色
|
//文字渐变色
|
||||||
api 'com.github.FlyJingFish:GradientTextView:1.2.4'
|
api 'com.github.FlyJingFish:GradientTextView:1.2.4'
|
||||||
//轮播 一屏显示多个
|
//轮播 一屏显示多个
|
||||||
api 'com.github.xiaohaibin:XBanner:androidx_v1.2.6'
|
api 'com.github.xiaohaibin:XBanner:androidx_v1.2.6'
|
||||||
|
//声网SDK
|
||||||
|
//api 'io.agora.rtc:agora-special-full:4.2.6.245'
|
||||||
|
api 'com.xj.marqueeView:marqueeView:0.1.20'
|
||||||
|
|
||||||
|
api rootProject.ext.dependencies["blank-utilcode"]
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
common/libs/samsung-iap-6.1.1.aar
Normal file
BIN
common/libs/samsung-iap-6.1.1.aar
Normal file
Binary file not shown.
3
common/proguard-rules.pro
vendored
3
common/proguard-rules.pro
vendored
@@ -23,3 +23,6 @@
|
|||||||
# If you keep the line number information, uncomment this to
|
# If you keep the line number information, uncomment this to
|
||||||
# hide the original source file name.
|
# hide the original source file name.
|
||||||
#-renamesourcefileattribute SourceFile
|
#-renamesourcefileattribute SourceFile
|
||||||
|
-keep class com.qiniu.**{*;}
|
||||||
|
-keep class com.qiniu.**{public <init>();}
|
||||||
|
-ignorewarnings
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="com.yunbao.common">
|
|
||||||
|
|
||||||
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
|
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
|
||||||
<!-- <uses-permission android:name="android.permission.INTERNET" />-->
|
<!-- <uses-permission android:name="android.permission.INTERNET" />-->
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ public class CommonAppConfig {
|
|||||||
public static final boolean IS_UPLOAD_ERROR_LOG = getMetaDataBoolean("IS_UPLOAD_ERROR_LOG");
|
public static final boolean IS_UPLOAD_ERROR_LOG = getMetaDataBoolean("IS_UPLOAD_ERROR_LOG");
|
||||||
//是否为插件包模式
|
//是否为插件包模式
|
||||||
public static final boolean IS_PLUGIN_MODEL = getMetaDataBoolean("IS_PLUGIN_MODEL");
|
public static final boolean IS_PLUGIN_MODEL = getMetaDataBoolean("IS_PLUGIN_MODEL");
|
||||||
|
public static final String BUILD_TIME = getMetaDataString("BUILD_TIME");
|
||||||
|
public static final boolean IS_SW_RELEASE = getMetaDataBoolean("SW_RELEASE_MODEL");
|
||||||
|
|
||||||
//外部sd卡
|
//外部sd卡
|
||||||
public static final String DCMI_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
|
public static final String DCMI_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
|
||||||
@@ -76,7 +78,30 @@ public class CommonAppConfig {
|
|||||||
public static boolean isGetNewWrap = false;//是否获取到新的包裹礼物
|
public static boolean isGetNewWrap = false;//是否获取到新的包裹礼物
|
||||||
public static int alert_time = 1;
|
public static int alert_time = 1;
|
||||||
public static int alert_end_time = 1;
|
public static int alert_end_time = 1;
|
||||||
|
public static String SWToken = ""; //声网Token
|
||||||
|
public static final String SWChannelPrefix = "g";
|
||||||
|
//测试服
|
||||||
|
public static final String SWAPPId_debug = "4cf0376582d742ac8a96778b25b1079e";
|
||||||
|
//正式服
|
||||||
|
public static final String SWAPPId = "d4a5879524d74c20a7bdd667b0f2ca21";
|
||||||
|
|
||||||
|
public static String getSwAppId() {
|
||||||
|
if (IS_SW_RELEASE) {
|
||||||
|
return SWAPPId;
|
||||||
|
} else {
|
||||||
|
return SWAPPId_debug;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取通道
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getChannelName() {
|
||||||
|
return SWChannelPrefix + getInstance().getUid();
|
||||||
|
}
|
||||||
|
|
||||||
private CommonAppConfig() {
|
private CommonAppConfig() {
|
||||||
|
|
||||||
@@ -119,8 +144,7 @@ public class CommonAppConfig {
|
|||||||
|
|
||||||
public String getUid() {
|
public String getUid() {
|
||||||
if (TextUtils.isEmpty(mUid)) {
|
if (TextUtils.isEmpty(mUid)) {
|
||||||
String[] uidAndToken = SpUtil.getInstance()
|
String[] uidAndToken = SpUtil.getInstance().getMultiStringValue(new String[]{SpUtil.UID, SpUtil.TOKEN});
|
||||||
.getMultiStringValue(new String[]{SpUtil.UID, SpUtil.TOKEN});
|
|
||||||
if (uidAndToken != null) {
|
if (uidAndToken != null) {
|
||||||
if (!TextUtils.isEmpty(uidAndToken[0]) && !TextUtils.isEmpty(uidAndToken[1])) {
|
if (!TextUtils.isEmpty(uidAndToken[0]) && !TextUtils.isEmpty(uidAndToken[1])) {
|
||||||
mUid = uidAndToken[0];
|
mUid = uidAndToken[0];
|
||||||
@@ -311,9 +335,7 @@ public class CommonAppConfig {
|
|||||||
mUid = null;
|
mUid = null;
|
||||||
mToken = null;
|
mToken = null;
|
||||||
mLoginIM = false;
|
mLoginIM = false;
|
||||||
SpUtil.getInstance().removeValue(
|
SpUtil.getInstance().removeValue(SpUtil.UID, SpUtil.TOKEN, SpUtil.USER_INFO, SpUtil.IM_LOGIN);
|
||||||
SpUtil.UID, SpUtil.TOKEN, SpUtil.USER_INFO, SpUtil.IM_LOGIN
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -349,12 +371,7 @@ public class CommonAppConfig {
|
|||||||
mProvince = null;
|
mProvince = null;
|
||||||
mCity = null;
|
mCity = null;
|
||||||
mDistrict = null;
|
mDistrict = null;
|
||||||
SpUtil.getInstance().removeValue(
|
SpUtil.getInstance().removeValue(SpUtil.LOCATION_LNG, SpUtil.LOCATION_LAT, SpUtil.LOCATION_PROVINCE, SpUtil.LOCATION_CITY, SpUtil.LOCATION_DISTRICT);
|
||||||
SpUtil.LOCATION_LNG,
|
|
||||||
SpUtil.LOCATION_LAT,
|
|
||||||
SpUtil.LOCATION_PROVINCE,
|
|
||||||
SpUtil.LOCATION_CITY,
|
|
||||||
SpUtil.LOCATION_DISTRICT);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -202,6 +202,8 @@ public class Constants {
|
|||||||
public static final String LuckyAngel = "LuckyCheck";//幸运天使
|
public static final String LuckyAngel = "LuckyCheck";//幸运天使
|
||||||
public static final String Lucky100Check = "Lucky100Check";//幸运天使
|
public static final String Lucky100Check = "Lucky100Check";//幸运天使
|
||||||
|
|
||||||
|
public static final String PrankSendData = "PrankSendData";//整蛊进度
|
||||||
|
|
||||||
public static final int SOCKET_WHAT_CONN = 0;
|
public static final int SOCKET_WHAT_CONN = 0;
|
||||||
public static final int SOCKET_WHAT_DISCONN = 2;
|
public static final int SOCKET_WHAT_DISCONN = 2;
|
||||||
public static final int SOCKET_WHAT_BROADCAST = 1;
|
public static final int SOCKET_WHAT_BROADCAST = 1;
|
||||||
@@ -267,7 +269,9 @@ public class Constants {
|
|||||||
public static final String LIVE_PK_RANDOM_START="RankingStartRandomPK";
|
public static final String LIVE_PK_RANDOM_START="RankingStartRandomPK";
|
||||||
public static final int LIVE_SDK_KSY = 0;//金山推流
|
public static final int LIVE_SDK_KSY = 0;//金山推流
|
||||||
public static final int LIVE_SDK_TX = 1;//腾讯推流
|
public static final int LIVE_SDK_TX = 1;//腾讯推流
|
||||||
|
public static final int LIVE_SDK_SW = 2;//声网
|
||||||
|
|
||||||
|
public static final String LIVE_SDK_IS_SW = "liveSdkIsSw"; //是否是聲網
|
||||||
|
|
||||||
public static final int LINK_MIC_TYPE_NORMAL = 0;//观众与主播连麦
|
public static final int LINK_MIC_TYPE_NORMAL = 0;//观众与主播连麦
|
||||||
public static final int LINK_MIC_TYPE_ANCHOR = 1;//主播与主播连麦
|
public static final int LINK_MIC_TYPE_ANCHOR = 1;//主播与主播连麦
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ public abstract class AbsActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
create();
|
|
||||||
Intent intent = getIntent();
|
Intent intent = getIntent();
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
isFullWindow = getIntent().getBooleanExtra("isFull", false);
|
isFullWindow = getIntent().getBooleanExtra("isFull", false);
|
||||||
@@ -68,6 +67,7 @@ public abstract class AbsActivity extends AppCompatActivity {
|
|||||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
create();
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mTag = this.getClass().getSimpleName();
|
mTag = this.getClass().getSimpleName();
|
||||||
setStatusBar();
|
setStatusBar();
|
||||||
@@ -133,7 +133,7 @@ public abstract class AbsActivity extends AppCompatActivity {
|
|||||||
/**
|
/**
|
||||||
* 设置透明状态栏
|
* 设置透明状态栏
|
||||||
*/
|
*/
|
||||||
private void setStatusBar() {
|
public void setStatusBar() {
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.content.ClipData;
|
|||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -12,6 +13,7 @@ import android.provider.MediaStore;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.webkit.ValueCallback;
|
import android.webkit.ValueCallback;
|
||||||
import android.webkit.WebChromeClient;
|
import android.webkit.WebChromeClient;
|
||||||
import android.webkit.WebSettings;
|
import android.webkit.WebSettings;
|
||||||
@@ -82,6 +84,15 @@ public class WebViewActivity extends AbsActivity {
|
|||||||
return R.layout.activity_webview;
|
return R.layout.activity_webview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStatusBar() {
|
||||||
|
getWindow().setStatusBarColor(Color.parseColor("#FFFFFF"));
|
||||||
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
||||||
|
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void main() {
|
protected void main() {
|
||||||
String url = getIntent().getStringExtra(Constants.URL);
|
String url = getIntent().getStringExtra(Constants.URL);
|
||||||
@@ -435,7 +446,7 @@ public class WebViewActivity extends AbsActivity {
|
|||||||
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
|
||||||
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
|
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
|
||||||
if (liveBean == null) {
|
if (liveBean == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -451,7 +462,7 @@ public class WebViewActivity extends AbsActivity {
|
|||||||
}
|
}
|
||||||
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)));
|
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)));
|
||||||
} else {
|
} else {
|
||||||
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk));
|
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk),isSw);
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package com.yunbao.common.adapter;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public abstract class BaseAdapter<T> extends RecyclerView.Adapter<BaseAdapter.BaseViewHolder> {
|
||||||
|
public Context context;
|
||||||
|
public List<T> data;
|
||||||
|
|
||||||
|
public BaseAdapter(Context context, List<T> data) {
|
||||||
|
this.context = context;
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||||
|
View view = LayoutInflater.from(context).inflate(getItemLayoutId(), parent, false);
|
||||||
|
return new BaseViewHolder(view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(BaseAdapter.BaseViewHolder holder, int position) {
|
||||||
|
T t = data.get(position);
|
||||||
|
convert(holder, t);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return data == null ? 0 : data.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void convert(BaseViewHolder holder, T item);
|
||||||
|
|
||||||
|
public abstract int getItemLayoutId();
|
||||||
|
|
||||||
|
class BaseViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private HashMap<Integer,View> views;
|
||||||
|
|
||||||
|
public BaseViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
views = new HashMap<>();
|
||||||
|
if (onItemClickListener != null){
|
||||||
|
itemView.setOnClickListener(v ->onItemClickListener.onItemClick(getAdapterPosition()) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getView(int id) {
|
||||||
|
View view = views.get(id);
|
||||||
|
if (view == null) {
|
||||||
|
view = itemView.findViewById(id);
|
||||||
|
views.put(id, view);
|
||||||
|
if (onItemClickListener != null){
|
||||||
|
view.setOnClickListener(v -> {
|
||||||
|
onItemClickListener.onItemChildClick(v, getAdapterPosition());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private OnItemClickListener onItemClickListener;
|
||||||
|
|
||||||
|
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
|
||||||
|
this.onItemClickListener = onItemClickListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnItemClickListener{
|
||||||
|
default void onItemClick(int position){}
|
||||||
|
|
||||||
|
default void onItemChildClick(View view,int position){}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -40,12 +40,15 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
|
|||||||
private final int RIGHTS_INTERESTS = 4;
|
private final int RIGHTS_INTERESTS = 4;
|
||||||
private final int RECOMMEND = 5;
|
private final int RECOMMEND = 5;
|
||||||
private String liveId;
|
private String liveId;
|
||||||
|
private boolean mIs_shengwang;
|
||||||
|
|
||||||
private List<AnchorRecommendItemModel> list = new ArrayList<>();
|
private List<AnchorRecommendItemModel> list = new ArrayList<>();
|
||||||
|
|
||||||
private List<CustomSidebarInfoModel> infoModels = new ArrayList<>();
|
private List<CustomSidebarInfoModel> infoModels = new ArrayList<>();
|
||||||
|
|
||||||
public CustomDrawerPopupAdapter(Context mContext) {
|
public CustomDrawerPopupAdapter(Context mContext,boolean mIs_shengwang) {
|
||||||
this.mContext = mContext;
|
this.mContext = mContext;
|
||||||
|
this.mIs_shengwang = mIs_shengwang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -114,6 +117,7 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter {
|
|||||||
map.put("num", "9");
|
map.put("num", "9");
|
||||||
map.put("live_recommend", "sidebar");
|
map.put("live_recommend", "sidebar");
|
||||||
map.put("refresh", "1");
|
map.put("refresh", "1");
|
||||||
|
map.put(" is_shengwang", mIs_shengwang?"1":"0");
|
||||||
//推荐位
|
//推荐位
|
||||||
MainNetManager.get((Activity) mContext)
|
MainNetManager.get((Activity) mContext)
|
||||||
.anchorRecommend(map, new com.yunbao.common.http.base.HttpCallback<AnchorRecommendModel>() {
|
.anchorRecommend(map, new com.yunbao.common.http.base.HttpCallback<AnchorRecommendModel>() {
|
||||||
|
|||||||
@@ -5,24 +5,28 @@ import android.graphics.Color;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.DebugViewHolder> {
|
public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.DebugViewHolder> {
|
||||||
TreeMap<String, String> paramMap = new TreeMap<>();
|
HashMap<String, View> paramMap = new HashMap<>();
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
public DebugDialogAdapter(Context mContext) {
|
public DebugDialogAdapter(Context mContext) {
|
||||||
this.mContext = mContext;
|
this.mContext = mContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setParamMap(TreeMap<String, String> paramMap) {
|
public void setParamMap(HashMap<String, View> paramMap) {
|
||||||
Log.i("debug弹窗", "setParamMap: 添加值到view " + paramMap.size());
|
Log.i("debug弹窗", "setParamMap: 添加值到view " + paramMap.size());
|
||||||
this.paramMap = paramMap;
|
this.paramMap = paramMap;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
@@ -31,7 +35,8 @@ public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public DebugViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public DebugViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
return new DebugViewHolder(new TextView(mContext));
|
Log.i("debug弹窗", "onCreateViewHolder: 创建适配器");
|
||||||
|
return new DebugViewHolder(new LinearLayout(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,10 +58,24 @@ public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.
|
|||||||
super(itemView);
|
super(itemView);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setData(String tag, String msg) {
|
public void setData(String msg, View view) {
|
||||||
Log.i("debug弹窗", "setData: 添加值到view " + tag + "|" + msg);
|
Log.i("debug弹窗", "setData: 添加值到view " + view + "|" + msg + "|" + ((LinearLayout) itemView).indexOfChild(view));
|
||||||
((TextView) itemView).setText(tag + ":" + msg);
|
if (view instanceof TextView && StringUtil.isEmpty(((TextView) view).getText().toString())) {
|
||||||
((TextView) itemView).setTextColor(Color.BLACK);
|
((TextView) view).setText(msg);
|
||||||
|
}
|
||||||
|
int indexOfChild = ((LinearLayout) itemView).indexOfChild(view);
|
||||||
|
if (indexOfChild != -1) {
|
||||||
|
if (((LinearLayout) itemView).getChildAt(indexOfChild) instanceof TextView) {
|
||||||
|
((TextView) ((LinearLayout) itemView).getChildAt(indexOfChild)).setText(msg);
|
||||||
|
} else {
|
||||||
|
((LinearLayout) itemView).removeViewAt(indexOfChild);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (view.getParent() != null) {
|
||||||
|
((ViewGroup) view.getParent()).removeView(view);
|
||||||
|
}
|
||||||
|
((LinearLayout) itemView).addView(view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.yunbao.common.R;
|
|||||||
import com.yunbao.common.bean.CustomSidebarChildModel;
|
import com.yunbao.common.bean.CustomSidebarChildModel;
|
||||||
import com.yunbao.common.event.CustomDrawerPopupEvent;
|
import com.yunbao.common.event.CustomDrawerPopupEvent;
|
||||||
import com.yunbao.common.utils.Bus;
|
import com.yunbao.common.utils.Bus;
|
||||||
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.common.views.InteractionGamesChildViewHolder;
|
import com.yunbao.common.views.InteractionGamesChildViewHolder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -36,7 +37,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
|
|||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
|
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
|
||||||
return new InteractionGamesChildViewHolder(runGamesView);
|
return new InteractionGamesChildViewHolder(runGamesView,mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,6 +52,9 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
|
|||||||
if (activityID != 0) {
|
if (activityID != 0) {
|
||||||
Bus.get().post(new CustomDrawerPopupEvent()
|
Bus.get().post(new CustomDrawerPopupEvent()
|
||||||
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(srcChild));
|
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(srcChild));
|
||||||
|
if(model.getSudGameIsNew().equals("1")){
|
||||||
|
SpUtil.getInstance().setLiveGameId(model.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,11 +31,16 @@ public class LiveNewRoleFunGamesAdapter extends RecyclerView.Adapter {
|
|||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view, parent, false);
|
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view, parent, false);
|
||||||
return new NewRoleFunGamesChildViewHolder(runGamesView,showRed);
|
return new NewRoleFunGamesChildViewHolder(runGamesView,showRed,mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
|
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int)
|
||||||
|
(mContext.getResources().getDisplayMetrics().widthPixels / 4.5),
|
||||||
|
ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
holder.itemView.setLayoutParams(layoutParams);
|
||||||
|
|
||||||
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
|
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
|
||||||
childViewHolder.setData(child.get(position), rigts);
|
childViewHolder.setData(child.get(position), rigts);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.bean.CustomSidebarChildModel;
|
import com.yunbao.common.bean.CustomSidebarChildModel;
|
||||||
import com.yunbao.common.event.CustomDrawerPopupEvent;
|
|
||||||
import com.yunbao.common.event.LiveNewRoleEvent;
|
import com.yunbao.common.event.LiveNewRoleEvent;
|
||||||
import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent;
|
import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent;
|
||||||
import com.yunbao.common.utils.Bus;
|
import com.yunbao.common.utils.Bus;
|
||||||
import com.yunbao.common.views.InteractionGamesChildViewHolder;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
|
import com.yunbao.common.views.InteractionGamesChildBottomViewHolder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,14 +34,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
|
|||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
|
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view3, parent, false);
|
||||||
return new InteractionGamesChildViewHolder(runGamesView);
|
return new InteractionGamesChildBottomViewHolder(runGamesView,mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
InteractionGamesChildViewHolder childViewHolder = (InteractionGamesChildViewHolder) holder;
|
InteractionGamesChildBottomViewHolder childViewHolder = (InteractionGamesChildBottomViewHolder) holder;
|
||||||
childViewHolder.setData(child.get(position), rigts);
|
childViewHolder.setData(child.get(position), rigts);
|
||||||
childViewHolder.setItemViewClicks(new InteractionGamesChildViewHolder.InteractionGamesCallBack() {
|
childViewHolder.setItemViewClicks(new InteractionGamesChildBottomViewHolder.InteractionGamesCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemViewClicks(CustomSidebarChildModel model, boolean rigts) {
|
public void onItemViewClicks(CustomSidebarChildModel model, boolean rigts) {
|
||||||
|
|
||||||
@@ -52,6 +52,9 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
|
|||||||
.setInteractionID(activityID)
|
.setInteractionID(activityID)
|
||||||
.setChild(child)
|
.setChild(child)
|
||||||
.setInteraction(true));
|
.setInteraction(true));
|
||||||
|
if(model.getSudGameIsNew().equals("1")){
|
||||||
|
SpUtil.getInstance().setLiveGameId(model.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -60,12 +63,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
return child.size();
|
return child.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateData(List<CustomSidebarChildModel> mChild) {
|
public void updateData(List<CustomSidebarChildModel> mChild) {
|
||||||
|
|
||||||
child.clear();
|
child.clear();
|
||||||
/* if (mChild.size() > 8) {
|
/* if (mChild.size() > 8) {
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
|
|||||||
@@ -39,13 +39,14 @@ public class LiveNewRolerPopupAdapter extends RecyclerView.Adapter {
|
|||||||
switch (viewType) {
|
switch (viewType) {
|
||||||
case FUN_GAMES:
|
case FUN_GAMES:
|
||||||
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_new_roler_fun_games_view, parent, false);
|
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_new_roler_fun_games_view, parent, false);
|
||||||
return new LiveNewRoleFunGamesViewHolder(runGamesView);
|
return new LiveNewRoleFunGamesViewHolder(runGamesView,mContext);
|
||||||
case RIGHTS_INTERESTS:
|
case RIGHTS_INTERESTS:
|
||||||
|
//特权
|
||||||
View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_roler_ights_interests, parent, false);
|
View rightsInterestsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_roler_ights_interests, parent, false);
|
||||||
return new LiveNewRoleRigtsInterestsViewHolder(rightsInterestsView,showRed);
|
return new LiveNewRoleRigtsInterestsViewHolder(rightsInterestsView,showRed,mContext);
|
||||||
default:
|
default:
|
||||||
View gamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_interaction_games_view, parent, false);
|
View gamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_interaction_games_view, parent, false);
|
||||||
return new LiveNewRoleInteractionGamesViewHolder(gamesView);
|
return new LiveNewRoleInteractionGamesViewHolder(gamesView,mContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,11 +30,15 @@ public class NewRoleFunGamesAdapter extends RecyclerView.Adapter {
|
|||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view2, parent, false);
|
View runGamesView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_new_role_fun_games_child_view2, parent, false);
|
||||||
return new NewRoleFunGamesChildViewHolder(runGamesView,false);
|
return new NewRoleFunGamesChildViewHolder(runGamesView,false,mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
|
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams((int)
|
||||||
|
(mContext.getResources().getDisplayMetrics().widthPixels / 4.5),
|
||||||
|
ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
holder.itemView.setLayoutParams(layoutParams);
|
||||||
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
|
NewRoleFunGamesChildViewHolder childViewHolder = (NewRoleFunGamesChildViewHolder) holder;
|
||||||
childViewHolder.setData(child.get(position), rigts);
|
childViewHolder.setData(child.get(position), rigts);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
package com.yunbao.common.adapter;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.appcompat.widget.AppCompatImageView;
|
||||||
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
|
import com.makeramen.roundedimageview.RoundedImageView;
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.bean.SudSettleBean;
|
||||||
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SudGameAdapter extends BaseAdapter<SudSettleBean> {
|
||||||
|
public SudGameAdapter(Context context, List<SudSettleBean> data) {
|
||||||
|
super(context, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AppCompatImageView sub_rank_image;
|
||||||
|
private RoundedImageView sub_head;
|
||||||
|
private AppCompatTextView sub_rank_text,sub_name,sub_score;
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
@Override
|
||||||
|
public void convert(BaseAdapter<SudSettleBean>.BaseViewHolder holder, SudSettleBean item) {
|
||||||
|
sub_rank_image = (AppCompatImageView) holder.getView(R.id.sub_rank_image);
|
||||||
|
sub_rank_text = (AppCompatTextView) holder.getView(R.id.sub_rank_text);
|
||||||
|
sub_head = (RoundedImageView) holder.getView(R.id.sub_head);
|
||||||
|
sub_name = (AppCompatTextView) holder.getView(R.id.sub_name);
|
||||||
|
sub_score = (AppCompatTextView) holder.getView(R.id.sub_score);
|
||||||
|
|
||||||
|
switch (item.getRank()){
|
||||||
|
case 1:
|
||||||
|
sub_rank_text.setVisibility(View.GONE);
|
||||||
|
sub_rank_image.setVisibility(View.VISIBLE);
|
||||||
|
sub_rank_image.setImageResource(R.mipmap.sub_1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sub_rank_text.setVisibility(View.GONE);
|
||||||
|
sub_rank_image.setVisibility(View.VISIBLE);
|
||||||
|
sub_rank_image.setImageResource(R.mipmap.sub_2);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sub_rank_text.setVisibility(View.GONE);
|
||||||
|
sub_rank_image.setVisibility(View.VISIBLE);
|
||||||
|
sub_rank_image.setImageResource(R.mipmap.sub_3);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sub_rank_text.setVisibility(View.VISIBLE);
|
||||||
|
sub_rank_image.setVisibility(View.GONE);
|
||||||
|
sub_rank_text.setText(String.valueOf(item.getRank()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImgLoader.display(context, item.getAvatar_url(),sub_head);
|
||||||
|
sub_name.setText(item.getNick_name());
|
||||||
|
if (item.getWin_num()>0){
|
||||||
|
sub_score.setText("+"+item.getWin_num());
|
||||||
|
}else {
|
||||||
|
sub_score.setText(String.valueOf(item.getWin_num()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemLayoutId() {
|
||||||
|
return R.layout.view_sub_rank;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -49,6 +49,11 @@ public class AiAutomaticSpeechModel extends BaseModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getIconEn() {
|
public String getIconEn() {
|
||||||
return iconEn;
|
return iconEn;
|
||||||
}
|
}
|
||||||
@@ -58,10 +63,6 @@ public class AiAutomaticSpeechModel extends BaseModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getContent() {
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AiAutomaticSpeechModel setContent(String content) {
|
public AiAutomaticSpeechModel setContent(String content) {
|
||||||
this.content = content;
|
this.content = content;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ public class AnchorRecommendModel extends BaseModel {
|
|||||||
|
|
||||||
@SerializedName("live_battle_pass_show_status")
|
@SerializedName("live_battle_pass_show_status")
|
||||||
private int showWarOrder = 0;//是否显示首页戰令
|
private int showWarOrder = 0;//是否显示首页戰令
|
||||||
|
@SerializedName("live_battle_pass_image_cn")
|
||||||
|
private String battlePassImageCn;
|
||||||
|
@SerializedName("live_battle_pass_image_en")
|
||||||
|
private String battlePassImageEn;
|
||||||
//是否支持换一批0=不支持 1=支持
|
//是否支持换一批0=不支持 1=支持
|
||||||
|
|
||||||
@SerializedName("up_show")
|
@SerializedName("up_show")
|
||||||
@@ -58,6 +62,22 @@ public class AnchorRecommendModel extends BaseModel {
|
|||||||
return listShow;
|
return listShow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBattlePassImageCn() {
|
||||||
|
return battlePassImageCn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBattlePassImageCn(String battlePassImageCn) {
|
||||||
|
this.battlePassImageCn = battlePassImageCn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBattlePassImageEn() {
|
||||||
|
return battlePassImageEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBattlePassImageEn(String battlePassImageEn) {
|
||||||
|
this.battlePassImageEn = battlePassImageEn;
|
||||||
|
}
|
||||||
|
|
||||||
public AnchorRecommendModel setListShow(int listShow) {
|
public AnchorRecommendModel setListShow(int listShow) {
|
||||||
this.listShow = listShow;
|
this.listShow = listShow;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -13,6 +13,16 @@ public class CheckLiveModel extends BaseModel {
|
|||||||
private String typeMsg;
|
private String typeMsg;
|
||||||
@SerializedName("live_sdk")
|
@SerializedName("live_sdk")
|
||||||
private String liveSdk;
|
private String liveSdk;
|
||||||
|
@SerializedName("is_shengwang")
|
||||||
|
private String isShengwang;
|
||||||
|
|
||||||
|
public String getIsShengwang() {
|
||||||
|
return isShengwang;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsShengwang(String isShengwang) {
|
||||||
|
this.isShengwang = isShengwang;
|
||||||
|
}
|
||||||
|
|
||||||
public static CheckLiveModel objectFromData(String str) {
|
public static CheckLiveModel objectFromData(String str) {
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.yunbao.common.bean;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -59,6 +60,9 @@ public class ConfigBean extends BaseModel {
|
|||||||
private String txPlayUgcLicenceUrl;//腾讯短视频鉴权
|
private String txPlayUgcLicenceUrl;//腾讯短视频鉴权
|
||||||
private String txVideoUgcKey;
|
private String txVideoUgcKey;
|
||||||
private String google_isup;
|
private String google_isup;
|
||||||
|
|
||||||
|
private String sud_game_speech;
|
||||||
|
|
||||||
@SerializedName("is_return_user")//是否需要弹窗(0否,1是)
|
@SerializedName("is_return_user")//是否需要弹窗(0否,1是)
|
||||||
private String isReturnUser="";
|
private String isReturnUser="";
|
||||||
@SerializedName("popup_img_url")//弹窗图片地址
|
@SerializedName("popup_img_url")//弹窗图片地址
|
||||||
@@ -182,6 +186,20 @@ public class ConfigBean extends BaseModel {
|
|||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isSw(){
|
||||||
|
return getSud_game_speech().equals("1");
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSONField(name = "sud_game_speech")
|
||||||
|
public String getSud_game_speech() {
|
||||||
|
return sud_game_speech;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSud_game_speech(String sud_game_speech) {
|
||||||
|
this.sud_game_speech = sud_game_speech;
|
||||||
|
}
|
||||||
|
|
||||||
@JSONField(name = "apk_ver")
|
@JSONField(name = "apk_ver")
|
||||||
public String getVersion() {
|
public String getVersion() {
|
||||||
return version;
|
return version;
|
||||||
|
|||||||
@@ -114,6 +114,17 @@ public class EnterRoomInfoModel extends BaseModel {
|
|||||||
@SerializedName("gift_wall_lighten_total")
|
@SerializedName("gift_wall_lighten_total")
|
||||||
private String giftWallLightenTotal;
|
private String giftWallLightenTotal;
|
||||||
|
|
||||||
|
@SerializedName("connection_info")
|
||||||
|
private LivePkMicModel connectionInfo;
|
||||||
|
|
||||||
|
public LivePkMicModel getConnectionInfo() {
|
||||||
|
return connectionInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConnectionInfo(LivePkMicModel connectionInfo) {
|
||||||
|
this.connectionInfo = connectionInfo;
|
||||||
|
}
|
||||||
|
|
||||||
public String getGiftWallLightenNumber() {
|
public String getGiftWallLightenNumber() {
|
||||||
return giftWallLightenNumber;
|
return giftWallLightenNumber;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public class EnterRoomNewModel extends BaseModel {
|
|||||||
private SudGameDateModel sudGameDateModel;
|
private SudGameDateModel sudGameDateModel;
|
||||||
@SerializedName("quick_gift_remaining_quantity")
|
@SerializedName("quick_gift_remaining_quantity")
|
||||||
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
|
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
|
||||||
|
|
||||||
@SerializedName("if_viewing_duration_complete")
|
@SerializedName("if_viewing_duration_complete")
|
||||||
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
|
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
|
||||||
@SerializedName("sendMoneyLongStatus")
|
@SerializedName("sendMoneyLongStatus")
|
||||||
|
|||||||
@@ -22,6 +22,30 @@ public class GuardPriceModel extends BaseModel {
|
|||||||
private String discount;
|
private String discount;
|
||||||
@SerializedName("price_key")
|
@SerializedName("price_key")
|
||||||
private int priceKey;
|
private int priceKey;
|
||||||
|
@SerializedName("coupon_discount")
|
||||||
|
private String couponDiscount;
|
||||||
|
@SerializedName("coupon_discount_en")
|
||||||
|
private String couponDiscountEn;
|
||||||
|
@SerializedName("coupon_discount_price")
|
||||||
|
private String couponDiscountPrice;
|
||||||
|
@SerializedName("coupon_id")
|
||||||
|
private String couponId;
|
||||||
|
|
||||||
|
public String getCouponDiscount() {
|
||||||
|
return couponDiscount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponId() {
|
||||||
|
return couponId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponDiscountEn() {
|
||||||
|
return couponDiscountEn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponDiscountPrice() {
|
||||||
|
return couponDiscountPrice;
|
||||||
|
}
|
||||||
|
|
||||||
public String getOpeningTime() {
|
public String getOpeningTime() {
|
||||||
return openingTime;
|
return openingTime;
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
public class LivePkMicModel extends BaseModel {
|
||||||
|
@SerializedName("pkuid")
|
||||||
|
private String pkuid;
|
||||||
|
@SerializedName("pkuname")
|
||||||
|
private String pkuname;
|
||||||
|
@SerializedName("pkuimg")
|
||||||
|
private String pkuimg;
|
||||||
|
|
||||||
|
public String getPkuid() {
|
||||||
|
return pkuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPkuid(String pkuid) {
|
||||||
|
this.pkuid = pkuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPkuname() {
|
||||||
|
return pkuname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPkuname(String pkuname) {
|
||||||
|
this.pkuname = pkuname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPkuimg() {
|
||||||
|
return pkuimg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPkuimg(String pkuimg) {
|
||||||
|
this.pkuimg = pkuimg;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,6 @@ package com.yunbao.common.bean;
|
|||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
@@ -22,6 +21,8 @@ public class OpenAdModel extends BaseModel {
|
|||||||
public static final int SHOW_ONE = 3;//3. 仅弹出一次;
|
public static final int SHOW_ONE = 3;//3. 仅弹出一次;
|
||||||
@SerializedName("id")
|
@SerializedName("id")
|
||||||
private int id;
|
private int id;
|
||||||
|
@SerializedName("popup_name")
|
||||||
|
private String name;
|
||||||
@SerializedName("popup_location")
|
@SerializedName("popup_location")
|
||||||
private int type = TYPE_HOME;
|
private int type = TYPE_HOME;
|
||||||
@SerializedName("activity_url")
|
@SerializedName("activity_url")
|
||||||
@@ -35,24 +36,27 @@ public class OpenAdModel extends BaseModel {
|
|||||||
@SerializedName("popup_model")
|
@SerializedName("popup_model")
|
||||||
private int model = MODEL_SQUARE;
|
private int model = MODEL_SQUARE;
|
||||||
@SerializedName("start_show_time")
|
@SerializedName("start_show_time")
|
||||||
private String startTime;//活动开始时间
|
private String startTime;//活动开始时间 1
|
||||||
@SerializedName("end_show_time")
|
@SerializedName("end_show_time")
|
||||||
private String endTime;//活动结束时间
|
private String endTime;//活动结束时间 5
|
||||||
@SerializedName("popup_permission")
|
@SerializedName("popup_permission")
|
||||||
private int permission;
|
private int permission;
|
||||||
@SerializedName("popup_frequency")
|
@SerializedName("popup_frequency")
|
||||||
private int showModel = SHOW_DEF;//显示模式,1:杀死程序后弹出 2:指定时间内(本机时间) 3:1. 仅弹出一次
|
private int showModel = SHOW_DEF;//显示模式,1:杀死程序后弹出 2:指定时间内(本机时间) 3:1. 仅弹出一次
|
||||||
@SerializedName("popup_frequency_time")
|
@SerializedName("popup_frequency_time")
|
||||||
private String section = "0";// SHOW_DEF = 2
|
private String section = "0";// SHOW_DEF = 2 1
|
||||||
|
@SerializedName("popup_sort")
|
||||||
|
private int popupSort = 1;//弹框类型 1.图片 2.H5
|
||||||
|
@SerializedName("sort")
|
||||||
|
private int sort = 0;
|
||||||
|
|
||||||
public OpenAdModel() {
|
public OpenAdModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OpenAdModel createTestData() {
|
public static OpenAdModel createTestData() {
|
||||||
OpenAdModel model = new OpenAdModel();
|
OpenAdModel model = new OpenAdModel();
|
||||||
model.id=3;
|
model.id = 3;
|
||||||
model.type=1;
|
model.type = 1;
|
||||||
model.url = "/h5/GuildTournament/20230821/rank.html";
|
model.url = "/h5/GuildTournament/20230821/rank.html";
|
||||||
model.imageUrl = "https://ceshi.yaoulive.com/data/upload/20230913/1694589490.png";
|
model.imageUrl = "https://ceshi.yaoulive.com/data/upload/20230913/1694589490.png";
|
||||||
model.showTime = 10;
|
model.showTime = 10;
|
||||||
@@ -66,6 +70,30 @@ public class OpenAdModel extends BaseModel {
|
|||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPopupSort() {
|
||||||
|
return popupSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSort() {
|
||||||
|
return sort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSort(int sort) {
|
||||||
|
this.sort = sort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPopupSort(int popupSort) {
|
||||||
|
this.popupSort = popupSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
public int getShowModel() {
|
public int getShowModel() {
|
||||||
return showModel;
|
return showModel;
|
||||||
}
|
}
|
||||||
@@ -91,12 +119,13 @@ public class OpenAdModel extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
if (!url.startsWith("http://") || !url.startsWith("https://")) {
|
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
||||||
url = CommonAppConfig.HOST + url;
|
url = CommonAppConfig.HOST + (url.startsWith("/") ? url : "/" + url);
|
||||||
}
|
}
|
||||||
return url + "?t=" + System.currentTimeMillis() / 1000;
|
return url;
|
||||||
}
|
}
|
||||||
public String getOriginalUrl(){
|
|
||||||
|
public String getOriginalUrl() {
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +227,7 @@ public class OpenAdModel extends BaseModel {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "OpenAdModel{" +
|
return "OpenAdModel{" +
|
||||||
"id=" + id +
|
"id=" + id +
|
||||||
|
", name='" + name + '\'' +
|
||||||
", type=" + type +
|
", type=" + type +
|
||||||
", url='" + url + '\'' +
|
", url='" + url + '\'' +
|
||||||
", imageUrl='" + imageUrl + '\'' +
|
", imageUrl='" + imageUrl + '\'' +
|
||||||
@@ -206,7 +236,10 @@ public class OpenAdModel extends BaseModel {
|
|||||||
", model=" + model +
|
", model=" + model +
|
||||||
", startTime='" + startTime + '\'' +
|
", startTime='" + startTime + '\'' +
|
||||||
", endTime='" + endTime + '\'' +
|
", endTime='" + endTime + '\'' +
|
||||||
", permission='" + permission + '\'' +
|
", permission=" + permission +
|
||||||
|
", showModel=" + showModel +
|
||||||
|
", section='" + section + '\'' +
|
||||||
|
", sort=" + popupSort +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,4 +56,15 @@ public class PrankGiftBean extends BaseModel{
|
|||||||
public void setGiftId(String giftId) {
|
public void setGiftId(String giftId) {
|
||||||
this.giftId = giftId;
|
this.giftId = giftId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PrankGiftBean{" +
|
||||||
|
"title='" + title + '\'' +
|
||||||
|
", name='" + name + '\'' +
|
||||||
|
", icon='" + icon + '\'' +
|
||||||
|
", num=" + num +
|
||||||
|
", giftId='" + giftId + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class PrankGiftResultBean extends BaseModel{
|
||||||
|
private List<PrankGiftBean> prank_list;
|
||||||
|
private String status;
|
||||||
|
private String prank_type;
|
||||||
|
|
||||||
|
public List<PrankGiftBean> getPrank_list() {
|
||||||
|
return prank_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_list(List<PrankGiftBean> prank_list) {
|
||||||
|
this.prank_list = prank_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPrank_type() {
|
||||||
|
return prank_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_type(String prank_type) {
|
||||||
|
this.prank_type = prank_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class PrankProgressBean extends BaseModel {
|
||||||
|
private int status;//整蛊状态 0.关闭 1.开启
|
||||||
|
private int prank_turntable_status;// 转盘整蛊状态 0=关闭 1=开启
|
||||||
|
private int prank_type;// 整蛊类型 1.礼物整蛊 2.连击整蛊
|
||||||
|
private List<PrankList> prank_list;// 整蛊进度
|
||||||
|
private List<PrankList> completed_list;// 待完成的整蛊
|
||||||
|
|
||||||
|
public PrankProgressBean(){
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static class PrankList{
|
||||||
|
private int gift_id;// 礼物ID
|
||||||
|
private int gift_num;// 整蛊需要的礼物数量
|
||||||
|
private String prank_content; // 整蛊内容
|
||||||
|
private int send_num; // 用户已赠送的礼物数量
|
||||||
|
private int completed_num;// 待完成的整蛊次数
|
||||||
|
private String gift_name;// 礼物名称
|
||||||
|
private String gift_icon; // 礼物图片链接
|
||||||
|
|
||||||
|
private String gift_name_en;
|
||||||
|
|
||||||
|
private int continuous_click_num;
|
||||||
|
|
||||||
|
public int getContinuous_click_num() {
|
||||||
|
return continuous_click_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContinuous_click_num(int continuous_click_num) {
|
||||||
|
this.continuous_click_num = continuous_click_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGift_name_en() {
|
||||||
|
return gift_name_en;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGift_name_en(String gift_name_en) {
|
||||||
|
this.gift_name_en = gift_name_en;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGift_id() {
|
||||||
|
return gift_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGift_id(int gift_id) {
|
||||||
|
this.gift_id = gift_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGift_num() {
|
||||||
|
return gift_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGift_num(int gift_num) {
|
||||||
|
this.gift_num = gift_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPrank_content() {
|
||||||
|
return prank_content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_content(String prank_content) {
|
||||||
|
this.prank_content = prank_content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSend_num() {
|
||||||
|
return send_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSend_num(int send_num) {
|
||||||
|
this.send_num = send_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCompleted_num() {
|
||||||
|
return completed_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompleted_num(int completed_num) {
|
||||||
|
this.completed_num = completed_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGift_name() {
|
||||||
|
return gift_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGift_name(String gift_name) {
|
||||||
|
this.gift_name = gift_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGift_icon() {
|
||||||
|
return gift_icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGift_icon(String gift_icon) {
|
||||||
|
this.gift_icon = gift_icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
//计算完成度
|
||||||
|
public double getCompletionRate() {
|
||||||
|
if (gift_num == 0) return 0; // Avoid division by zero
|
||||||
|
return (double) send_num / gift_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PrankList{" +
|
||||||
|
"gift_id=" + gift_id +
|
||||||
|
", gift_num=" + gift_num +
|
||||||
|
", prank_content='" + prank_content + '\'' +
|
||||||
|
", send_num=" + send_num +
|
||||||
|
", completed_num=" + completed_num +
|
||||||
|
", gift_name='" + gift_name + '\'' +
|
||||||
|
", gift_icon='" + gift_icon + '\'' +
|
||||||
|
", gift_name_en='" + gift_name_en + '\'' +
|
||||||
|
", continuous_click_num=" + continuous_click_num +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(int status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPrank_type() {
|
||||||
|
return prank_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_type(int prank_type) {
|
||||||
|
this.prank_type = prank_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PrankList> getPrank_list() {
|
||||||
|
return prank_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_list(List<PrankList> prank_list) {
|
||||||
|
this.prank_list = prank_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PrankList> getCompleted_list() {
|
||||||
|
return completed_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompleted_list(List<PrankList> completed_list) {
|
||||||
|
this.completed_list = completed_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPrank_turntable_status() {
|
||||||
|
return prank_turntable_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrank_turntable_status(int prank_turntable_status) {
|
||||||
|
this.prank_turntable_status = prank_turntable_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PrankProgressBean{" +
|
||||||
|
"status=" + status +
|
||||||
|
", prank_turntable_status=" + prank_turntable_status +
|
||||||
|
", prank_type=" + prank_type +
|
||||||
|
", prank_list=" + prank_list +
|
||||||
|
", completed_list=" + completed_list +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
16
common/src/main/java/com/yunbao/common/bean/QiniuLog.java
Normal file
16
common/src/main/java/com/yunbao/common/bean/QiniuLog.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
|
||||||
|
public class QiniuLog extends BaseModel{
|
||||||
|
@JSONField(name = "log_type")
|
||||||
|
private int log_type;
|
||||||
|
|
||||||
|
public int getLog_type() {
|
||||||
|
return log_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLog_type(int log_type) {
|
||||||
|
this.log_type = log_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
public class SudGameInfoBean {
|
||||||
|
private String uid;//玩家id
|
||||||
|
private String nick_name;//玩家昵称
|
||||||
|
private String avatar_url;//玩家头像
|
||||||
|
private String gender;//玩家性别
|
||||||
|
private int is_ai;//是否是ai
|
||||||
|
|
||||||
|
public String getUid() {
|
||||||
|
return uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUid(String uid) {
|
||||||
|
this.uid = uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNick_name() {
|
||||||
|
return nick_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNick_name(String nick_name) {
|
||||||
|
this.nick_name = nick_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAvatar_url() {
|
||||||
|
return avatar_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvatar_url(String avatar_url) {
|
||||||
|
this.avatar_url = avatar_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGender() {
|
||||||
|
return gender;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGender(String gender) {
|
||||||
|
this.gender = gender;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIs_ai() {
|
||||||
|
return is_ai;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIs_ai(int is_ai) {
|
||||||
|
this.is_ai = is_ai;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SudGameInfoBean{" +
|
||||||
|
"uid=" + uid +
|
||||||
|
", nick_name='" + nick_name + '\'' +
|
||||||
|
", avatar_url='" + avatar_url + '\'' +
|
||||||
|
", gender='" + gender + '\'' +
|
||||||
|
", is_ai=" + is_ai +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
public class SudGameScoreBean extends BaseModel{
|
||||||
|
private int golden_bean_remaining_balance;//
|
||||||
|
private int room_sill;//房间的金豆门槛
|
||||||
|
private int room_ticket;//收取的门票费
|
||||||
|
private int room_win_num;//赢家获得的金豆
|
||||||
|
private int game_mode;//1.双人对战 2.多人游戏
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SudGameScoreBean{" +
|
||||||
|
"golden_bean_remaining_balance=" + golden_bean_remaining_balance +
|
||||||
|
", room_sill=" + room_sill +
|
||||||
|
", room_ticket=" + room_ticket +
|
||||||
|
", room_win_num=" + room_win_num +
|
||||||
|
", game_mode=" + game_mode +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGame_mode() {
|
||||||
|
return game_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGame_mode(int game_mode) {
|
||||||
|
this.game_mode = game_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGolden_bean_remaining_balance() {
|
||||||
|
return golden_bean_remaining_balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGolden_bean_remaining_balance(int golden_bean_remaining_balance) {
|
||||||
|
this.golden_bean_remaining_balance = golden_bean_remaining_balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRoom_sill() {
|
||||||
|
return room_sill;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoom_sill(int room_sill) {
|
||||||
|
this.room_sill = room_sill;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRoom_ticket() {
|
||||||
|
return room_ticket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoom_ticket(int room_ticket) {
|
||||||
|
this.room_ticket = room_ticket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRoom_win_num() {
|
||||||
|
return room_win_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoom_win_num(int room_win_num) {
|
||||||
|
this.room_win_num = room_win_num;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SudSettleBean {
|
||||||
|
private String uid;//玩家id
|
||||||
|
private String nick_name;//玩家昵称
|
||||||
|
private String avatar_url;//玩家头像
|
||||||
|
private int rank;//玩家排名
|
||||||
|
private int win_num;//赢得或者失去的金豆
|
||||||
|
|
||||||
|
public String getUid() {
|
||||||
|
return uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUid(String uid) {
|
||||||
|
this.uid = uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNick_name() {
|
||||||
|
return nick_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNick_name(String nick_name) {
|
||||||
|
this.nick_name = nick_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAvatar_url() {
|
||||||
|
return avatar_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvatar_url(String avatar_url) {
|
||||||
|
this.avatar_url = avatar_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRank() {
|
||||||
|
return rank;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRank(int rank) {
|
||||||
|
this.rank = rank;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWin_num() {
|
||||||
|
return win_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWin_num(int win_num) {
|
||||||
|
this.win_num = win_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public SudSettleBean(String uid, String nick_name, String avatar_url, int rank, int win_num) {
|
||||||
|
this.uid = uid;
|
||||||
|
this.nick_name = nick_name;
|
||||||
|
this.avatar_url = avatar_url;
|
||||||
|
this.rank = rank;
|
||||||
|
this.win_num = win_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SudSettleBean{" +
|
||||||
|
"uid='" + uid + '\'' +
|
||||||
|
", nick_name='" + nick_name + '\'' +
|
||||||
|
", avatar_url='" + avatar_url + '\'' +
|
||||||
|
", rank=" + rank +
|
||||||
|
", win_num=" + win_num +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.yunbao.common.bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 声网token
|
||||||
|
*/
|
||||||
|
public class SwTokenModel extends BaseModel {
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
public SwTokenModel() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SwTokenModel(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(String token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -907,6 +907,66 @@ public class UserBean implements Parcelable {
|
|||||||
this.bubble = bubble;
|
this.bubble = bubble;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "UserBean{" +
|
||||||
|
"id='" + id + '\'' +
|
||||||
|
", userNiceName='" + userNiceName + '\'' +
|
||||||
|
", avatar='" + avatar + '\'' +
|
||||||
|
", avatarThumb='" + avatarThumb + '\'' +
|
||||||
|
", sex=" + sex +
|
||||||
|
", signature='" + signature + '\'' +
|
||||||
|
", coin='" + coin + '\'' +
|
||||||
|
", gold='" + gold + '\'' +
|
||||||
|
", votes='" + votes + '\'' +
|
||||||
|
", consumption='" + consumption + '\'' +
|
||||||
|
", votestotal='" + votestotal + '\'' +
|
||||||
|
", province='" + province + '\'' +
|
||||||
|
", city='" + city + '\'' +
|
||||||
|
", location='" + location + '\'' +
|
||||||
|
", birthday='" + birthday + '\'' +
|
||||||
|
", level=" + level +
|
||||||
|
", levelAnchor=" + levelAnchor +
|
||||||
|
", lives=" + lives +
|
||||||
|
", follows=" + follows +
|
||||||
|
", fans=" + fans +
|
||||||
|
", vip=" + vip +
|
||||||
|
", liang=" + liang +
|
||||||
|
", car=" + car +
|
||||||
|
", medal_level=" + medal_level +
|
||||||
|
", medal_name='" + medal_name + '\'' +
|
||||||
|
", Dress=" + Dress +
|
||||||
|
", noble_id='" + noble_id + '\'' +
|
||||||
|
", yuanbao='" + yuanbao + '\'' +
|
||||||
|
", noble_name='" + noble_name + '\'' +
|
||||||
|
", islive='" + islive + '\'' +
|
||||||
|
", medal_no_display_src='" + medal_no_display_src + '\'' +
|
||||||
|
", hot_num='" + hot_num + '\'' +
|
||||||
|
", goodnum='" + goodnum + '\'' +
|
||||||
|
", fans_pic='" + fans_pic + '\'' +
|
||||||
|
", gifticon='" + gifticon + '\'' +
|
||||||
|
", department_name='" + department_name + '\'' +
|
||||||
|
", token_rong='" + token_rong + '\'' +
|
||||||
|
", noble_end_time='" + noble_end_time + '\'' +
|
||||||
|
", slide='" + slide + '\'' +
|
||||||
|
", users_type='" + users_type + '\'' +
|
||||||
|
", is_bind='" + is_bind + '\'' +
|
||||||
|
", mobile='" + mobile + '\'' +
|
||||||
|
", front_task='" + front_task + '\'' +
|
||||||
|
", is_admin='" + is_admin + '\'' +
|
||||||
|
", praise=" + praise +
|
||||||
|
", isHide=" + isHide +
|
||||||
|
", randomPk=" + randomPk +
|
||||||
|
", mRankPkImgUrl='" + mRankPkImgUrl + '\'' +
|
||||||
|
", user_info_complete=" + user_info_complete +
|
||||||
|
", fansLevel=" + fansLevel +
|
||||||
|
", typeMic=" + typeMic +
|
||||||
|
", isMicList=" + isMicList +
|
||||||
|
", isRequest=" + isRequest +
|
||||||
|
", fansEnterRoomUrl='" + fansEnterRoomUrl + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.yunbao.common.custom;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.core.view.ViewCompat;
|
||||||
|
|
||||||
|
import com.stx.xhb.androidx.transformers.BasePageTransformer;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
|
||||||
|
public class LiveGuardScalePageTransformer extends BasePageTransformer {
|
||||||
|
/**
|
||||||
|
* author: xiaohaibin.
|
||||||
|
* time: 2018/10/9
|
||||||
|
* mail:xhb_199409@163.com
|
||||||
|
* github:https://github.com/xiaohaibin
|
||||||
|
* describe: 适用于一屏显示多个模式
|
||||||
|
*/
|
||||||
|
private float mMinScale = 0.85f;
|
||||||
|
private float mMinAlpha = 1f;
|
||||||
|
|
||||||
|
public LiveGuardScalePageTransformer() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveGuardScalePageTransformer(float minAlpha, float minScale) {
|
||||||
|
setMinAlpha(minAlpha);
|
||||||
|
setMinScale(minScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleInvisiblePage(View view, float position) {
|
||||||
|
ViewCompat.setAlpha(view, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleLeftPage(View view, float position) {
|
||||||
|
float scale = Math.max(mMinScale, 1 + position);
|
||||||
|
float vertMargin = view.getHeight() * (1 - scale) / 2;
|
||||||
|
float horzMargin = view.getWidth() * (1 - scale) / 2;
|
||||||
|
view.setTranslationX(horzMargin - vertMargin / 2);
|
||||||
|
view.setScaleX(scale);
|
||||||
|
view.setScaleY( scale);
|
||||||
|
view.setAlpha( mMinAlpha + (scale - mMinScale) / (1 - mMinScale) * (1 - mMinAlpha));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleRightPage(View view, float position) {
|
||||||
|
float scale = Math.max(mMinScale, 1 - position);
|
||||||
|
float vertMargin = view.getHeight() * (1 - scale) / 2;
|
||||||
|
float horzMargin = view.getWidth() * (1 - scale) / 2;
|
||||||
|
view.setTranslationX( -horzMargin + vertMargin / 2);
|
||||||
|
view.setScaleX( scale);
|
||||||
|
|
||||||
|
view.setScaleY( scale);
|
||||||
|
view.setAlpha( mMinAlpha + (scale - mMinScale) / (1 - mMinScale) * (1 - mMinAlpha));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinAlpha(float minAlpha) {
|
||||||
|
if (minAlpha >= 0.6f && minAlpha <= 1.0f) {
|
||||||
|
mMinAlpha = minAlpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinScale(float minScale) {
|
||||||
|
if (minScale >= 0.6f && minScale <= 1.0f) {
|
||||||
|
mMinScale = minScale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,6 +24,11 @@ public abstract class AbsDialogCenterPopupWindow extends CenterPopupView {
|
|||||||
public abstract void buildDialog(XPopup.Builder builder);
|
public abstract void buildDialog(XPopup.Builder builder);
|
||||||
public abstract int bindLayoutId();
|
public abstract int bindLayoutId();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onShow() {
|
||||||
|
super.onShow();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getImplLayoutId() {
|
protected int getImplLayoutId() {
|
||||||
return bindLayoutId();
|
return bindLayoutId();
|
||||||
@@ -36,4 +41,24 @@ public abstract class AbsDialogCenterPopupWindow extends CenterPopupView {
|
|||||||
buildDialog(builder);
|
buildDialog(builder);
|
||||||
builder.asCustom(this).show();
|
builder.asCustom(this).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dismiss监听
|
||||||
|
*/
|
||||||
|
private OnDismissListener onDismissListener;
|
||||||
|
public interface OnDismissListener{
|
||||||
|
void onDismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnDismissListener(OnDismissListener onDismissListener) {
|
||||||
|
this.onDismissListener = onDismissListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDismiss() {
|
||||||
|
super.onDismiss();
|
||||||
|
if (onDismissListener != null){
|
||||||
|
onDismissListener.onDismiss();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.google.gson.Gson;
|
|||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
import com.lxj.xpopup.core.BottomPopupView;
|
import com.lxj.xpopup.core.BottomPopupView;
|
||||||
import com.lxj.xpopup.enums.PopupPosition;
|
import com.lxj.xpopup.enums.PopupPosition;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.bean.CreateSudRoomModel;
|
import com.yunbao.common.bean.CreateSudRoomModel;
|
||||||
import com.yunbao.common.bean.CustomSidebarChildModel;
|
import com.yunbao.common.bean.CustomSidebarChildModel;
|
||||||
@@ -153,8 +154,6 @@ public class CreateSudGamePopup extends BottomPopupView {
|
|||||||
.asCustom(new SudGameListSelectPopup(getContext(), 4, customSidebarChildModels, interactionID))
|
.asCustom(new SudGameListSelectPopup(getContext(), 4, customSidebarChildModels, interactionID))
|
||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.room_back),
|
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.room_back),
|
||||||
@@ -282,7 +281,11 @@ public class CreateSudGamePopup extends BottomPopupView {
|
|||||||
public void onSuccess(CreateSudRoomModel data) {
|
public void onSuccess(CreateSudRoomModel data) {
|
||||||
if (isHome) {
|
if (isHome) {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
RouteUtil.forwardSudGameActivity(new Gson().toJson(data));
|
if(CommonAppConfig.getInstance().getConfig().isSw()){
|
||||||
|
RouteUtil.forwardSwSudGameActivity(new Gson().toJson(data),true,isHome);
|
||||||
|
}else{
|
||||||
|
RouteUtil.forwardRySudGameActivity(new Gson().toJson(data),true,isHome);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(0).setCreateSudRoomModel(data));
|
Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(0).setCreateSudRoomModel(data));
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package com.yunbao.common.dialog;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Looper;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@@ -15,27 +15,38 @@ import com.lzf.easyfloat.EasyFloat;
|
|||||||
import com.lzf.easyfloat.enums.ShowPattern;
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
||||||
import com.lzf.easyfloat.permission.PermissionUtils;
|
import com.lzf.easyfloat.permission.PermissionUtils;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.adapter.DebugDialogAdapter;
|
import com.yunbao.common.adapter.DebugDialogAdapter;
|
||||||
import com.yunbao.common.utils.AppManager;
|
import com.yunbao.common.utils.AppManager;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
|
|
||||||
public class DebugDialog {
|
public class DebugDialog {
|
||||||
RecyclerView recyclerView;
|
RecyclerView recyclerView;
|
||||||
TreeMap<String, String> params;
|
LinkedHashMap<String, View> params;
|
||||||
DebugDialogAdapter adapter;
|
DebugDialogAdapter adapter;
|
||||||
private static DebugDialog debugDialog;
|
private static DebugDialog debugDialog;
|
||||||
Context mContext;
|
Context mContext;
|
||||||
|
private ShowPattern showPattern = ShowPattern.CURRENT_ACTIVITY;
|
||||||
|
|
||||||
public static DebugDialog getInstance() {
|
private DebugDialogRunnable runnable;
|
||||||
|
|
||||||
|
public static void getInstance(DebugDialogRunnable runnable) {
|
||||||
if (debugDialog == null) {
|
if (debugDialog == null) {
|
||||||
debugDialog = new DebugDialog();
|
debugDialog = new DebugDialog(runnable);
|
||||||
|
} else {
|
||||||
|
runnable.run(debugDialog);
|
||||||
}
|
}
|
||||||
return debugDialog;
|
debugDialog.showPattern = ShowPattern.CURRENT_ACTIVITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkShow() {
|
||||||
|
return EasyFloat.isShow("debug");
|
||||||
}
|
}
|
||||||
|
|
||||||
public DebugDialog clear() {
|
public DebugDialog clear() {
|
||||||
@@ -44,25 +55,60 @@ public class DebugDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setParams(String tag, String msg) {
|
public void setParams(String tag, String msg) {
|
||||||
Log.i("debug弹窗", "setParams: "+tag+"|"+msg);
|
Log.i("debug弹窗", "setParams: " + tag + "|" + msg);
|
||||||
params.put(tag, msg);
|
if (params.containsKey(tag)) {
|
||||||
if (adapter != null)
|
((TextView) params.get(tag)).setText(tag + ":" + msg);
|
||||||
|
} else {
|
||||||
|
TextView textView = new TextView(mContext);
|
||||||
|
textView.setText(tag + ":" + msg);
|
||||||
|
params.put(tag, textView);
|
||||||
adapter.setParamMap(params);
|
adapter.setParamMap(params);
|
||||||
}
|
}
|
||||||
|
EasyFloat.updateFloat("debug");
|
||||||
|
}
|
||||||
|
|
||||||
private DebugDialog() {
|
private DebugDialog(DebugDialogRunnable runnable) {
|
||||||
if(params==null) {
|
this.runnable = runnable;
|
||||||
|
if (params == null) {
|
||||||
Log.i("debug弹窗", "DebugDialog: 初始化参数");
|
Log.i("debug弹窗", "DebugDialog: 初始化参数");
|
||||||
params = new TreeMap<>();
|
params = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
private void init(){
|
|
||||||
|
private void init() {
|
||||||
this.mContext = AppManager.getInstance().getMainActivity();
|
this.mContext = AppManager.getInstance().getMainActivity();
|
||||||
if (mContext == null) {
|
if (mContext == null) {
|
||||||
startWaitMainActivity();
|
startWaitMainActivity();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
runnable.run(this);
|
||||||
|
// createView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startWaitMainActivity() {
|
||||||
|
new Timer().schedule(new TimerTask() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Log.i("debug弹窗", "run: " + AppManager.getInstance().getMainActivity());
|
||||||
|
if (AppManager.getInstance().getMainActivity() != null) {
|
||||||
|
init();
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 0, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
EasyFloat.dismiss("debug");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void show() {
|
||||||
|
if (recyclerView != null) return;
|
||||||
|
if (showPattern == ShowPattern.CURRENT_ACTIVITY) {
|
||||||
|
createView();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (PermissionUtils.checkPermission(mContext)) {
|
if (PermissionUtils.checkPermission(mContext)) {
|
||||||
createView();
|
createView();
|
||||||
} else {
|
} else {
|
||||||
@@ -76,44 +122,51 @@ public class DebugDialog {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// createView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startWaitMainActivity() {
|
|
||||||
new Timer().schedule(new TimerTask() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Log.i("debug弹窗", "run: "+AppManager.getInstance().getMainActivity());
|
|
||||||
if (AppManager.getInstance().getMainActivity() != null) {
|
|
||||||
init();
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 0,1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void createView() {
|
protected void createView() {
|
||||||
recyclerView = new RecyclerView(mContext);
|
recyclerView = new RecyclerView(mContext);
|
||||||
adapter = new DebugDialogAdapter(mContext);
|
adapter = new DebugDialogAdapter(mContext);
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
|
recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
|
||||||
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
|
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||||
recyclerView.setAdapter(adapter);
|
recyclerView.setAdapter(adapter);
|
||||||
recyclerView.setBackgroundColor(Color.WHITE);
|
recyclerView.setBackgroundColor(Color.WHITE);
|
||||||
|
TextView textView = new TextView(mContext);
|
||||||
|
textView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
ToastUtil.show("debug弹窗:" + params.size());
|
||||||
|
EasyFloat.updateFloat("debug");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
params.put("发包时间:" + CommonAppConfig.BUILD_TIME, textView);
|
||||||
|
adapter.setParamMap(params);
|
||||||
|
|
||||||
EasyFloat.with(mContext)
|
EasyFloat.with(mContext)
|
||||||
.setTag("debug")
|
.setTag("debug")
|
||||||
.setShowPattern(ShowPattern.FOREGROUND)
|
.setShowPattern(this.showPattern)
|
||||||
.setLayout(recyclerView)
|
.setLayout(recyclerView)
|
||||||
.show();
|
.show();
|
||||||
if(!params.isEmpty()){
|
runnable.run(this);
|
||||||
|
|
||||||
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
adapter.setParamMap(params);
|
|
||||||
}
|
|
||||||
},1000);
|
|
||||||
Log.i("debug弹窗", "createView: 有值");
|
|
||||||
}
|
|
||||||
Log.i("debug弹窗", "createView: 创建");
|
Log.i("debug弹窗", "createView: 创建");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setView(String value, View view, View.OnClickListener onClickListener) {
|
||||||
|
if (params.containsKey(value)) {
|
||||||
|
params.get(value).setOnClickListener(onClickListener);
|
||||||
|
} else {
|
||||||
|
view.setOnClickListener(onClickListener);
|
||||||
|
params.put(value, view);
|
||||||
|
}
|
||||||
|
adapter.setParamMap(params);
|
||||||
|
EasyFloat.updateFloat("debug");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShowPattern(ShowPattern showPattern) {
|
||||||
|
this.showPattern = showPattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface DebugDialogRunnable {
|
||||||
|
void run(DebugDialog dialog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.text.Spanned;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.utils.DialogUitl;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
public class GuardBuyCouponTipsDialog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param context
|
||||||
|
* @param coin 钻石
|
||||||
|
* @param content 购买类型名称
|
||||||
|
* @param simpleCallback
|
||||||
|
*/
|
||||||
|
public static void showBuyOrRenewDialog(Context context, String coupon, String coin, String content,
|
||||||
|
DialogUitl.SimpleCallback3 simpleCallback) {
|
||||||
|
if (context instanceof Activity) {
|
||||||
|
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final Dialog dialog = new Dialog(context, R.style.dialog2);
|
||||||
|
dialog.setContentView(R.layout.dialog_guard_buy_coupon_tips);
|
||||||
|
dialog.setCancelable(true);
|
||||||
|
dialog.setCanceledOnTouchOutside(true);
|
||||||
|
TextView btn_confirm = dialog.findViewById(R.id.btn_confirm);
|
||||||
|
TextView content2 = dialog.findViewById(R.id.content2);
|
||||||
|
|
||||||
|
Spanned tips;
|
||||||
|
if (WordUtil.isNewZh()) {
|
||||||
|
tips = Html.fromHtml("<font color='#FFE0BF'>您有一張</font>"
|
||||||
|
+ "<font color='#FF9937'>" + content + "優惠券</font><br>"
|
||||||
|
+ "<font color='#FFE0BF'>開通/續費" + content + "(1個月)時,</font><br><font color='#FFE0BF'>可享</font>"
|
||||||
|
+ "<strong><font color='#FF9937'>" + coupon + "折</font></strong>"
|
||||||
|
+ "<font color='#FFE0BF'>優惠 (折後:</font>"
|
||||||
|
+ "<font color='#FF9937'>" + coin + "鑽</font>)<br>"
|
||||||
|
+ "<font color='#FFE0BF'>是否使用優惠券?</font>");
|
||||||
|
} else {
|
||||||
|
tips = Html.fromHtml("<font color='#FFE0BF'>You have a </font>"
|
||||||
|
+ "<font color='#FF9937'>" + content + " coupon</font>"
|
||||||
|
+ "<font color='#FFE0BF'> When activating/renewing " + content + "(1 month), you can enjoy a</font>"
|
||||||
|
+ "<strong><font color='#FF9937'> " + coupon + "% </font></strong>"
|
||||||
|
+ "<font color='#FFE0BF'>discount (After folding:</font>"
|
||||||
|
+ "<font color='#FF9937'>" + coin + " diamonds</font>"
|
||||||
|
+ "<font color='#FFE0BF'>)Do you want to use coupons?</font>");
|
||||||
|
}
|
||||||
|
content2.setText(tips);
|
||||||
|
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.findViewById(R.id.btn_cancel1).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
simpleCallback.onCancel();
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btn_confirm.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
simpleCallback.onConfirmClick(dialog);
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
public class GuardBuyTipsNewDialog {
|
||||||
|
/**
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
public static void showBuyOrRenewDialog(Context context) {
|
||||||
|
if (context instanceof Activity) {
|
||||||
|
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final Dialog dialog = new Dialog(context, R.style.dialog2);
|
||||||
|
dialog.setContentView(R.layout.dialog_guard_buy_tips);
|
||||||
|
dialog.setCancelable(true);
|
||||||
|
dialog.setCanceledOnTouchOutside(true);
|
||||||
|
TextView btn_confirm = dialog.findViewById(R.id.btn_confirm);
|
||||||
|
btn_confirm.setText(WordUtil.isNewZh() ? "確認" : "Confirm");
|
||||||
|
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
package com.yunbao.common.dialog;
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
@@ -9,12 +13,21 @@ import com.lxj.xpopup.XPopup;
|
|||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.activity.WebViewActivity;
|
import com.yunbao.common.activity.WebViewActivity;
|
||||||
import com.yunbao.common.bean.OpenAdModel;
|
import com.yunbao.common.bean.OpenAdModel;
|
||||||
|
import com.yunbao.common.event.JavascriptInterfaceEvent;
|
||||||
import com.yunbao.common.glide.ImgLoader;
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
import com.yunbao.common.utils.DpUtil;
|
||||||
|
import com.yunbao.common.utils.JavascriptInterfaceUtils;
|
||||||
|
import com.yunbao.common.utils.L;
|
||||||
|
import com.yunbao.common.utils.ScreenDimenUtil;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
|
public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
|
||||||
private ImageView mImageView;
|
|
||||||
private ImageView mClose;
|
private ImageView mClose;
|
||||||
|
private LinearLayout contentLayout;
|
||||||
private OpenAdModel model;
|
private OpenAdModel model;
|
||||||
private OnItemClickListener<OpenAdModel> mListener;
|
private OnItemClickListener<OpenAdModel> mListener;
|
||||||
|
|
||||||
@@ -27,6 +40,11 @@ public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
|
|||||||
@Override
|
@Override
|
||||||
public void buildDialog(XPopup.Builder builder) {
|
public void buildDialog(XPopup.Builder builder) {
|
||||||
builder.animationDuration(0);
|
builder.animationDuration(0);
|
||||||
|
builder.hasShadowBg(true);
|
||||||
|
if(model.getPopupSort()==2){
|
||||||
|
builder.dismissOnTouchOutside(false);
|
||||||
|
builder.dismissOnBackPressed(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,8 +69,63 @@ public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate() {
|
protected void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
mImageView = findViewById(R.id.img);
|
contentLayout = findViewById(R.id.content_layout);
|
||||||
mClose = findViewById(R.id.close);
|
mClose = findViewById(R.id.close);
|
||||||
|
if (model.getPopupSort() == 1) {
|
||||||
|
setImage();
|
||||||
|
} else {
|
||||||
|
setWeb();
|
||||||
|
}
|
||||||
|
|
||||||
|
mClose.setOnClickListener(v -> dismiss());
|
||||||
|
if (model.getShowTime() > 0) {
|
||||||
|
mClose.postDelayed(this::dismiss, model.getShowTime());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setWeb() {
|
||||||
|
WebView mWebView = new WebView(mContext);
|
||||||
|
mWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
|
||||||
|
mWebView.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext((Activity) mContext, mWebView).setPageClose(true).setLiveZhuangBana(false), "androidObject");
|
||||||
|
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口
|
||||||
|
mWebView.getSettings().setJavaScriptEnabled(true);
|
||||||
|
mWebView.getSettings().setDomStorageEnabled(true);
|
||||||
|
String appCachePath = mContext.getCacheDir().getAbsolutePath();
|
||||||
|
// mWebView.getSettings().setAppCachePath(appCachePath);
|
||||||
|
mWebView.getSettings().setAllowFileAccess(true);
|
||||||
|
mWebView.getSettings().setUseWideViewPort(true); // 关键点
|
||||||
|
mWebView.getSettings().setAllowFileAccess(true); // 允许访问文件
|
||||||
|
mWebView.setHorizontalScrollBarEnabled(false);
|
||||||
|
mWebView.setVerticalScrollBarEnabled(false);
|
||||||
|
mWebView.setWebViewClient(new WebViewClient() {
|
||||||
|
@Override
|
||||||
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||||
|
L.e("H5-------->" + url);
|
||||||
|
view.loadUrl(url);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPageFinished(WebView view, String url) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
String url=model.getUrl();
|
||||||
|
if(url.contains("?")){
|
||||||
|
url+="&uid="+ IMLoginManager.get(mContext).getUserInfo().getId()+"&token="+IMLoginManager.get(mContext).getUserInfo().getToken();
|
||||||
|
}else{
|
||||||
|
url+="?uid="+ IMLoginManager.get(mContext).getUserInfo().getId()+"&token="+IMLoginManager.get(mContext).getUserInfo().getToken();
|
||||||
|
}
|
||||||
|
mWebView.loadUrl(url);
|
||||||
|
contentLayout.addView(mWebView);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setImage() {
|
||||||
|
int width = ScreenDimenUtil.getInstance().getScreenWdith();
|
||||||
|
int height = (int) (width * 1.4);
|
||||||
|
|
||||||
|
ImageView mImageView = new ImageView(mContext);
|
||||||
|
mImageView.setLayoutParams(new LinearLayout.LayoutParams(width, height));
|
||||||
mImageView.setOnClickListener(v -> {
|
mImageView.setOnClickListener(v -> {
|
||||||
WebViewActivity.forward(mContext, model.getUrl(), model.getType() != OpenAdModel.TYPE_HOME);
|
WebViewActivity.forward(mContext, model.getUrl(), model.getType() != OpenAdModel.TYPE_HOME);
|
||||||
if (mListener != null) {
|
if (mListener != null) {
|
||||||
@@ -61,10 +134,12 @@ public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
|
|||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
mClose.setOnClickListener(v -> dismiss());
|
|
||||||
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
|
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
|
||||||
if (model.getShowTime() > 0) {
|
contentLayout.addView(mImageView);
|
||||||
mClose.postDelayed(this::dismiss, model.getShowTime());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
public void onJavascriptInterfaceEvent(JavascriptInterfaceEvent event) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,44 @@
|
|||||||
package com.yunbao.common.dialog;
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.ViewTreeObserver;
|
||||||
|
import android.view.WindowInsets;
|
||||||
|
import android.webkit.WebResourceRequest;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
||||||
|
|
||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.activity.WebViewActivity;
|
import com.yunbao.common.activity.WebViewActivity;
|
||||||
import com.yunbao.common.bean.OpenAdModel;
|
import com.yunbao.common.bean.OpenAdModel;
|
||||||
|
import com.yunbao.common.event.JavascriptInterfaceEvent;
|
||||||
import com.yunbao.common.glide.ImgLoader;
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.utils.DpUtil;
|
import com.yunbao.common.utils.DpUtil;
|
||||||
|
import com.yunbao.common.utils.JavascriptInterfaceUtils;
|
||||||
|
import com.yunbao.common.utils.L;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
import com.yunbao.common.utils.ScreenDimenUtil;
|
import com.yunbao.common.utils.ScreenDimenUtil;
|
||||||
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
|
public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
|
||||||
private ImageView mImageView;
|
private ImageView mImageView;
|
||||||
|
private LinearLayout contentLayout;
|
||||||
private ImageView mClose;
|
private ImageView mClose;
|
||||||
private OpenAdModel model;
|
private OpenAdModel model;
|
||||||
private OnItemClickListener<OpenAdModel> mListener;
|
private OnItemClickListener<OpenAdModel> mListener;
|
||||||
@@ -39,7 +59,8 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildDialog(XPopup.Builder builder) {
|
public void buildDialog(XPopup.Builder builder) {
|
||||||
builder.hasShadowBg(false);
|
builder.hasShadowBg(true);
|
||||||
|
builder.shadowBgColor(Color.parseColor("#80000000"));
|
||||||
builder.animationDuration(0);
|
builder.animationDuration(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,12 +82,103 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate() {
|
protected void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
Log.e("-----弹窗-----", "onCreate: 创建弹窗" );
|
Log.e("-----弹窗-----", "onCreate: 创建弹窗");
|
||||||
mImageView = findViewById(R.id.img);
|
contentLayout = findViewById(R.id.content_layout);
|
||||||
mClose = findViewById(R.id.close);
|
mClose = findViewById(R.id.close);
|
||||||
|
|
||||||
|
|
||||||
|
contentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||||
|
boolean isShow = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onGlobalLayout() {
|
||||||
|
if (isShow)
|
||||||
|
return;
|
||||||
|
isShow = true;
|
||||||
|
int width = contentLayout.getWidth() - DpUtil.dp2px(20);
|
||||||
|
int height = (int) (width * 1.5);
|
||||||
|
if (model.getModel() == OpenAdModel.MODEL_SQUARE) {
|
||||||
|
height = (int) (width * 1.2);
|
||||||
|
}
|
||||||
|
Log.i("-----弹窗-----", "高度:" + height + " 宽度:" + width + " 屏幕宽度: " + ScreenDimenUtil.getInstance().getScreenWdith());
|
||||||
|
/*DebugDialog.getInstance(new DebugDialog.DebugDialogRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run(DebugDialog dialog) {
|
||||||
|
dialog.setShowPattern(ShowPattern.ALL_TIME);
|
||||||
|
dialog.show();
|
||||||
|
int width = contentLayout.getWidth() - DpUtil.dp2px(10);
|
||||||
|
int height = (int) (width * 1.5);
|
||||||
|
if (model.getModel() == OpenAdModel.MODEL_SQUARE) {
|
||||||
|
height = (int) (width * 1.2);
|
||||||
|
}
|
||||||
|
Log.i("-----弹窗-----", "弹框debug高宽 高度:" + height + " 宽度:" + width);
|
||||||
|
dialog.setParams(model.getName() + "弹框高宽", "高度:" + height + " 宽度:" + width);
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
if (model.getPopupSort() == 1) {
|
||||||
|
setImage(model, width, height);
|
||||||
findViewById(R.id.layout).setOnClickListener(v -> dismiss());
|
findViewById(R.id.layout).setOnClickListener(v -> dismiss());
|
||||||
|
} else {
|
||||||
|
setWeb(model, width, height);
|
||||||
|
}
|
||||||
|
mClose.setOnClickListener(v -> dismiss());
|
||||||
|
if (model.getShowTime() > 0) {
|
||||||
|
mClose.postDelayed(OpenAdCenterDialogPopup.this::dismiss, model.getShowTime());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setWeb(OpenAdModel model, int width, int height) {
|
||||||
|
WebView mWebView = new WebView(mContext);
|
||||||
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
|
||||||
|
params.gravity = Gravity.CENTER;
|
||||||
|
mWebView.setLayoutParams(params);
|
||||||
|
mWebView.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext((Activity) mContext, mWebView).setPageClose(true).setLiveZhuangBana(false), "androidObject");
|
||||||
|
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口
|
||||||
|
mWebView.getSettings().setJavaScriptEnabled(true);
|
||||||
|
mWebView.getSettings().setDomStorageEnabled(true);
|
||||||
|
String appCachePath = mContext.getCacheDir().getAbsolutePath();
|
||||||
|
// mWebView.getSettings().setAppCachePath(appCachePath);
|
||||||
|
mWebView.getSettings().setAllowFileAccess(true);
|
||||||
|
mWebView.getSettings().setUseWideViewPort(true); // 关键点
|
||||||
|
mWebView.getSettings().setAllowFileAccess(true); // 允许访问文件
|
||||||
|
mWebView.setHorizontalScrollBarEnabled(false);
|
||||||
|
mWebView.setVerticalScrollBarEnabled(false);
|
||||||
|
mWebView.setWebViewClient(new WebViewClient() {
|
||||||
|
@Override
|
||||||
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||||
|
L.e("H5-------->" + url);
|
||||||
|
view.loadUrl(url);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPageFinished(WebView view, String url) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
String url = model.getUrl();
|
||||||
|
if (url.contains("?")) {
|
||||||
|
url += "&uid=" + IMLoginManager.get(mContext).getUserInfo().getId() + "&token=" + IMLoginManager.get(mContext).getUserInfo().getToken();
|
||||||
|
} else {
|
||||||
|
url += "?uid=" + IMLoginManager.get(mContext).getUserInfo().getId() + "&token=" + IMLoginManager.get(mContext).getUserInfo().getToken();
|
||||||
|
}
|
||||||
|
Log.i("-----弹窗-----", "setWeb: " + url);
|
||||||
|
mWebView.loadUrl(url);
|
||||||
|
contentLayout.addView(mWebView);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setImage(OpenAdModel model, int width, int height) {
|
||||||
|
mImageView = new ImageView(mContext);
|
||||||
|
mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
|
||||||
|
params.gravity = Gravity.CENTER;
|
||||||
|
mImageView.setLayoutParams(params);
|
||||||
|
|
||||||
mImageView.setOnClickListener(v -> {
|
mImageView.setOnClickListener(v -> {
|
||||||
if("home_page_banner_battle".equals(model.getOriginalUrl())){
|
if ("home_page_banner_battle".equals(model.getOriginalUrl())) {
|
||||||
RouteUtil.forwardBattlePass();
|
RouteUtil.forwardBattlePass();
|
||||||
dismiss();
|
dismiss();
|
||||||
return;
|
return;
|
||||||
@@ -78,19 +190,12 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
|
|||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
mClose.setOnClickListener(v -> dismiss());
|
|
||||||
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
|
ImgLoader.display(mContext, model.getImageUrl(), mImageView);
|
||||||
int width = ScreenDimenUtil.getInstance().getScreenWdith() - DpUtil.dp2px(40);
|
contentLayout.addView(mImageView);
|
||||||
int height = (int) (width * 1.4);
|
|
||||||
if (model.getModel() == OpenAdModel.MODEL_SQUARE) {
|
|
||||||
height = width;
|
|
||||||
}
|
|
||||||
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mImageView.getLayoutParams();
|
|
||||||
params.width = width;
|
|
||||||
params.height = height;
|
|
||||||
mImageView.setLayoutParams(params);
|
|
||||||
if (model.getShowTime() > 0) {
|
|
||||||
mClose.postDelayed(this::dismiss, model.getShowTime());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
public void onJavascriptInterfaceEvent(JavascriptInterfaceEvent event) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.yunbao.common.dialog;
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -16,6 +19,7 @@ import com.yunbao.common.http.base.HttpCallback;
|
|||||||
import com.yunbao.common.http.live.LiveNetManager;
|
import com.yunbao.common.http.live.LiveNetManager;
|
||||||
import com.yunbao.common.interfaces.OnItemClickListener;
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||||
@@ -26,18 +30,19 @@ import java.math.BigDecimal;
|
|||||||
* 战令等级 经验
|
* 战令等级 经验
|
||||||
*/
|
*/
|
||||||
public class OrderLevelPopupWindow extends CenterPopupView {
|
public class OrderLevelPopupWindow extends CenterPopupView {
|
||||||
private TextView orderLevel, orderLevelDiamond, balanceDiamond, current, expText;
|
private TextView orderLevelDiamond, balanceDiamond, current, expText;
|
||||||
private int currentExperience, totalExperience;//当前经验,全部经验
|
private int currentExperience, totalExperience;//当前经验,全部经验
|
||||||
private String buyExp = "100", currentLevel, balance;
|
private String buyExp = "1", currentLevel, balance;
|
||||||
private ProgressBar progressBar;
|
private ProgressBar progressBar;
|
||||||
private OrderLevelCallback orderLevelCallback;
|
private OrderLevelCallback orderLevelCallback;
|
||||||
private long maxExp;
|
private long maxExp;
|
||||||
private BattlePassUserInfoBean userInfoBean;
|
private BattlePassUserInfoBean userInfoBean;
|
||||||
|
private Context mContext;
|
||||||
|
private EditText orderLevel;
|
||||||
|
|
||||||
public OrderLevelPopupWindow(@NonNull Context context, BattlePassUserInfoBean userInfoBean,
|
public OrderLevelPopupWindow(@NonNull Context context, BattlePassUserInfoBean userInfoBean, int mCurrentExperience, int mTotalExperience, String mCurrentLevel, String mBalance, long maxExp, OrderLevelCallback mOrderLevelCallback) {
|
||||||
int mCurrentExperience, int mTotalExperience,
|
|
||||||
String mCurrentLevel, String mBalance, long maxExp, OrderLevelCallback mOrderLevelCallback) {
|
|
||||||
super(context);
|
super(context);
|
||||||
|
this.mContext = context;
|
||||||
this.userInfoBean = userInfoBean;
|
this.userInfoBean = userInfoBean;
|
||||||
currentExperience = mCurrentExperience;
|
currentExperience = mCurrentExperience;
|
||||||
totalExperience = mTotalExperience;
|
totalExperience = mTotalExperience;
|
||||||
@@ -67,15 +72,15 @@ public class OrderLevelPopupWindow extends CenterPopupView {
|
|||||||
progressBar.setProgress(currentExperience);
|
progressBar.setProgress(currentExperience);
|
||||||
expText.setText(String.format("%s/%s", userInfoBean.getBattlePassExp(), userInfoBean.getNextLevelExp()));
|
expText.setText(String.format("%s/%s", userInfoBean.getBattlePassExp(), userInfoBean.getNextLevelExp()));
|
||||||
current.setText(String.format("Lv%s", currentLevel));
|
current.setText(String.format("Lv%s", currentLevel));
|
||||||
balanceDiamond.setText(balance);
|
balanceDiamond.setText((WordUtil.isNewZh() ? "剩餘:" : "Balance:") + balance);
|
||||||
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
|
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
float exp = new BigDecimal(buyExp).floatValue();
|
float exp = new BigDecimal(buyExp).floatValue();
|
||||||
if (exp > 100) {
|
if (exp > 1) {
|
||||||
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("100"));
|
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("1"));
|
||||||
buyExp = String.valueOf(buyExpBigDecimal.intValue());
|
buyExp = String.valueOf(buyExpBigDecimal.intValue());
|
||||||
orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue()));
|
orderLevelDiamond.setText("00 = " + buyExp + "00");
|
||||||
orderLevel.setText(buyExp);
|
orderLevel.setText(buyExp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,15 +89,14 @@ public class OrderLevelPopupWindow extends CenterPopupView {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
float exp = new BigDecimal(buyExp).floatValue();
|
float exp = new BigDecimal(buyExp).floatValue();
|
||||||
if (exp < maxExp && exp < 10000) {
|
if (exp < maxExp && (exp + 1) < 10000) {
|
||||||
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("100"));
|
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("1"));
|
||||||
buyExp = String.valueOf(buyExpBigDecimal.intValue());
|
buyExp = String.valueOf(buyExpBigDecimal.intValue());
|
||||||
orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue()));
|
orderLevelDiamond.setText("00 = " + buyExp + "00");
|
||||||
orderLevel.setText(buyExp);
|
orderLevel.setText(buyExp);
|
||||||
} else if (exp >= maxExp) {
|
} else if (exp >= maxExp) {
|
||||||
ToastUtil.show(WordUtil.isNewZh() ? "经验已滿" : "Experience full");
|
ToastUtil.show(WordUtil.isNewZh() ? "經驗超出,僅需" + maxExp + "經驗可達滿级" : "Exp exceeds.Only " + maxExp + " exp is needed to reach the max level.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.war_order_close), new ViewClicksAntiShake.ViewClicksCallBack() {
|
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.war_order_close), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||||
@@ -101,14 +105,34 @@ public class OrderLevelPopupWindow extends CenterPopupView {
|
|||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
orderLevel.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||||
|
buyExp = charSequence.toString();
|
||||||
|
orderLevelDiamond.setText("00 = " + charSequence.toString() + "00");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable editable) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.buying_experience), new ViewClicksAntiShake.ViewClicksCallBack() {
|
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.buying_experience), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onViewClicks() {
|
public void onViewClicks() {
|
||||||
LiveNetManager.get(getContext())
|
if(StringUtil.isEmpty(orderLevel.getText().toString())||"0".equals(orderLevel.getText().toString())){
|
||||||
.buyingExperiencePoint(buyExp, new HttpCallback<ResponseModel<Object>>() {
|
ToastUtil.show(WordUtil.isNewZh()?"输入数字不可为0":"The input number cannot be 0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Integer.parseInt(orderLevel.getText().toString()+"00") <= maxExp) {
|
||||||
|
LiveNetManager.get(getContext()).buyingExperiencePoint(buyExp + "00", new HttpCallback<ResponseModel<Object>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ResponseModel<Object> data) {
|
public void onSuccess(ResponseModel<Object> data) {
|
||||||
|
|
||||||
if (orderLevelCallback != null) {
|
if (orderLevelCallback != null) {
|
||||||
orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg());
|
orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg());
|
||||||
}
|
}
|
||||||
@@ -123,15 +147,17 @@ public class OrderLevelPopupWindow extends CenterPopupView {
|
|||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
ToastUtil.show(WordUtil.isNewZh() ? "經驗超出,僅需" + maxExp + "經驗可達滿级" : "Exp exceeds.Only " + maxExp + " exp is needed to reach the max level.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
IMLoginManager.get(getContext())
|
IMLoginManager.get(getContext()).updateUserCoin(new OnItemClickListener<JSONObject>() {
|
||||||
.updateUserCoin(new OnItemClickListener<JSONObject>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(JSONObject bean, int position) {
|
public void onItemClick(JSONObject bean, int position) {
|
||||||
if (bean != null) {
|
if (bean != null) {
|
||||||
balance = bean.getString("coin");
|
balance = bean.getString("coin");
|
||||||
balanceDiamond.setText(balance);
|
balanceDiamond.setText((WordUtil.isNewZh() ? "剩餘:" : "Balance:") + balance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,187 @@
|
|||||||
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.CountDownTimer;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.appcompat.widget.AppCompatImageView;
|
||||||
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
|
|
||||||
|
import com.blankj.utilcode.util.LogUtils;
|
||||||
|
import com.lxj.xpopup.XPopup;
|
||||||
|
import com.makeramen.roundedimageview.RoundedImageView;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.bean.SudSettleBean;
|
||||||
|
import com.yunbao.common.event.CheckRemainingBalanceEvent;
|
||||||
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
|
import com.yunbao.common.utils.Bus;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 双人小游戏结算弹窗
|
||||||
|
*/
|
||||||
|
public class SudGameDoubleDialog extends AbsDialogCenterPopupWindow{
|
||||||
|
public SudGameDoubleDialog(@NonNull Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int bindLayoutId() {
|
||||||
|
return R.layout.dialog_sub_double;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AppCompatImageView sub_win_hat,sub_leave,sub_again,sub_title;
|
||||||
|
private RoundedImageView sub_win_head,sub_loss_head;
|
||||||
|
private AppCompatTextView sub_win_name,sub_win_score,sub_loss_name,sub_loss_score,sub_time;
|
||||||
|
private CountDownTimer countDownTimer;
|
||||||
|
private List<SudSettleBean> settleBeans = new ArrayList<>();
|
||||||
|
private boolean containMe;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildDialog(XPopup.Builder builder) {
|
||||||
|
builder.dismissOnTouchOutside(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
sub_title = findViewById(R.id.sub_title);//弹窗标题
|
||||||
|
sub_win_hat = findViewById(R.id.sub_win_hat);//胜利皇冠(平局隐藏)
|
||||||
|
sub_leave = findViewById(R.id.sub_leave);//离开按钮
|
||||||
|
sub_again = findViewById(R.id.sub_again);//再来一局按钮
|
||||||
|
sub_win_head = findViewById(R.id.sub_win_head);//胜利方头像
|
||||||
|
sub_loss_head = findViewById(R.id.sub_loss_head);//失败方头像
|
||||||
|
sub_win_name = findViewById(R.id.sub_win_name);//胜利方昵称
|
||||||
|
sub_win_score = findViewById(R.id.sub_win_score);//胜利方分数
|
||||||
|
sub_loss_name = findViewById(R.id.sub_loss_name);//失败方昵称
|
||||||
|
sub_loss_score = findViewById(R.id.sub_loss_score);//失败方分数
|
||||||
|
sub_time = findViewById(R.id.sub_time);//关闭倒计时
|
||||||
|
|
||||||
|
|
||||||
|
initData();
|
||||||
|
|
||||||
|
if (WordUtil.isNewZh()){
|
||||||
|
sub_leave.setImageResource(R.mipmap.sub_leave_zh);
|
||||||
|
sub_again.setImageResource(R.mipmap.sub_again_zh);
|
||||||
|
}else {
|
||||||
|
sub_leave.setImageResource(R.mipmap.sub_leave_en);
|
||||||
|
sub_again.setImageResource(R.mipmap.sub_again_en);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_leave.setOnClickListener(v-> destroyDialog());
|
||||||
|
sub_again.setOnClickListener(v-> {
|
||||||
|
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false));
|
||||||
|
destroyDialog();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
private void initData() {
|
||||||
|
if (settleBeans.size() == 2){
|
||||||
|
sortByWinNum(settleBeans);
|
||||||
|
SudSettleBean sudSettleBean1 = settleBeans.get(0); // 第一名
|
||||||
|
SudSettleBean sudSettleBean2 = settleBeans.get(1); // 第二名
|
||||||
|
checkMe(sudSettleBean1.getUid(),sudSettleBean2.getUid());//判断这场对局是不是包含自己
|
||||||
|
|
||||||
|
// 检查是否是当前用户
|
||||||
|
boolean isFirstMe = CommonAppConfig.getInstance().getUid().equals(sudSettleBean1.getUid());
|
||||||
|
boolean isDraw = sudSettleBean1.getWin_num() == sudSettleBean2.getWin_num();
|
||||||
|
boolean isZh = WordUtil.isNewZh();
|
||||||
|
|
||||||
|
if (containMe) {
|
||||||
|
// 当前用户在游戏中
|
||||||
|
SudSettleBean winBean = isFirstMe ? sudSettleBean1 : sudSettleBean2;
|
||||||
|
SudSettleBean lossBean = isFirstMe ? sudSettleBean2 : sudSettleBean1;
|
||||||
|
|
||||||
|
ImgLoader.display(mContext, winBean.getAvatar_url(), sub_win_head);
|
||||||
|
ImgLoader.display(mContext, lossBean.getAvatar_url(), sub_loss_head);
|
||||||
|
sub_win_name.setText(winBean.getNick_name());
|
||||||
|
sub_loss_name.setText(lossBean.getNick_name());
|
||||||
|
|
||||||
|
sub_win_score.setText(winBean.getWin_num() > 0 ? "+" + winBean.getWin_num() : String.valueOf(winBean.getWin_num()));
|
||||||
|
sub_loss_score.setText(String.valueOf(lossBean.getWin_num()));
|
||||||
|
|
||||||
|
if (isDraw) {
|
||||||
|
// 平局
|
||||||
|
sub_title.setImageResource(isZh ? R.mipmap.sub_draw_zh : R.mipmap.sub_draw_en);
|
||||||
|
sub_win_hat.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
// 胜利或失败
|
||||||
|
sub_title.setImageResource(isZh ? (isFirstMe ? R.mipmap.sub_win_zh : R.mipmap.sub_loss_zh) : (isFirstMe ? R.mipmap.sub_win_en : R.mipmap.sub_loss_en));
|
||||||
|
sub_win_hat.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 当前用户不在游戏中
|
||||||
|
ImgLoader.display(mContext, sudSettleBean1.getAvatar_url(), sub_win_head);
|
||||||
|
ImgLoader.display(mContext, sudSettleBean2.getAvatar_url(), sub_loss_head);
|
||||||
|
sub_win_name.setText(sudSettleBean1.getNick_name());
|
||||||
|
sub_loss_name.setText(sudSettleBean2.getNick_name());
|
||||||
|
|
||||||
|
sub_win_score.setText(sudSettleBean1.getWin_num() > 0 ? "+" + sudSettleBean1.getWin_num() : String.valueOf(sudSettleBean1.getWin_num()));
|
||||||
|
sub_loss_score.setText(String.valueOf(sudSettleBean2.getWin_num()));
|
||||||
|
|
||||||
|
if (isDraw) {
|
||||||
|
// 平局
|
||||||
|
sub_title.setImageResource(isZh ? R.mipmap.sub_draw_zh : R.mipmap.sub_draw_en);
|
||||||
|
sub_win_hat.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
// 非当前用户的胜利
|
||||||
|
sub_title.setImageResource(isZh ? R.mipmap.sub_win_zh : R.mipmap.sub_win_en);
|
||||||
|
sub_win_hat.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkMe(String id1,String id2){
|
||||||
|
containMe = CommonAppConfig.getInstance().getUid().equals(id1) || CommonAppConfig.getInstance().getUid().equals(id2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onShow() {
|
||||||
|
super.onShow();
|
||||||
|
//关闭倒计时
|
||||||
|
countDownTimer = new CountDownTimer(10000, 1000){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick(long l) {
|
||||||
|
sub_time.setText(String.valueOf((l+500)/1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFinish() {
|
||||||
|
destroyDialog();
|
||||||
|
}
|
||||||
|
}.start();
|
||||||
|
initData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSudSettleList(List<SudSettleBean> data){
|
||||||
|
settleBeans.clear();
|
||||||
|
settleBeans.addAll(data);
|
||||||
|
LogUtils.e("yqw=====>"+settleBeans);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortByWinNum(List<SudSettleBean> list){
|
||||||
|
// 按照胜利数排序 settleBeans 列表
|
||||||
|
Collections.sort(list, (bean1, bean2) -> {
|
||||||
|
return Integer.compare(bean2.getWin_num(), bean1.getWin_num()); // 从大到小排序
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void destroyDialog(){
|
||||||
|
dismiss();
|
||||||
|
countDownTimer.cancel();
|
||||||
|
countDownTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.CountDownTimer;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.appcompat.widget.AppCompatImageView;
|
||||||
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import com.lxj.xpopup.XPopup;
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.adapter.SudGameAdapter;
|
||||||
|
import com.yunbao.common.bean.SudSettleBean;
|
||||||
|
import com.yunbao.common.event.CheckRemainingBalanceEvent;
|
||||||
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
|
import com.yunbao.common.utils.Bus;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 多人小游戏弹窗
|
||||||
|
*/
|
||||||
|
public class SudGameMultipleDialog extends AbsDialogCenterPopupWindow{
|
||||||
|
public SudGameMultipleDialog(@NonNull Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int bindLayoutId() {
|
||||||
|
return R.layout.dialog_sub_multiple;
|
||||||
|
}
|
||||||
|
|
||||||
|
private RecyclerView sub_recycle_rank;
|
||||||
|
private AppCompatImageView sub_leave,sub_again,sub_title;
|
||||||
|
private AppCompatTextView sub_time;
|
||||||
|
private CountDownTimer countDownTimer;
|
||||||
|
private SudGameAdapter sudGameAdapter;
|
||||||
|
private final List<SudSettleBean> settleBeans = new ArrayList<>();
|
||||||
|
@Override
|
||||||
|
public void buildDialog(XPopup.Builder builder) {
|
||||||
|
builder.dismissOnTouchOutside(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
sub_recycle_rank = findViewById(R.id.sub_recycle_rank);//分数排名
|
||||||
|
sub_leave = findViewById(R.id.sub_leave);//离开按钮
|
||||||
|
sub_again = findViewById(R.id.sub_again);//再来一局按钮
|
||||||
|
sub_title = findViewById(R.id.sub_title);//弹窗标题
|
||||||
|
sub_time = findViewById(R.id.sub_time);//关闭倒计时
|
||||||
|
|
||||||
|
if (WordUtil.isNewZh()){
|
||||||
|
sub_leave.setImageResource(R.mipmap.sub_leave_zh);
|
||||||
|
sub_again.setImageResource(R.mipmap.sub_again_zh);
|
||||||
|
sub_title.setImageResource(R.mipmap.sub_over_zh);
|
||||||
|
}else {
|
||||||
|
sub_leave.setImageResource(R.mipmap.sub_leave_en);
|
||||||
|
sub_again.setImageResource(R.mipmap.sub_again_en);
|
||||||
|
sub_title.setImageResource(R.mipmap.sub_over_en);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_leave.setOnClickListener(v-> destroyDialog());
|
||||||
|
sub_again.setOnClickListener(v-> {
|
||||||
|
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false));
|
||||||
|
destroyDialog();
|
||||||
|
});
|
||||||
|
|
||||||
|
//设置排名数据
|
||||||
|
sudGameAdapter = new SudGameAdapter(mContext,settleBeans);
|
||||||
|
sub_recycle_rank.setLayoutManager(new LinearLayoutManager(mContext));
|
||||||
|
sub_recycle_rank.setAdapter(sudGameAdapter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
@Override
|
||||||
|
protected void onShow() {
|
||||||
|
super.onShow();
|
||||||
|
//关闭倒计时
|
||||||
|
countDownTimer = new CountDownTimer(10000, 1000){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick(long l) {
|
||||||
|
sub_time.setText(String.valueOf((l+500)/1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFinish() {
|
||||||
|
destroyDialog();
|
||||||
|
}
|
||||||
|
}.start();
|
||||||
|
sudGameAdapter.notifyDataSetChanged();
|
||||||
|
// limitItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSudSettleList(List<SudSettleBean> data){
|
||||||
|
settleBeans.clear();
|
||||||
|
settleBeans.addAll(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置最多显示的高度
|
||||||
|
private void limitItem(){
|
||||||
|
sub_recycle_rank.post(() -> {
|
||||||
|
View itemView = sub_recycle_rank.getChildAt(0);
|
||||||
|
if (itemView != null){
|
||||||
|
int height = (int) (itemView.getHeight()*3.5);
|
||||||
|
ViewGroup.LayoutParams layoutParams = sub_recycle_rank.getLayoutParams();
|
||||||
|
layoutParams.height = height;
|
||||||
|
sub_recycle_rank.setLayoutParams(layoutParams);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void destroyDialog(){
|
||||||
|
dismiss();
|
||||||
|
countDownTimer.cancel();
|
||||||
|
countDownTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
package com.yunbao.common.dialog;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.appcompat.widget.AppCompatImageView;
|
||||||
|
import androidx.appcompat.widget.LinearLayoutCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import com.lxj.xpopup.XPopup;
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
public class SudLoadDialog extends AbsDialogCenterPopupWindow{
|
||||||
|
public SudLoadDialog(@NonNull Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LinearLayoutCompat sud_load_bg;
|
||||||
|
private AppCompatImageView sud_load,sud_load_skip,sud_load_again;
|
||||||
|
private ProgressBar sud_load_bar_double,sud_load_bar_multiple;
|
||||||
|
private int isDouble = 0;//游戏模式 1:双人对战 2:多人游戏
|
||||||
|
private int clickStatus = 0;//0:什么都不点击 1:点击跳过 2:点击再来一局
|
||||||
|
|
||||||
|
public int getClickStatus() {
|
||||||
|
return clickStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClickStatus(int clickStatus) {
|
||||||
|
this.clickStatus = clickStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildDialog(XPopup.Builder builder) {
|
||||||
|
builder.dismissOnTouchOutside(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int bindLayoutId() {
|
||||||
|
return R.layout.dialog_sud_load;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
sud_load_bg = findViewById(R.id.sud_load_bg);
|
||||||
|
sud_load = findViewById(R.id.sud_load);
|
||||||
|
sud_load_skip = findViewById(R.id.sud_load_skip);
|
||||||
|
sud_load_again = findViewById(R.id.sud_load_again);
|
||||||
|
sud_load_bar_double = findViewById(R.id.sud_load_bar_double);
|
||||||
|
sud_load_bar_multiple = findViewById(R.id.sud_load_bar_multiple);
|
||||||
|
|
||||||
|
if (WordUtil.isNewZh()){
|
||||||
|
sud_load.setImageResource(R.mipmap.sud_load_zh);
|
||||||
|
sud_load_skip.setImageResource(R.mipmap.sud_load_skip_zh);
|
||||||
|
sud_load_again.setImageResource(R.mipmap.sub_again_zh);
|
||||||
|
}else {
|
||||||
|
sud_load.setImageResource(R.mipmap.sud_load_en);
|
||||||
|
sud_load_skip.setImageResource(R.mipmap.sud_load_skip_en);
|
||||||
|
sud_load_again.setImageResource(R.mipmap.sub_again_en);
|
||||||
|
}
|
||||||
|
|
||||||
|
sud_load_skip.setOnClickListener(v->{
|
||||||
|
clickStatus = 1;
|
||||||
|
dismiss();
|
||||||
|
});
|
||||||
|
|
||||||
|
sud_load_again.setOnClickListener(v->{
|
||||||
|
clickStatus = 2;
|
||||||
|
dismiss();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onShow() {
|
||||||
|
super.onShow();
|
||||||
|
if (isDouble == 1){
|
||||||
|
sud_load_bg.setBackground(ContextCompat.getDrawable(mContext,R.mipmap.sud_load_bg_double));
|
||||||
|
sud_load_bar_double.setVisibility(View.VISIBLE);
|
||||||
|
sud_load_bar_multiple.setVisibility(View.GONE);
|
||||||
|
}else {
|
||||||
|
sud_load_bg.setBackground(ContextCompat.getDrawable(mContext,R.mipmap.sud_load_bg_multiple));
|
||||||
|
sud_load_bar_double.setVisibility(View.GONE);
|
||||||
|
sud_load_bar_multiple.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
// new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||||
|
// if (this.isShow()){
|
||||||
|
// dismiss();
|
||||||
|
// }
|
||||||
|
// },10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDouble(int isDouble){
|
||||||
|
this.isDouble = isDouble;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,6 +37,8 @@ public class AllServerNotifyFFGGGDJANEvent extends BaseModel {
|
|||||||
private List<ButtonStyleDTO> buttonStyle;
|
private List<ButtonStyleDTO> buttonStyle;
|
||||||
@SerializedName("h5_type")
|
@SerializedName("h5_type")
|
||||||
private String h5Type;
|
private String h5Type;
|
||||||
|
@SerializedName("left_image")
|
||||||
|
private String leftImage;
|
||||||
|
|
||||||
public String getH5Type() {
|
public String getH5Type() {
|
||||||
return h5Type;
|
return h5Type;
|
||||||
@@ -47,6 +49,14 @@ public class AllServerNotifyFFGGGDJANEvent extends BaseModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLeftImage() {
|
||||||
|
return leftImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLeftImage(String leftImage) {
|
||||||
|
this.leftImage = leftImage;
|
||||||
|
}
|
||||||
|
|
||||||
public String getMethod() {
|
public String getMethod() {
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,22 @@
|
|||||||
package com.yunbao.common.event;
|
package com.yunbao.common.event;
|
||||||
|
|
||||||
import com.yunbao.common.bean.BaseModel;
|
import com.yunbao.common.bean.BaseModel;
|
||||||
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
|
|
||||||
public class CheckRemainingBalanceEvent extends BaseModel {
|
public class CheckRemainingBalanceEvent extends BaseModel {
|
||||||
public int seatIndex=0;
|
public int seatIndex=0;
|
||||||
private String SudMGPMGState;
|
private String SudMGPMGState;
|
||||||
|
private boolean subReady = false;//是否直接自动准备
|
||||||
|
private SudMGPMGState.MGCommonGameSettle mgCommonGameSettle;//结算数据
|
||||||
|
|
||||||
|
public SudMGPMGState.MGCommonGameSettle getMgCommonGameSettle() {
|
||||||
|
return mgCommonGameSettle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CheckRemainingBalanceEvent setMgCommonGameSettle(SudMGPMGState.MGCommonGameSettle mgCommonGameSettle) {
|
||||||
|
this.mgCommonGameSettle = mgCommonGameSettle;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public String getSudMGPMGState() {
|
public String getSudMGPMGState() {
|
||||||
return SudMGPMGState;
|
return SudMGPMGState;
|
||||||
@@ -23,4 +35,13 @@ public class CheckRemainingBalanceEvent extends BaseModel {
|
|||||||
this.seatIndex = seatIndex;
|
this.seatIndex = seatIndex;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CheckRemainingBalanceEvent setSubReady(boolean subReady){
|
||||||
|
this.subReady = subReady;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getSubReady(){
|
||||||
|
return subReady;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,15 @@ public class SudGameSocketImEvent extends BaseModel {
|
|||||||
private String method;
|
private String method;
|
||||||
@SerializedName("equipment")
|
@SerializedName("equipment")
|
||||||
private String equipment;
|
private String equipment;
|
||||||
|
private String time;
|
||||||
|
|
||||||
|
public String getTime() {
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTime(String time) {
|
||||||
|
this.time = time;
|
||||||
|
}
|
||||||
|
|
||||||
public String getAction() {
|
public String getAction() {
|
||||||
return action;
|
return action;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.bumptech.glide.request.RequestOptions;
|
|||||||
import com.bumptech.glide.request.target.CustomTarget;
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
import com.bumptech.glide.request.transition.Transition;
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -226,14 +227,20 @@ public class ImgLoader {
|
|||||||
.skipMemoryCache(SKIP_MEMORY_CACHE)
|
.skipMemoryCache(SKIP_MEMORY_CACHE)
|
||||||
.into(imageView);
|
.into(imageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void displayDrawable(Context context, String url, final DrawableCallback callback) {
|
public static void displayDrawable(Context context, String url, final DrawableCallback callback) {
|
||||||
|
displayDrawable(context, url, -1, -1, callback);
|
||||||
|
}
|
||||||
|
public static void displayDrawable(Context context, String url, int width, int height, final DrawableCallback callback) {
|
||||||
|
|
||||||
if (TextUtils.isEmpty(url) || !contextIsExist(context)) {
|
if (TextUtils.isEmpty(url) || !contextIsExist(context)) {
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.onLoadFailed();
|
callback.onLoadFailed();
|
||||||
} else {
|
} else {
|
||||||
Glide.with(context).asDrawable().load(url).thumbnail(thumbnail).skipMemoryCache(SKIP_MEMORY_CACHE).into(new CustomTarget<Drawable>() {
|
RequestBuilder<Drawable> builder = Glide.with(context).asDrawable().load(url);
|
||||||
|
if (width != -1 && height != -1) {
|
||||||
|
builder = builder.override(width, height);
|
||||||
|
}
|
||||||
|
builder.thumbnail(thumbnail).skipMemoryCache(SKIP_MEMORY_CACHE).into(new CustomTarget<Drawable>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import android.util.Log;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.blankj.utilcode.util.DeviceUtils;
|
||||||
import com.lzy.okgo.OkGo;
|
import com.lzy.okgo.OkGo;
|
||||||
import com.lzy.okgo.callback.StringCallback;
|
import com.lzy.okgo.callback.StringCallback;
|
||||||
import com.lzy.okgo.model.Response;
|
import com.lzy.okgo.model.Response;
|
||||||
@@ -28,6 +29,7 @@ import com.yunbao.common.utils.AppManager;
|
|||||||
import com.yunbao.common.utils.DialogUitl;
|
import com.yunbao.common.utils.DialogUitl;
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.VersionUtil;
|
import com.yunbao.common.utils.VersionUtil;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
@@ -459,6 +461,20 @@ public class CommonHttpUtil {
|
|||||||
.params("token", CommonAppConfig.getInstance().getToken())
|
.params("token", CommonAppConfig.getInstance().getToken())
|
||||||
.params("ext", isImg ? ".jpeg" : ".mp4")
|
.params("ext", isImg ? ".jpeg" : ".mp4")
|
||||||
.execute(callback);
|
.execute(callback);
|
||||||
|
} /**
|
||||||
|
* 上传文件 获取七牛云token的接口
|
||||||
|
*/
|
||||||
|
public static void getUploadQiNiuTokenLog(HttpCallback callback,String fileName) {
|
||||||
|
String uid = CommonAppConfig.getInstance().getUid();
|
||||||
|
if(StringUtil.isEmpty(uid)){
|
||||||
|
uid="NotLogin_"+ DeviceUtils.getUniqueDeviceId();
|
||||||
|
}
|
||||||
|
HttpClient.getInstance().get("Pdluserhome.getQiNiuToken3", "Pdluserhome.getQiNiuToken3")
|
||||||
|
.params("uid",uid)
|
||||||
|
.params("token", CommonAppConfig.getInstance().getToken())
|
||||||
|
.params("file_name", fileName)
|
||||||
|
.params("ext", ".zip")
|
||||||
|
.execute(callback);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// //埋点唯一性
|
// //埋点唯一性
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ public abstract class HttpCallback extends AbsCallback<JsonBean> {
|
|||||||
public void onSuccess(Response<JsonBean> response) {
|
public void onSuccess(Response<JsonBean> response) {
|
||||||
JsonBean bean = response.body();
|
JsonBean bean = response.body();
|
||||||
String gson = new Gson().toJson(bean);
|
String gson = new Gson().toJson(bean);
|
||||||
Log.e("onSuccess", gson);
|
|
||||||
if (bean != null) {
|
if (bean != null) {
|
||||||
if (200 == bean.getRet()) {
|
if (200 == bean.getRet()) {
|
||||||
Data data = bean.getData();
|
Data data = bean.getData();
|
||||||
|
|||||||
@@ -133,15 +133,18 @@ public class HttpLoggingInterceptor implements Interceptor {
|
|||||||
ResponseBody responseBody = clone.body();
|
ResponseBody responseBody = clone.body();
|
||||||
boolean logBody = (printLevel == Level.BODY);
|
boolean logBody = (printLevel == Level.BODY);
|
||||||
boolean logHeaders = (printLevel == Level.BODY || printLevel == Level.HEADERS);
|
boolean logHeaders = (printLevel == Level.BODY || printLevel == Level.HEADERS);
|
||||||
|
StringBuilder sb=new StringBuilder();
|
||||||
try {
|
try {
|
||||||
log("<-- " + clone.code() + ' ' + clone.message() + ' ' + clone.request().url() + " (" + tookMs + "ms)");
|
sb.append("<-- ").append(clone.code())
|
||||||
|
.append(' ').append(clone.message())
|
||||||
|
.append(' ').append(clone.request().url())
|
||||||
|
.append(" (").append(tookMs).append("ms)\n");
|
||||||
if (logHeaders) {
|
if (logHeaders) {
|
||||||
Headers headers = clone.headers();
|
Headers headers = clone.headers();
|
||||||
for (int i = 0, count = headers.size(); i < count; i++) {
|
for (int i = 0, count = headers.size(); i < count; i++) {
|
||||||
log("\t" + headers.name(i) + ": " + headers.value(i));
|
sb.append("\t").append(headers.name(i)).append(": ").append(headers.value(i)).append("\n");
|
||||||
}
|
}
|
||||||
log(" ");
|
sb.append("\n");
|
||||||
if (logBody && HttpHeaders.hasBody(clone)) {
|
if (logBody && HttpHeaders.hasBody(clone)) {
|
||||||
if (responseBody == null) return response;
|
if (responseBody == null) return response;
|
||||||
|
|
||||||
@@ -149,18 +152,19 @@ public class HttpLoggingInterceptor implements Interceptor {
|
|||||||
byte[] bytes = IOUtils.toByteArray(responseBody.byteStream());
|
byte[] bytes = IOUtils.toByteArray(responseBody.byteStream());
|
||||||
MediaType contentType = responseBody.contentType();
|
MediaType contentType = responseBody.contentType();
|
||||||
String body = new String(bytes, getCharset(contentType));
|
String body = new String(bytes, getCharset(contentType));
|
||||||
log("\tbody:" + body);
|
sb.append("\tbody:").append(body).append("\n");
|
||||||
responseBody = ResponseBody.create(responseBody.contentType(), bytes);
|
responseBody = ResponseBody.create(responseBody.contentType(), bytes);
|
||||||
return response.newBuilder().body(responseBody).build();
|
return response.newBuilder().body(responseBody).build();
|
||||||
} else {
|
} else {
|
||||||
log("\tbody: maybe [binary body], omitted!");
|
sb.append("\tbody: maybe [binary body], omitted!").append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
OkLogger.printStackTrace(e);
|
OkLogger.printStackTrace(e);
|
||||||
} finally {
|
} finally {
|
||||||
log("<-- END HTTP");
|
sb.append("<-- END HTTP").append("\n");
|
||||||
|
log(sb.toString());
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,10 +243,11 @@ public class LiveHttpUtil {
|
|||||||
/**
|
/**
|
||||||
* 举报用户 + 图片
|
* 举报用户 + 图片
|
||||||
*/
|
*/
|
||||||
public static void setReport(String touid, String content, File file1, File file2, File file3, String videoId, HttpCallback callback) {
|
public static void setReport(String touid,String report_argument, String content, File file1, File file2, File file3, String videoId, HttpCallback callback) {
|
||||||
PostRequest<JsonBean> request = HttpClient.getInstance().post("Live.setReport", LiveHttpConsts.SET_REPORT)
|
PostRequest<JsonBean> request = HttpClient.getInstance().post("Live.setReport", LiveHttpConsts.SET_REPORT)
|
||||||
.isMultipart(true)
|
.isMultipart(true)
|
||||||
.params("touid", touid)
|
.params("touid", touid)
|
||||||
|
.params("report_argument", report_argument)
|
||||||
.params("content", content);
|
.params("content", content);
|
||||||
if (file1 != null) {
|
if (file1 != null) {
|
||||||
request.params("file1", file1);
|
request.params("file1", file1);
|
||||||
@@ -764,7 +765,7 @@ public class LiveHttpUtil {
|
|||||||
* @param file 封面图片文件
|
* @param file 封面图片文件
|
||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
public static void newcreateRoom(String title, int liveClassId, int type, int typeVal, File file, int clarityType, HttpCallback callback) {
|
public static void newcreateRoom(String title, int liveClassId, int type, int typeVal, File file, int clarityType,boolean isSw, HttpCallback callback) {
|
||||||
|
|
||||||
PostRequest<JsonBean> request = HttpClient.getInstance().post("Live.createRoom2", LiveHttpConsts.CREATE_ROOM)
|
PostRequest<JsonBean> request = HttpClient.getInstance().post("Live.createRoom2", LiveHttpConsts.CREATE_ROOM)
|
||||||
.params("title", title)
|
.params("title", title)
|
||||||
@@ -773,6 +774,7 @@ public class LiveHttpUtil {
|
|||||||
.params("landscape", "2")
|
.params("landscape", "2")
|
||||||
.params("class_type", "0")
|
.params("class_type", "0")
|
||||||
.params("type_val", typeVal)
|
.params("type_val", typeVal)
|
||||||
|
.params("is_shengwang",isSw?1:0)
|
||||||
.params("clarityType", clarityType);
|
.params("clarityType", clarityType);
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
request.params("file", file);
|
request.params("file", file);
|
||||||
@@ -817,6 +819,15 @@ public class LiveHttpUtil {
|
|||||||
.execute(callback);
|
.execute(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取是否是声网开播
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
public static void getIsSw(HttpCallback callback) {
|
||||||
|
HttpClient.getInstance().get("Tx.setRtcFirm", "Tx.setRtcFirm")
|
||||||
|
.execute(callback);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯sdk 跟主播连麦时,获取主播的低延时流
|
* 腾讯sdk 跟主播连麦时,获取主播的低延时流
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -54,7 +54,10 @@ import com.yunbao.common.bean.NobleTrumpetModel;
|
|||||||
import com.yunbao.common.bean.OpenAdModel;
|
import com.yunbao.common.bean.OpenAdModel;
|
||||||
import com.yunbao.common.bean.PkRankBean;
|
import com.yunbao.common.bean.PkRankBean;
|
||||||
import com.yunbao.common.bean.PrankGiftBean;
|
import com.yunbao.common.bean.PrankGiftBean;
|
||||||
|
import com.yunbao.common.bean.PrankGiftResultBean;
|
||||||
import com.yunbao.common.bean.PrankHttpTurntableBean;
|
import com.yunbao.common.bean.PrankHttpTurntableBean;
|
||||||
|
import com.yunbao.common.bean.PrankProgressBean;
|
||||||
|
import com.yunbao.common.bean.QiniuLog;
|
||||||
import com.yunbao.common.bean.QuickGiftSendGiftModel;
|
import com.yunbao.common.bean.QuickGiftSendGiftModel;
|
||||||
import com.yunbao.common.bean.RandomPkUserBean;
|
import com.yunbao.common.bean.RandomPkUserBean;
|
||||||
import com.yunbao.common.bean.RankPkInfoBean;
|
import com.yunbao.common.bean.RankPkInfoBean;
|
||||||
@@ -68,9 +71,12 @@ import com.yunbao.common.bean.SendMoneyLongModel;
|
|||||||
import com.yunbao.common.bean.SetAttentsModel;
|
import com.yunbao.common.bean.SetAttentsModel;
|
||||||
import com.yunbao.common.bean.SlideInBannerModel;
|
import com.yunbao.common.bean.SlideInBannerModel;
|
||||||
import com.yunbao.common.bean.StarChallengeStatusModel;
|
import com.yunbao.common.bean.StarChallengeStatusModel;
|
||||||
|
import com.yunbao.common.bean.SudGameInfoBean;
|
||||||
|
import com.yunbao.common.bean.SudGameScoreBean;
|
||||||
import com.yunbao.common.bean.SudGameUserModel;
|
import com.yunbao.common.bean.SudGameUserModel;
|
||||||
import com.yunbao.common.bean.SudRoomListModel;
|
import com.yunbao.common.bean.SudRoomListModel;
|
||||||
import com.yunbao.common.bean.SudgameCodeModel;
|
import com.yunbao.common.bean.SudgameCodeModel;
|
||||||
|
import com.yunbao.common.bean.SwTokenModel;
|
||||||
import com.yunbao.common.bean.UserAreaBean;
|
import com.yunbao.common.bean.UserAreaBean;
|
||||||
import com.yunbao.common.bean.UserAvatarSelectBean;
|
import com.yunbao.common.bean.UserAvatarSelectBean;
|
||||||
import com.yunbao.common.bean.VipModel;
|
import com.yunbao.common.bean.VipModel;
|
||||||
@@ -215,7 +221,7 @@ public interface PDLiveApi {
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关注主播
|
* 关注主播···································································
|
||||||
*
|
*
|
||||||
* @param liveuid
|
* @param liveuid
|
||||||
* @return
|
* @return
|
||||||
@@ -504,7 +510,16 @@ public interface PDLiveApi {
|
|||||||
* 获取整蛊列表
|
* 获取整蛊列表
|
||||||
*/
|
*/
|
||||||
@GET("/api/public/?service=Prank.prankList")
|
@GET("/api/public/?service=Prank.prankList")
|
||||||
Observable<ResponseModel<List<PrankGiftBean>>> prankList(@Query("anchor_id") String anchor_id);
|
Observable<ResponseModel<PrankGiftResultBean>>prankList(
|
||||||
|
@Query("anchor_id") String anchor_id,
|
||||||
|
@Query("prank_type") String prank_type
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取整蛊进度列表
|
||||||
|
*/
|
||||||
|
@GET("/api/public/?service=Prank.prankCompletedList")
|
||||||
|
Observable<ResponseModel<PrankProgressBean>> getPrankProgressList(@Query("anchor_id") String anchor_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置礼物整蛊
|
* 设置礼物整蛊
|
||||||
@@ -512,9 +527,11 @@ public interface PDLiveApi {
|
|||||||
@GET("/api/public/?service=Prank.setPrank")
|
@GET("/api/public/?service=Prank.setPrank")
|
||||||
Observable<ResponseModel<List<BaseModel>>> setPrank(
|
Observable<ResponseModel<List<BaseModel>>> setPrank(
|
||||||
@Query("anchor_id") String anchor_id,
|
@Query("anchor_id") String anchor_id,
|
||||||
@Query("gift_id") String gift_id,
|
@Query("status") String status,
|
||||||
@Query("gift_num") String gift_num,
|
@Query("prank_json") String prank_json,
|
||||||
@Query("prank_content") String prank_content
|
@Query("prank_type") String prank_type,
|
||||||
|
@Query("is_cleared") String is_cleared
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1008,6 +1025,22 @@ public interface PDLiveApi {
|
|||||||
@GET("/api/public/?service=Sudgame.getCode")
|
@GET("/api/public/?service=Sudgame.getCode")
|
||||||
Observable<ResponseModel<List<SudgameCodeModel>>> getCode();
|
Observable<ResponseModel<List<SudgameCodeModel>>> getCode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取房间金豆门槛和赢家获得的金豆
|
||||||
|
*/
|
||||||
|
@GET("/api/public/?service=Sudgameserver.checkRemainingBalance")
|
||||||
|
Observable<ResponseModel<SudGameScoreBean>> getScore(
|
||||||
|
@Query("room_id") String roomId
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取游戏中玩家的信息
|
||||||
|
*/
|
||||||
|
@GET("/api/public/?service=Sudgameserver.getGameUser")
|
||||||
|
Observable<ResponseModel<List<SudGameInfoBean>>> getSudGameInfo(
|
||||||
|
@Query("room_id") String roomId
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建游戏房
|
* 创建游戏房
|
||||||
*
|
*
|
||||||
@@ -1180,7 +1213,7 @@ public interface PDLiveApi {
|
|||||||
Observable<ResponseModel<GuardGetGuardOpenInfoModel>> getGuardOpenInfo(@Query("liveuid") String liveUid);
|
Observable<ResponseModel<GuardGetGuardOpenInfoModel>> getGuardOpenInfo(@Query("liveuid") String liveUid);
|
||||||
|
|
||||||
@GET("/api/public/?service=Guard.openGuard")
|
@GET("/api/public/?service=Guard.openGuard")
|
||||||
Observable<ResponseModel<Object>> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream);
|
Observable<ResponseModel<Object>> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream,@Query("coupon_type") String coupon_type,@Query("coupon_id") String coupon_id);
|
||||||
|
|
||||||
@GET("/api/public/?service=Guard.sendMoneyLong")
|
@GET("/api/public/?service=Guard.sendMoneyLong")
|
||||||
Observable<ResponseModel<Object>> sendMoneyLong(@Query("liveuid") String liveUid, @Query("gold_num") String goldNum);
|
Observable<ResponseModel<Object>> sendMoneyLong(@Query("liveuid") String liveUid, @Query("gold_num") String goldNum);
|
||||||
@@ -1232,4 +1265,23 @@ public interface PDLiveApi {
|
|||||||
@Query("to_uid")String toUid,
|
@Query("to_uid")String toUid,
|
||||||
@Query("payload")String payload
|
@Query("payload")String payload
|
||||||
);
|
);
|
||||||
|
@GET("/api/public/?service=Tx.getShengwangToken")
|
||||||
|
Observable<ResponseModel<SwTokenModel>> getSwToken();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param anchor_id
|
||||||
|
* @param gift_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GET("/api/public/?service=Prank.anchorClickFinish")
|
||||||
|
Observable<ResponseModel<List<BaseModel>>> anchorClickFinish(
|
||||||
|
@Query("anchor_id")String anchor_id,
|
||||||
|
@Query("gift_id")String gift_id
|
||||||
|
);
|
||||||
|
@GET("/api/public/?service=Tx.androidQiniuLog")
|
||||||
|
Observable<ResponseModel<QiniuLog>> getPrankList(
|
||||||
|
@Query("type")String type
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,10 @@ import com.yunbao.common.bean.NobleTrumpetModel;
|
|||||||
import com.yunbao.common.bean.OpenAdModel;
|
import com.yunbao.common.bean.OpenAdModel;
|
||||||
import com.yunbao.common.bean.PkRankBean;
|
import com.yunbao.common.bean.PkRankBean;
|
||||||
import com.yunbao.common.bean.PrankGiftBean;
|
import com.yunbao.common.bean.PrankGiftBean;
|
||||||
|
import com.yunbao.common.bean.PrankGiftResultBean;
|
||||||
import com.yunbao.common.bean.PrankHttpTurntableBean;
|
import com.yunbao.common.bean.PrankHttpTurntableBean;
|
||||||
|
import com.yunbao.common.bean.PrankProgressBean;
|
||||||
|
import com.yunbao.common.bean.QiniuLog;
|
||||||
import com.yunbao.common.bean.QuickGiftSendGiftModel;
|
import com.yunbao.common.bean.QuickGiftSendGiftModel;
|
||||||
import com.yunbao.common.bean.RandomPkUserBean;
|
import com.yunbao.common.bean.RandomPkUserBean;
|
||||||
import com.yunbao.common.bean.RankPkInfoBean;
|
import com.yunbao.common.bean.RankPkInfoBean;
|
||||||
@@ -66,9 +69,12 @@ import com.yunbao.common.bean.RoomMicStatusModel;
|
|||||||
import com.yunbao.common.bean.SendMoneyLongModel;
|
import com.yunbao.common.bean.SendMoneyLongModel;
|
||||||
import com.yunbao.common.bean.SetAttentsModel;
|
import com.yunbao.common.bean.SetAttentsModel;
|
||||||
import com.yunbao.common.bean.StarChallengeStatusModel;
|
import com.yunbao.common.bean.StarChallengeStatusModel;
|
||||||
|
import com.yunbao.common.bean.SudGameInfoBean;
|
||||||
|
import com.yunbao.common.bean.SudGameScoreBean;
|
||||||
import com.yunbao.common.bean.SudGameUserModel;
|
import com.yunbao.common.bean.SudGameUserModel;
|
||||||
import com.yunbao.common.bean.SudRoomListModel;
|
import com.yunbao.common.bean.SudRoomListModel;
|
||||||
import com.yunbao.common.bean.SudgameCodeModel;
|
import com.yunbao.common.bean.SudgameCodeModel;
|
||||||
|
import com.yunbao.common.bean.SwTokenModel;
|
||||||
import com.yunbao.common.bean.UserAreaBean;
|
import com.yunbao.common.bean.UserAreaBean;
|
||||||
import com.yunbao.common.bean.UserAvatarSelectBean;
|
import com.yunbao.common.bean.UserAvatarSelectBean;
|
||||||
import com.yunbao.common.bean.VipModel;
|
import com.yunbao.common.bean.VipModel;
|
||||||
@@ -879,9 +885,9 @@ public class LiveNetManager {
|
|||||||
/**
|
/**
|
||||||
* 获取转盘整蛊列表
|
* 获取转盘整蛊列表
|
||||||
*/
|
*/
|
||||||
public void getPrankGiftList(String mLiveUid, HttpCallback<List<PrankGiftBean>> callback) {
|
public void getPrankGiftList(String mLiveUid, String prank_type,HttpCallback<PrankGiftResultBean> callback) {
|
||||||
API.get().pdLiveApi(mContext)
|
API.get().pdLiveApi(mContext)
|
||||||
.prankList(mLiveUid)
|
.prankList(mLiveUid,prank_type)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe(responseModel -> {
|
.subscribe(responseModel -> {
|
||||||
@@ -898,12 +904,31 @@ public class LiveNetManager {
|
|||||||
}).isDisposed();
|
}).isDisposed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取整蛊进度列表
|
||||||
|
*/
|
||||||
|
public void getPrankProgressList(String mLiveUid, HttpCallback<PrankProgressBean> callback){
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.getPrankProgressList(mLiveUid)
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.subscribe(responseModel->{
|
||||||
|
if (callback != null){
|
||||||
|
callback.onSuccess(responseModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
},throwable->{
|
||||||
|
if (callback != null){
|
||||||
|
callback.onError(throwable.getMessage());
|
||||||
|
}
|
||||||
|
} ).isDisposed();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置礼物整蛊
|
* 设置礼物整蛊
|
||||||
*/
|
*/
|
||||||
public void setPrankGift(String mLiveUid, String gift_id, String gift_num, String prank_content, HttpCallback<PrankHttpTurntableBean> callback) {
|
public void setPrankGift(String mLiveUid, String status, String prank_json,String prank_type,String is_cleared, HttpCallback<PrankHttpTurntableBean> callback) {
|
||||||
API.get().pdLiveApi(mContext)
|
API.get().pdLiveApi(mContext)
|
||||||
.setPrank(mLiveUid, gift_id, gift_num, prank_content)
|
.setPrank(mLiveUid, status, prank_json, prank_type,is_cleared)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe(responseModel -> {
|
.subscribe(responseModel -> {
|
||||||
@@ -2272,6 +2297,48 @@ public class LiveNetManager {
|
|||||||
}).isDisposed();
|
}).isDisposed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取房间金豆门槛和赢家获得的金豆
|
||||||
|
* @param roomId
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
public void getScore(String roomId,HttpCallback<SudGameScoreBean> callback){
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.getScore(roomId)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(sudGameScoreBeanResponseModel -> {
|
||||||
|
if (callback != null){
|
||||||
|
callback.onSuccess(sudGameScoreBeanResponseModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
}, throwable -> {
|
||||||
|
if (callback != null){
|
||||||
|
callback.onError(mContext.getString(R.string.net_error));
|
||||||
|
}
|
||||||
|
}).isDisposed();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取游戏中所有玩家的信息
|
||||||
|
* @param roomId
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
public void getSudGameInfo(String roomId,HttpCallback<List<SudGameInfoBean>> callback){
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.getSudGameInfo(roomId)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(infoModel->{
|
||||||
|
if (callback != null){
|
||||||
|
callback.onSuccess(infoModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
},throwable -> {
|
||||||
|
if (callback != null){
|
||||||
|
callback.onError(mContext.getString(R.string.net_error));
|
||||||
|
}
|
||||||
|
}).isDisposed();
|
||||||
|
}
|
||||||
|
|
||||||
public void createSudRoom(String roomName, String goldenBeanNumber, String currencyType, String gameId, HttpCallback<CreateSudRoomModel> callback) {
|
public void createSudRoom(String roomName, String goldenBeanNumber, String currencyType, String gameId, HttpCallback<CreateSudRoomModel> callback) {
|
||||||
API.get().pdLiveApi(mContext)
|
API.get().pdLiveApi(mContext)
|
||||||
.createSudRoom(roomName, goldenBeanNumber, currencyType, gameId)
|
.createSudRoom(roomName, goldenBeanNumber, currencyType, gameId)
|
||||||
@@ -2992,9 +3059,9 @@ public class LiveNetManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openGuard(String liveUid, String guardType, String priceKey, String stream, HttpCallback<String> callback) {
|
public void openGuard(String liveUid, String guardType, String priceKey, String stream,String coupon_type,String couponId, HttpCallback<String> callback) {
|
||||||
API.get().pdLiveApi(mContext)
|
API.get().pdLiveApi(mContext)
|
||||||
.openGuard(liveUid, guardType, priceKey, stream)
|
.openGuard(liveUid, guardType, priceKey, stream,coupon_type,couponId)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(new Consumer<ResponseModel<Object>>() {
|
.subscribe(new Consumer<ResponseModel<Object>>() {
|
||||||
@@ -3141,7 +3208,6 @@ public class LiveNetManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).isDisposed();
|
}).isDisposed();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void guardGetRewards(String guardLevel, String liveUid, HttpCallback<Object> callback) {
|
public void guardGetRewards(String guardLevel, String liveUid, HttpCallback<Object> callback) {
|
||||||
@@ -3168,6 +3234,80 @@ public class LiveNetManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void getSwToken( HttpCallback<SwTokenModel> callback) {
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.getSwToken()
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Consumer<ResponseModel<SwTokenModel>>() {
|
||||||
|
@Override
|
||||||
|
public void accept(ResponseModel<SwTokenModel> listResponseModel) throws Exception {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onSuccess(listResponseModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, new Consumer<Throwable>() {
|
||||||
|
@Override
|
||||||
|
public void accept(Throwable throwable) throws Exception {
|
||||||
|
throwable.printStackTrace();
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onError(mContext.getString(R.string.net_error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).isDisposed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void anchorClickFinish(String mLiveId, String giftId, HttpCallback<List<BaseModel>>callback) {
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.anchorClickFinish(mLiveId, giftId)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
|
||||||
|
@Override
|
||||||
|
public void accept(ResponseModel<List<BaseModel>> listResponseModel) throws Exception {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onSuccess(listResponseModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, new Consumer<Throwable>() {
|
||||||
|
@Override
|
||||||
|
public void accept(Throwable throwable) throws Exception {
|
||||||
|
throwable.printStackTrace();
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onError(mContext.getString(R.string.net_error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).isDisposed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上报日志相关
|
||||||
|
* @param type 1为查询,3为删除
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
public void getLogUpdateStatus(String type, HttpCallback<QiniuLog>callback) {
|
||||||
|
API.get().pdLiveApi(mContext)
|
||||||
|
.getPrankList(type)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(listResponseModel -> {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onSuccess(listResponseModel.getData().getInfo());
|
||||||
|
}
|
||||||
|
}, new Consumer<Throwable>() {
|
||||||
|
@Override
|
||||||
|
public void accept(Throwable throwable) throws Exception {
|
||||||
|
throwable.printStackTrace();
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onError(mContext.getString(R.string.net_error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).isDisposed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void updateFile(File file, HttpCallback<AvatarBean> callback) {
|
public void updateFile(File file, HttpCallback<AvatarBean> callback) {
|
||||||
MultipartBody.Part uploadFile = createUploadFile(file);
|
MultipartBody.Part uploadFile = createUploadFile(file);
|
||||||
API.get().pdLiveApi(mContext)
|
API.get().pdLiveApi(mContext)
|
||||||
|
|||||||
@@ -96,27 +96,27 @@ public class MainNetManager {
|
|||||||
}).isDisposed();
|
}).isDisposed();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 猜你喜欢
|
// * 猜你喜欢
|
||||||
*
|
// *
|
||||||
* @param num 请求数量
|
// * @param num 请求数量
|
||||||
* @return
|
// * @return
|
||||||
*/
|
// */
|
||||||
public void anchorRecommend(String num, HttpCallback<AnchorRecommendModel> httpCallback) {
|
// public void anchorRecommend(String num, String is_shengwang,HttpCallback<AnchorRecommendModel> httpCallback) {
|
||||||
API.get().pdLiveApi(mContext).anchorRecommend(num)
|
// API.get().pdLiveApi(mContext).anchorRecommend(num,is_shengwang)
|
||||||
.subscribeOn(Schedulers.io())
|
// .subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
// .observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(anchorRecommendModelResponseModel -> {
|
// .subscribe(anchorRecommendModelResponseModel -> {
|
||||||
if (httpCallback != null) {
|
// if (httpCallback != null) {
|
||||||
AnchorRecommendModel model = anchorRecommendModelResponseModel.getData().getInfo();
|
// AnchorRecommendModel model = anchorRecommendModelResponseModel.getData().getInfo();
|
||||||
httpCallback.onSuccess(model);
|
// httpCallback.onSuccess(model);
|
||||||
}
|
// }
|
||||||
}, throwable -> {
|
// }, throwable -> {
|
||||||
if (httpCallback != null) {
|
// if (httpCallback != null) {
|
||||||
httpCallback.onError(throwable.getMessage());
|
// httpCallback.onError(throwable.getMessage());
|
||||||
}
|
// }
|
||||||
}).isDisposed();
|
// }).isDisposed();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public void anchorRecommend(Map<String, Object> map, HttpCallback<AnchorRecommendModel> httpCallback) {
|
public void anchorRecommend(Map<String, Object> map, HttpCallback<AnchorRecommendModel> httpCallback) {
|
||||||
API.get().pdLiveApi(mContext).anchorRecommend(map)
|
API.get().pdLiveApi(mContext).anchorRecommend(map)
|
||||||
@@ -140,11 +140,12 @@ public class MainNetManager {
|
|||||||
* @param num 请求数量
|
* @param num 请求数量
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public void anchorRecommendType(String num, HttpCallback<AnchorRecommendModel> httpCallback) {
|
public void anchorRecommendType(String num, String is_shengwang,HttpCallback<AnchorRecommendModel> httpCallback) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("num", num);
|
map.put("num", num);
|
||||||
map.put("live_recommend", "slide");
|
map.put("live_recommend", "slide");
|
||||||
map.put("type", "1");
|
map.put("type", "1");
|
||||||
|
map.put(" is_shengwang", is_shengwang);
|
||||||
API.get().pdLiveApi(mContext).anchorRecommend(map)
|
API.get().pdLiveApi(mContext).anchorRecommend(map)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|||||||
@@ -1,25 +1,34 @@
|
|||||||
package com.yunbao.common.manager;
|
package com.yunbao.common.manager;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
import com.yunbao.common.bean.OpenAdModel;
|
import com.yunbao.common.bean.OpenAdModel;
|
||||||
|
import com.yunbao.common.dialog.DebugDialog;
|
||||||
import com.yunbao.common.dialog.OpenAdBottomDialogPopup;
|
import com.yunbao.common.dialog.OpenAdBottomDialogPopup;
|
||||||
import com.yunbao.common.dialog.OpenAdCenterDialogPopup;
|
import com.yunbao.common.dialog.OpenAdCenterDialogPopup;
|
||||||
import com.yunbao.common.http.base.HttpCallback;
|
import com.yunbao.common.http.base.HttpCallback;
|
||||||
import com.yunbao.common.http.live.LiveNetManager;
|
import com.yunbao.common.http.live.LiveNetManager;
|
||||||
|
import com.yunbao.common.interfaces.OnItemClickListener;
|
||||||
|
import com.yunbao.common.utils.AppManager;
|
||||||
import com.yunbao.common.utils.SpUtil;
|
import com.yunbao.common.utils.SpUtil;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class OpenAdManager {
|
public class OpenAdManager {
|
||||||
public static final int TYPE_HOME = 1;
|
public static final int TYPE_HOME = 1;
|
||||||
@@ -28,20 +37,43 @@ public class OpenAdManager {
|
|||||||
private Map<Integer, Boolean> showMap;
|
private Map<Integer, Boolean> showMap;
|
||||||
private List<OpenAdModel> list = null;
|
private List<OpenAdModel> list = null;
|
||||||
private Handler handler = new Handler(Looper.getMainLooper());
|
private Handler handler = new Handler(Looper.getMainLooper());
|
||||||
private Map<Integer, AdRunnable> runnableMap = new HashMap<>();
|
private Map<Integer, AdRunnable> runnableMap = new LinkedHashMap<>();
|
||||||
|
private Map<AdRunnable, Integer> waitRunnableMap = new LinkedHashMap<>();//等待运行的弹窗
|
||||||
private int showType;
|
private int showType;
|
||||||
|
private WeakReference<AdRunnable> runNowRunnable;
|
||||||
|
private static final boolean IS_QUEUE_SHOW = true;//是否按队列显示弹窗,true就会等待上一个弹窗关闭后弹出,false就按原逻辑顺序直接弹出
|
||||||
|
|
||||||
private OpenAdManager() {
|
private OpenAdManager() {
|
||||||
showMap = new HashMap<>();
|
showMap = new HashMap<>();
|
||||||
init(false);
|
init(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reset() {
|
public void close() {
|
||||||
dismiss();
|
dismiss();
|
||||||
|
clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clear() {
|
||||||
|
if (runnableMap != null) {
|
||||||
runnableMap.clear();
|
runnableMap.clear();
|
||||||
|
}
|
||||||
|
if (showMap != null) {
|
||||||
showMap.clear();
|
showMap.clear();
|
||||||
|
}
|
||||||
|
if (list != null) {
|
||||||
list.clear();
|
list.clear();
|
||||||
}
|
}
|
||||||
|
if (waitRunnableMap != null) {
|
||||||
|
waitRunnableMap.clear();
|
||||||
|
}
|
||||||
|
list = null;
|
||||||
|
runNowRunnable = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset() {
|
||||||
|
Log.i(TAG, "reset: ");
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
private static final class MInstanceHolder {
|
private static final class MInstanceHolder {
|
||||||
static final OpenAdManager mInstance = new OpenAdManager();
|
static final OpenAdManager mInstance = new OpenAdManager();
|
||||||
@@ -55,13 +87,14 @@ public class OpenAdManager {
|
|||||||
if (list != null && list.isEmpty()) {
|
if (list != null && list.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Context context = CommonAppContext.getTopActivity();
|
Context context = AppManager.getInstance().getMainActivity();
|
||||||
if (context == null) {
|
if (context == null) {
|
||||||
context = CommonAppContext.sInstance;
|
context = CommonAppContext.sInstance;
|
||||||
}
|
}
|
||||||
if (context == null) {
|
if (context == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LiveNetManager.get(context).activityPopup(new HttpCallback<List<OpenAdModel>>() {
|
LiveNetManager.get(context).activityPopup(new HttpCallback<List<OpenAdModel>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<OpenAdModel> data) {
|
public void onSuccess(List<OpenAdModel> data) {
|
||||||
@@ -70,35 +103,64 @@ public class OpenAdManager {
|
|||||||
list = new ArrayList<>();
|
list = new ArrayList<>();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Collections.sort(data, new AdListComparator());
|
||||||
list = data;
|
list = data;
|
||||||
if (isShow) {
|
if (isShow) {
|
||||||
|
if (showType == 0) {
|
||||||
show(TYPE_HOME, false);
|
show(TYPE_HOME, false);
|
||||||
|
} else {
|
||||||
|
show(showType, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(String error) {
|
public void onError(String error) {
|
||||||
System.err.println("弹框列表:" + error);
|
Log.e(TAG, "弹框列表:" + error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long showTime=0;
|
private static long showTime = 0;
|
||||||
|
private OnItemClickListener<String> onItemClickListener=new OnItemClickListener<String>() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(String bean, int position) {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public synchronized void show(int type, boolean isGuard) {
|
public synchronized void show(int type, boolean isGuard) {
|
||||||
|
showType = type;
|
||||||
if (list == null) {
|
if (list == null) {
|
||||||
init(true);
|
init(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(System.currentTimeMillis()-showTime<100){
|
Log.i(TAG, "show: 调用显示 " + type + " " + isGuard);
|
||||||
|
if (System.currentTimeMillis() - showTime < 100) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
showTime=System.currentTimeMillis();
|
/*DebugDialog.getInstance(new DebugDialog.DebugDialogRunnable() {
|
||||||
showType = type;
|
@Override
|
||||||
|
public void run(DebugDialog dialog) {
|
||||||
|
dialog.setShowPattern(ShowPattern.ALL_TIME);
|
||||||
|
dialog.show();
|
||||||
|
onItemClickListener = new OnItemClickListener<String>() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(String bean, int position) {
|
||||||
|
dialog.setParams(bean, "剩余:" + position);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
showTime = System.currentTimeMillis();
|
||||||
|
waitRunnableMap.clear();
|
||||||
|
runnableMap.clear();
|
||||||
|
runNowRunnable = null;
|
||||||
for (OpenAdModel model : list) {
|
for (OpenAdModel model : list) {
|
||||||
if (model.getType() == type) {
|
if (model.getType() == type) {
|
||||||
if (type == OpenAdModel.TYPE_LIVE && !model.userIsPermission(isGuard)) {
|
/* if (type == OpenAdModel.TYPE_LIVE && !model.userIsPermission(isGuard)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}*/
|
||||||
if (model.getShowModel() == OpenAdModel.SHOW_ONE) {
|
if (model.getShowModel() == OpenAdModel.SHOW_ONE) {
|
||||||
if (SpUtil.getInstance().getBooleanValue("open_ad_popup_" + model.getId())) {
|
if (SpUtil.getInstance().getBooleanValue("open_ad_popup_" + model.getId())) {
|
||||||
continue;
|
continue;
|
||||||
@@ -122,13 +184,22 @@ public class OpenAdManager {
|
|||||||
|
|
||||||
if (!isShow(model)) {
|
if (!isShow(model)) {
|
||||||
Log.i(TAG, "show: " + model);
|
Log.i(TAG, "show: " + model);
|
||||||
|
if (IS_QUEUE_SHOW) {
|
||||||
|
waitRunnableMap.put(new AdRunnable(model), model.getDelayShowTime());
|
||||||
|
} else {
|
||||||
handler.postDelayed(new AdRunnable(model), model.getDelayShowTime());
|
handler.postDelayed(new AdRunnable(model), model.getDelayShowTime());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.i(TAG, "notshow: " + model);
|
Log.i(TAG, "notshow: " + model);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log.i(TAG, "show: 循环完毕,调用next");
|
||||||
|
if (IS_QUEUE_SHOW) {
|
||||||
|
onItemClickListener.onItemClick("接口返回需要展示的弹窗数:", waitRunnableMap.size());
|
||||||
|
next();
|
||||||
|
}
|
||||||
Log.i(TAG, "------------------------------");
|
Log.i(TAG, "------------------------------");
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -144,6 +215,9 @@ public class OpenAdManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
runnableMap.clear();
|
runnableMap.clear();
|
||||||
|
if (runNowRunnable != null && runNowRunnable.get() != null) {
|
||||||
|
handler.removeCallbacks(runNowRunnable.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized boolean isShow(OpenAdModel type) {
|
private synchronized boolean isShow(OpenAdModel type) {
|
||||||
@@ -153,11 +227,45 @@ public class OpenAdManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getNowType() {
|
||||||
|
Activity lastActivity = AppManager.getInstance().getLastActivity();
|
||||||
|
if (lastActivity == null) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (AppManager.getInstance().isLiveActivity()) {
|
||||||
|
return TYPE_LIVE;
|
||||||
|
} else if (AppManager.getInstance().isMainActivity()) {
|
||||||
|
return TYPE_HOME;
|
||||||
|
}
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void next() {
|
||||||
|
Log.i(TAG, "next: 剩余数" + waitRunnableMap.size());
|
||||||
|
if (waitRunnableMap.isEmpty()) return;
|
||||||
|
for (AdRunnable next : waitRunnableMap.keySet()) {
|
||||||
|
Log.i(TAG, "next: " + next.model);
|
||||||
|
if (next.model.getType() == getNowType()) {
|
||||||
|
Integer i = waitRunnableMap.get(next);
|
||||||
|
if (i == null) {
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
onItemClickListener.onItemClick("当前加载id:" + next.model.getId() + " " + next.model.getName() + " 延迟展示时间:" + i, (waitRunnableMap.size() - 1));
|
||||||
|
handler.postDelayed(next, i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private class AdRunnable implements Runnable {
|
private class AdRunnable implements Runnable {
|
||||||
OpenAdModel model;
|
OpenAdModel model;
|
||||||
|
AdRunnable runnable;
|
||||||
|
|
||||||
public AdRunnable(OpenAdModel model) {
|
public AdRunnable(OpenAdModel model) {
|
||||||
this.model = model;
|
this.model = model;
|
||||||
|
this.runnable = this;
|
||||||
|
runNowRunnable = new WeakReference<>(this);
|
||||||
runnableMap.put(model.getId(), this);
|
runnableMap.put(model.getId(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,36 +278,100 @@ public class OpenAdManager {
|
|||||||
Log.i(TAG, "run: " + model);
|
Log.i(TAG, "run: " + model);
|
||||||
if (model == null) {
|
if (model == null) {
|
||||||
ToastUtil.showDebug("model为空");
|
ToastUtil.showDebug("model为空");
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!model.isInTime()) {
|
if (!model.isInTime()) {
|
||||||
ToastUtil.showDebug("不在展示时间内:" + model.getStartTime() + "|" + model.getEndTime());
|
ToastUtil.showDebug("不在展示时间内:" + model.getStartTime() + "|" + model.getEndTime());
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isShow(model)) {
|
if (isShow(model)) {
|
||||||
ToastUtil.showDebug(model.getId() + "|model展示过了");
|
ToastUtil.showDebug(model.getId() + "|model展示过了");
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (model.getType() != showType) {
|
if (model.getType() != showType) {
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isShow(model)){
|
if (isShow(model)) {
|
||||||
Log.i(TAG,"展示过:"+model);
|
Log.i(TAG, "展示过:" + model);
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (model.getType() == OpenAdModel.TYPE_HOME && !AppManager.getInstance().isMainActivity()) {
|
||||||
|
Log.i(TAG, "首页类型弹窗,但当前不是首页");
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
|
dismiss();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (model.getType() == TYPE_LIVE && !AppManager.getInstance().isLiveActivity()) {
|
||||||
|
Log.i(TAG, "直播类型弹窗,但当前不是直播");
|
||||||
|
if (onItemClickListener != null) {
|
||||||
|
onItemClickListener.onItemClick("", -2);
|
||||||
|
}
|
||||||
|
dismiss();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
showMap.put(model.getId(), true);
|
showMap.put(model.getId(), true);
|
||||||
if (model.getShowModel() == OpenAdModel.SHOW_DIY) {
|
if (model.getShowModel() == OpenAdModel.SHOW_DIY) {
|
||||||
String nextTime= String.valueOf(System.currentTimeMillis() + (Long.parseLong(model.getSection()) * 60 * 1000));
|
String nextTime = String.valueOf(System.currentTimeMillis() + (Long.parseLong(model.getSection()) * 60 * 1000));
|
||||||
SpUtil.setStringValue("open_ad_popup_time_" + model.getId(), nextTime);
|
SpUtil.setStringValue("open_ad_popup_time_" + model.getId(), nextTime);
|
||||||
showMap.remove(model.getId());
|
showMap.remove(model.getId());
|
||||||
}
|
}
|
||||||
if (model.getModel() == OpenAdModel.MODEL_BOTTOM) {
|
if (model.getModel() == OpenAdModel.MODEL_BOTTOM) {
|
||||||
new OpenAdBottomDialogPopup(CommonAppContext.getTopActivity(), model).setListener((bean, position) -> {
|
new OpenAdBottomDialogPopup(AppManager.getInstance().getLastActivity(), model).setListener((bean, position) -> {
|
||||||
|
Log.i(TAG, "run: 弹框回调:" + position + " id = " + model.getId());
|
||||||
|
if (IS_QUEUE_SHOW) {
|
||||||
|
removeList(bean);
|
||||||
|
if (position == 0) {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
}
|
||||||
}).showDialog();
|
}).showDialog();
|
||||||
} else {
|
} else {
|
||||||
new OpenAdCenterDialogPopup(CommonAppContext.getTopActivity(), model).setListener((bean, position) -> {
|
new OpenAdCenterDialogPopup(AppManager.getInstance().getLastActivity(), model).setListener((bean, position) -> {
|
||||||
|
Log.i(TAG, "run: 弹框回调:" + position + " id = " + model.getId());
|
||||||
|
if (IS_QUEUE_SHOW) {
|
||||||
|
removeList(bean);
|
||||||
|
if (position == 0) {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
}
|
||||||
}).showDialog();
|
}).showDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void removeList(OpenAdModel model) {
|
||||||
|
Log.i(TAG, "removeList: " + model);
|
||||||
|
for (AdRunnable next : waitRunnableMap.keySet()) {
|
||||||
|
if (next.model.getId() == model.getId()) {
|
||||||
|
waitRunnableMap.remove(next);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class AdListComparator implements Comparator<OpenAdModel> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(OpenAdModel openAdModel, OpenAdModel t1) {
|
||||||
|
return openAdModel.getSort() - t1.getSort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,6 +143,9 @@ public class RandomPkManager {
|
|||||||
.randomPK(new HttpCallback<String>() {
|
.randomPK(new HttpCallback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String data) {
|
public void onSuccess(String data) {
|
||||||
|
if (debugUid != null) {
|
||||||
|
pkUid = data = debugUid;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Integer.parseInt(data);//检测返回的data是否为数字uid,不是的话开始下一轮
|
Integer.parseInt(data);//检测返回的data是否为数字uid,不是的话开始下一轮
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -152,9 +155,8 @@ public class RandomPkManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pkUid = data;
|
pkUid = data;
|
||||||
if (debugUid != null) {
|
|
||||||
pkUid = data = debugUid;
|
ToastUtil.showDebug("随机PK:"+pkUid+"|"+data);
|
||||||
}
|
|
||||||
for (OnRandomPkTimer pkTimer : randomPkTimer) {
|
for (OnRandomPkTimer pkTimer : randomPkTimer) {
|
||||||
pkTimer.onStartPK(data);
|
pkTimer.onStartPK(data);
|
||||||
}
|
}
|
||||||
@@ -343,7 +345,7 @@ public class RandomPkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(String error) {
|
public void onError(String error) {
|
||||||
ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
|
//ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import io.rong.imlib.model.Conversation;
|
|||||||
import io.rong.imlib.model.Message;
|
import io.rong.imlib.model.Message;
|
||||||
import io.rong.message.TextMessage;
|
import io.rong.message.TextMessage;
|
||||||
|
|
||||||
public class GameMicManager {
|
public class GameRyMicManager {
|
||||||
MeetingCallback mMeetingCallback = null;
|
MeetingCallback mMeetingCallback = null;
|
||||||
private RCRTCRoom mRtcRoom = null;
|
private RCRTCRoom mRtcRoom = null;
|
||||||
private String mRoomID = "";
|
private String mRoomID = "";
|
||||||
@@ -367,7 +367,7 @@ public class GameMicManager {
|
|||||||
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
|
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final RCRTCRoom rcrtcRoom) {
|
public void onSuccess(final RCRTCRoom rcrtcRoom) {
|
||||||
GameMicManager.this.mRtcRoom = rcrtcRoom;
|
GameRyMicManager.this.mRtcRoom = rcrtcRoom;
|
||||||
// 注册房间回调
|
// 注册房间回调
|
||||||
rcrtcRoom.registerRoomListener(roomEventsListener);
|
rcrtcRoom.registerRoomListener(roomEventsListener);
|
||||||
try {
|
try {
|
||||||
@@ -484,7 +484,7 @@ public class GameMicManager {
|
|||||||
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
|
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
|
||||||
TextMessage messageContent = TextMessage.obtain(new Gson().toJson(sudGameSocketImEvent));
|
TextMessage messageContent = TextMessage.obtain(new Gson().toJson(sudGameSocketImEvent));
|
||||||
Message message = Message.obtain("v" + mRoomID, conversationType, messageContent);
|
Message message = Message.obtain("v" + mRoomID, conversationType, messageContent);
|
||||||
RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
|
RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onAttached(Message message) {
|
public void onAttached(Message message) {
|
||||||
|
|
||||||
@@ -0,0 +1,565 @@
|
|||||||
|
package com.yunbao.common.manager.imrongcloud;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
import com.yunbao.common.bean.IMLoginModel;
|
||||||
|
import com.yunbao.common.bean.SudGameChatImModel;
|
||||||
|
import com.yunbao.common.bean.SudGameUserModel;
|
||||||
|
import com.yunbao.common.event.SudGameSocketImEvent;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||||
|
import cn.rongcloud.rtc.api.RCRTCRemoteUser;
|
||||||
|
import cn.rongcloud.rtc.api.RCRTCRoom;
|
||||||
|
import cn.rongcloud.rtc.api.RCRTCRoomConfig;
|
||||||
|
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||||
|
import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
|
||||||
|
import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
|
||||||
|
import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
|
||||||
|
import cn.rongcloud.rtc.base.RCRTCParamsType;
|
||||||
|
import cn.rongcloud.rtc.base.RCRTCRoomType;
|
||||||
|
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||||
|
import io.rong.imlib.IRongCallback;
|
||||||
|
import io.rong.imlib.IRongCoreCallback;
|
||||||
|
import io.rong.imlib.IRongCoreEnum;
|
||||||
|
import io.rong.imlib.RongIMClient;
|
||||||
|
import io.rong.imlib.chatroom.base.RongChatRoomClient;
|
||||||
|
import io.rong.imlib.model.Conversation;
|
||||||
|
import io.rong.imlib.model.Message;
|
||||||
|
import io.rong.message.TextMessage;
|
||||||
|
|
||||||
|
public class GameSwMicManager {
|
||||||
|
MeetingCallback mMeetingCallback = null;
|
||||||
|
private RCRTCRoom mRtcRoom = null;
|
||||||
|
private String mRoomID = "";
|
||||||
|
|
||||||
|
public void setmRoomID(String mRoomID) {
|
||||||
|
this.mRoomID = mRoomID;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final IRCRTCRoomEventsListener roomEventsListener = new IRCRTCRoomEventsListener() {
|
||||||
|
/**
|
||||||
|
* 房间内用户发布资源
|
||||||
|
*
|
||||||
|
* @param rcrtcRemoteUser 远端用户
|
||||||
|
* @param list 发布的资源
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onRemoteUserPublishResource(RCRTCRemoteUser rcrtcRemoteUser, final List<RCRTCInputStream> list) {
|
||||||
|
// subscribeAVStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRemoteUserMuteAudio(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRemoteUserMuteVideo(RCRTCRemoteUser rcrtcRemoteUser, RCRTCInputStream rcrtcInputStream, boolean b) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRemoteUserUnpublishResource(RCRTCRemoteUser rcrtcRemoteUser, List<RCRTCInputStream> list) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户加入房间
|
||||||
|
*
|
||||||
|
* @param rcrtcRemoteUser 远端用户
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onUserJoined(final RCRTCRemoteUser rcrtcRemoteUser) {
|
||||||
|
try {
|
||||||
|
getView().onUserJoined(rcrtcRemoteUser);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户离开房间
|
||||||
|
*
|
||||||
|
* @param rcrtcRemoteUser 远端用户
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||||
|
try {
|
||||||
|
getView().onUserLeft(rcrtcRemoteUser);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUserOffline(RCRTCRemoteUser rcrtcRemoteUser) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPublishLiveStreams(List<RCRTCInputStream> list) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUnpublishLiveStreams(List<RCRTCInputStream> list) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自己退出房间。 例如断网退出等
|
||||||
|
* @param i 状态码
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onLeaveRoom(int i) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
protected MeetingCallback getView() {
|
||||||
|
if (mMeetingCallback == null) {
|
||||||
|
throw new IllegalStateException("view is not attached");
|
||||||
|
} else {
|
||||||
|
return mMeetingCallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void attachView(MeetingCallback callback) {
|
||||||
|
mMeetingCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void detachView() {
|
||||||
|
mMeetingCallback = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主动订阅远端用户发布的流
|
||||||
|
* 视频流需要用户设置用于显示载体的videoview
|
||||||
|
*/
|
||||||
|
public void subscribeAVStream() {
|
||||||
|
if (mRtcRoom == null || mRtcRoom.getRemoteUsers() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||||
|
for (final RCRTCRemoteUser remoteUser : mRtcRoom.getRemoteUsers()) {
|
||||||
|
if (remoteUser.getStreams().size() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputStreams.addAll(remoteUser.getStreams());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputStreams.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
getView().onSubscribeSuccess(inputStreams);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode errorCode) {
|
||||||
|
try {
|
||||||
|
getView().onSubscribeFailed();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void refreshStreams(List<SudGameUserModel> personList) {
|
||||||
|
|
||||||
|
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||||
|
if(mRtcRoom!=null){
|
||||||
|
for (SudGameUserModel sudGameUserModel : personList) {
|
||||||
|
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||||
|
|
||||||
|
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||||
|
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(sudGameUserModel.getId()))) {
|
||||||
|
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||||
|
rcrtcInputStream.mute(sudGameUserModel.getMicStatus() == 3);
|
||||||
|
}
|
||||||
|
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (inputStreams.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
getView().onSubscribeSuccess(inputStreams);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode errorCode) {
|
||||||
|
try {
|
||||||
|
getView().onSubscribeFailed();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshStreams(String userID, boolean mute, int position) {
|
||||||
|
|
||||||
|
final List<RCRTCInputStream> inputStreams = new ArrayList<>();
|
||||||
|
|
||||||
|
List<RCRTCRemoteUser> rcrtcRemoteUsers = mRtcRoom.getRemoteUsers();
|
||||||
|
|
||||||
|
for (RCRTCRemoteUser rcrtcRemoteUser : rcrtcRemoteUsers) {
|
||||||
|
if (TextUtils.equals(rcrtcRemoteUser.getUserId(), String.valueOf(userID))) {
|
||||||
|
for (RCRTCInputStream rcrtcInputStream : rcrtcRemoteUser.getStreams()) {
|
||||||
|
rcrtcInputStream.mute(mute);
|
||||||
|
}
|
||||||
|
inputStreams.addAll(rcrtcRemoteUser.getStreams());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (inputStreams.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
try {
|
||||||
|
getView().onSubscribeSuccess(userID, mute, position);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode errorCode) {
|
||||||
|
try {
|
||||||
|
getView().onSubscribeFailed(userID);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unPublishStreams() {
|
||||||
|
if (mRtcRoom == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRtcRoom.getLocalUser().unpublishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
try {
|
||||||
|
getView().onUnPublishStreamsSuccess();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode errorCode) {
|
||||||
|
try {
|
||||||
|
getView().onUnPublishStreamsFailed();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布默认流
|
||||||
|
*/
|
||||||
|
public void publishDefaultAVStream() {
|
||||||
|
if (mRtcRoom == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mRtcRoom.getLocalUser().publishStream(RCRTCEngine.getInstance().getDefaultAudioStream(), new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
try {
|
||||||
|
getView().onPublishSuccess();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||||
|
try {
|
||||||
|
getView().onPublishFailed();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置rtc sdk
|
||||||
|
*/
|
||||||
|
public void config(Context context) {
|
||||||
|
|
||||||
|
// RCRTCConfig.Builder configBuilder = RCRTCConfig.Builder.create();
|
||||||
|
// // 是否硬解码
|
||||||
|
// configBuilder.enableHardwareDecoder(true);
|
||||||
|
// // 是否硬编码
|
||||||
|
// configBuilder.enableHardwareEncoder(true);
|
||||||
|
//
|
||||||
|
// // init 需结合 uninit 使用,否则有些配置无法重新初始化
|
||||||
|
// RCRTCEngine.getInstance().unInit();
|
||||||
|
// RCRTCEngine.getInstance().init(context, configBuilder.build());
|
||||||
|
|
||||||
|
// RCRTCVideoStreamConfig.Builder videoConfigBuilder = RCRTCVideoStreamConfig.Builder.create();
|
||||||
|
// // 设置分辨率
|
||||||
|
// videoConfigBuilder.setVideoResolution(RCRTCParamsType.RCRTCVideoResolution.RESOLUTION_720_1280);
|
||||||
|
// // 设置帧率
|
||||||
|
// videoConfigBuilder.setVideoFps(RCRTCParamsType.RCRTCVideoFps.Fps_30);
|
||||||
|
// /**
|
||||||
|
// * 设置最小码率,可根据分辨率RCRTCVideoResolution设置
|
||||||
|
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||||
|
// */
|
||||||
|
// videoConfigBuilder.setMinRate(250);
|
||||||
|
// /**
|
||||||
|
// * 设置最大码率,可根据分辨率RCRTCVideoResolution设置
|
||||||
|
// * {@link RCRTCParamsType.RCRTCVideoResolution)}
|
||||||
|
// */
|
||||||
|
// videoConfigBuilder.setMaxRate(2200);
|
||||||
|
// RCRTCEngine.getInstance().getDefaultVideoStream().setVideoConfig(videoConfigBuilder.build());
|
||||||
|
//打开扬声器。
|
||||||
|
RCRTCEngine.getInstance().enableSpeaker(true);
|
||||||
|
// 启用耳返功能
|
||||||
|
RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);
|
||||||
|
RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(false);
|
||||||
|
RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(RCRTCParamsType.AudioQuality.MUSIC_HIGH, RCRTCParamsType.AudioScenario.MUSIC_CHATROOM);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void joinRoom(String roomId, boolean imOff) {
|
||||||
|
mRoomID = roomId;
|
||||||
|
if (imOff) {
|
||||||
|
|
||||||
|
RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create()
|
||||||
|
// 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO
|
||||||
|
.setRoomType(RCRTCRoomType.MEETING)
|
||||||
|
|
||||||
|
.build();
|
||||||
|
RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback<RCRTCRoom>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(final RCRTCRoom rcrtcRoom) {
|
||||||
|
GameSwMicManager.this.mRtcRoom = rcrtcRoom;
|
||||||
|
// 注册房间回调
|
||||||
|
rcrtcRoom.registerRoomListener(roomEventsListener);
|
||||||
|
try {
|
||||||
|
getView().onJoinRoomSuccess(rcrtcRoom);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||||
|
try {
|
||||||
|
getView().onJoinRoomFailed(rtcErrorCode);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
RongChatRoomClient.getInstance().joinChatRoom("v" + roomId, -1, new IRongCoreCallback.OperationCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
Log.i("tx", "加入成功");
|
||||||
|
enterRoom();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||||
|
Log.i("tx", "加入" + "失败" + coreErrorCode);
|
||||||
|
if (WordUtil.isNewZh()) {
|
||||||
|
ToastUtil.show("網絡不佳無法連接,請重新進入");
|
||||||
|
} else {
|
||||||
|
ToastUtil.show("The network is not connected, please re-enter");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leaveRoom() {
|
||||||
|
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onFailed(RTCErrorCode rtcErrorCode) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
RongChatRoomClient.getInstance().quitChatRoom("v" + mRoomID, new IRongCoreCallback.OperationCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
Log.i("tx", "退出成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
|
||||||
|
Log.i("tx", "退出" + "" + coreErrorCode);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理游戏房Im消息
|
||||||
|
*/
|
||||||
|
public void processingMessage(SudGameSocketImEvent socketImModel) {
|
||||||
|
|
||||||
|
List<SudGameSocketImEvent.MsgDTO> msgDTOS = socketImModel.getMsg();
|
||||||
|
if (msgDTOS.isEmpty()) return;
|
||||||
|
SudGameSocketImEvent.MsgDTO msgDTO = msgDTOS.get(0);
|
||||||
|
|
||||||
|
|
||||||
|
//正常文字消息
|
||||||
|
if (TextUtils.equals(msgDTO.getMethod(), "SendMsg")) {
|
||||||
|
getView().insertItem(new SudGameChatImModel().setWelcomMessage(false).setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
|
||||||
|
} else if (TextUtils.equals(msgDTO.getMethod(), "welcomMessage")) {
|
||||||
|
// 欢迎(用户名)进入房间 Welcome (username) to the room
|
||||||
|
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
if (WordUtil.isNewZh()) {
|
||||||
|
stringBuffer.append("歡迎 ").append(msgDTO.getCt()).append(" 進入房間");
|
||||||
|
} else {
|
||||||
|
stringBuffer.append("Welcome ").append(msgDTO.getCt()).append(" to enter the room");
|
||||||
|
}
|
||||||
|
|
||||||
|
getView().insertItem(new SudGameChatImModel().setWelcomMessage(true).setNickname(msgDTO.getCt()).setTextMessage(stringBuffer.toString()));
|
||||||
|
} else if (TextUtils.equals(msgDTO.getMethod(), "sudGameRoomVoiceList")) {
|
||||||
|
List<SudGameUserModel> personList = new Gson().fromJson(msgDTO.getCt(), new TypeToken<List<SudGameUserModel>>() {
|
||||||
|
}.getType());
|
||||||
|
getView().refreshSudGameUserList(personList);
|
||||||
|
|
||||||
|
refreshStreams(personList);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendChatMessage(String textMessage, String method) {
|
||||||
|
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
|
||||||
|
SudGameSocketImEvent sudGameSocketImEvent = new SudGameSocketImEvent();
|
||||||
|
sudGameSocketImEvent.setRetcode("000000");
|
||||||
|
sudGameSocketImEvent.setRetmsg("ok");
|
||||||
|
|
||||||
|
SudGameSocketImEvent.MsgDTO msgDTO = new SudGameSocketImEvent.MsgDTO();
|
||||||
|
msgDTO.setAction("0")
|
||||||
|
.setCt(textMessage)
|
||||||
|
.setEquipment("app")
|
||||||
|
.setUid(String.valueOf(loginModel.getId()))
|
||||||
|
.setMethod(method)
|
||||||
|
.setUname(loginModel.getUserNicename())
|
||||||
|
.setRoomnum(mRoomID);
|
||||||
|
|
||||||
|
List<SudGameSocketImEvent.MsgDTO> msgDTOS = new ArrayList<>();
|
||||||
|
msgDTOS.add(msgDTO);
|
||||||
|
sudGameSocketImEvent.setMsg(msgDTOS);
|
||||||
|
Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM;
|
||||||
|
TextMessage messageContent = TextMessage.obtain(new Gson().toJson(sudGameSocketImEvent));
|
||||||
|
Message message = Message.obtain("v" + mRoomID, conversationType, messageContent);
|
||||||
|
RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
|
||||||
|
@Override
|
||||||
|
public void onAttached(Message message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Message message) {
|
||||||
|
Log.i("tx", "发送成功");
|
||||||
|
String contentJson = ((TextMessage) message.getContent()).getContent();
|
||||||
|
Log.e("wewe", contentJson);
|
||||||
|
SudGameSocketImEvent sudGameSocketImEvent = new Gson().fromJson(contentJson, SudGameSocketImEvent.class);
|
||||||
|
sudGameSocketImEvent.getMsg().get(0).setTime("11");
|
||||||
|
processingMessage(sudGameSocketImEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
|
||||||
|
Log.i("tx", "发送成功" + errorCode.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送聊天信息
|
||||||
|
*
|
||||||
|
* @param textMessage
|
||||||
|
*/
|
||||||
|
public void sendMessage(String textMessage) {
|
||||||
|
sendChatMessage(textMessage, "SendMsg");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进房间
|
||||||
|
*/
|
||||||
|
public void enterRoom() {
|
||||||
|
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
|
||||||
|
sendChatMessage(loginModel.getUserNicename(), "welcomMessage");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* activity相关回调
|
||||||
|
*/
|
||||||
|
public interface MeetingCallback {
|
||||||
|
void onJoinRoomSuccess(RCRTCRoom rcrtcRoom);
|
||||||
|
|
||||||
|
void onJoinRoomFailed(RTCErrorCode rtcErrorCode);
|
||||||
|
|
||||||
|
void onPublishSuccess();
|
||||||
|
|
||||||
|
|
||||||
|
void onPublishFailed();
|
||||||
|
|
||||||
|
void onUnPublishStreamsSuccess();
|
||||||
|
|
||||||
|
void onUnPublishStreamsFailed();
|
||||||
|
|
||||||
|
void onSubscribeSuccess(List<RCRTCInputStream> inputStreamList);
|
||||||
|
|
||||||
|
void onSubscribeFailed();
|
||||||
|
|
||||||
|
void onSubscribeSuccess(String userID, boolean mute, int position);
|
||||||
|
|
||||||
|
void onSubscribeFailed(String userID);
|
||||||
|
|
||||||
|
void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser);
|
||||||
|
|
||||||
|
void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser);
|
||||||
|
|
||||||
|
void insertItem(SudGameChatImModel sudGameChatImModel);
|
||||||
|
|
||||||
|
void refreshSudGameUserList(List<SudGameUserModel> personList);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,9 +15,14 @@ import com.bumptech.glide.request.RequestOptions;
|
|||||||
import com.iflytek.cloud.SpeechConstant;
|
import com.iflytek.cloud.SpeechConstant;
|
||||||
import com.iflytek.cloud.SpeechUtility;
|
import com.iflytek.cloud.SpeechUtility;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.bean.IMLoginModel;
|
import com.yunbao.common.bean.IMLoginModel;
|
||||||
|
import com.yunbao.common.dialog.DebugDialog;
|
||||||
import com.yunbao.common.event.RongIMConnectionStatusEvent;
|
import com.yunbao.common.event.RongIMConnectionStatusEvent;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
|
import com.yunbao.common.utils.AppManager;
|
||||||
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
@@ -25,6 +30,7 @@ import io.rong.imkit.GlideKitImageEngine;
|
|||||||
import io.rong.imkit.IMCenter;
|
import io.rong.imkit.IMCenter;
|
||||||
import io.rong.imkit.RongIM;
|
import io.rong.imkit.RongIM;
|
||||||
import io.rong.imkit.config.RongConfigCenter;
|
import io.rong.imkit.config.RongConfigCenter;
|
||||||
|
import io.rong.imlib.IRongCallback;
|
||||||
import io.rong.imlib.RongIMClient;
|
import io.rong.imlib.RongIMClient;
|
||||||
import io.rong.imlib.model.Conversation;
|
import io.rong.imlib.model.Conversation;
|
||||||
import io.rong.imlib.model.Message;
|
import io.rong.imlib.model.Message;
|
||||||
@@ -112,12 +118,31 @@ public class RongcloudIMManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void connectIM(Context context) {
|
||||||
|
connectIM(context, new RongIMClient.ConnectCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String t) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(RongIMClient.ConnectionErrorCode e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接融云服务器
|
* 连接融云服务器
|
||||||
*
|
*
|
||||||
* @param context
|
* @param context
|
||||||
*/
|
*/
|
||||||
public static void connectIM(Context context) {
|
public static void connectIM(Context context, RongIMClient.ConnectCallback callback) {
|
||||||
MessageIMManager.get(context).addImRongCloudObserver();
|
MessageIMManager.get(context).addImRongCloudObserver();
|
||||||
MessageIMManager.get(context).getSystemMessages();
|
MessageIMManager.get(context).getSystemMessages();
|
||||||
IMLoginModel userInfo = IMLoginManager.get(context).getUserInfo();
|
IMLoginModel userInfo = IMLoginManager.get(context).getUserInfo();
|
||||||
@@ -129,6 +154,7 @@ public class RongcloudIMManager {
|
|||||||
RongIM.connect(IMToken, 0, new RongIMClient.ConnectCallback() {
|
RongIM.connect(IMToken, 0, new RongIMClient.ConnectCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String s) {
|
public void onSuccess(String s) {
|
||||||
|
callback.onSuccess(s);
|
||||||
//连接成功,如果 onDatabaseOpened() 时没有页面跳转,也可在此时进行跳转。
|
//连接成功,如果 onDatabaseOpened() 时没有页面跳转,也可在此时进行跳转。
|
||||||
Log.e(CLASSNAME, "onSuccess:" + s);
|
Log.e(CLASSNAME, "onSuccess:" + s);
|
||||||
isReady = true;
|
isReady = true;
|
||||||
@@ -138,6 +164,7 @@ public class RongcloudIMManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(RongIMClient.ConnectionErrorCode connectionErrorCode) {
|
public void onError(RongIMClient.ConnectionErrorCode connectionErrorCode) {
|
||||||
|
callback.onError(connectionErrorCode);
|
||||||
if (connectionErrorCode.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_EXPIRE)) {
|
if (connectionErrorCode.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_EXPIRE)) {
|
||||||
//从 APP 服务请求新 token,获取到新 token 后重新 connect()
|
//从 APP 服务请求新 token,获取到新 token 后重新 connect()
|
||||||
Log.e(CLASSNAME, "onError:(从 APP 服务请求新 token)" + RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_EXPIRE);
|
Log.e(CLASSNAME, "onError:(从 APP 服务请求新 token)" + RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_EXPIRE);
|
||||||
@@ -152,6 +179,7 @@ public class RongcloudIMManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus databaseOpenStatus) {
|
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus databaseOpenStatus) {
|
||||||
|
callback.onDatabaseOpened(databaseOpenStatus);
|
||||||
if (RongIMClient.DatabaseOpenStatus.DATABASE_OPEN_SUCCESS.equals(databaseOpenStatus)) {
|
if (RongIMClient.DatabaseOpenStatus.DATABASE_OPEN_SUCCESS.equals(databaseOpenStatus)) {
|
||||||
//本地数据库打开,跳转到会话列表页面
|
//本地数据库打开,跳转到会话列表页面
|
||||||
Log.e(CLASSNAME, "onDatabaseOpened:(本地数据库打开)" + databaseOpenStatus);
|
Log.e(CLASSNAME, "onDatabaseOpened:(本地数据库打开)" + databaseOpenStatus);
|
||||||
@@ -225,4 +253,66 @@ public class RongcloudIMManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送消息失败重连次数,超过3就重新登录
|
||||||
|
*/
|
||||||
|
private static int reconnectIndex = 0;
|
||||||
|
|
||||||
|
public static void sendMessage(final Message message, final String pushContent, final String pushData, final IRongCallback.ISendMessageCallback callback) {
|
||||||
|
|
||||||
|
RongIMClient.getInstance().sendMessage(message, pushContent, pushData, new IRongCallback.ISendMessageCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttached(Message message) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onAttached(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Message message) {
|
||||||
|
reconnectIndex = 0;
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onSuccess(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
|
||||||
|
if (reconnectIndex > 2) {
|
||||||
|
reconnectIndex = 0;
|
||||||
|
ToastUtil.show(WordUtil.getNewString(R.string.login_invalid));
|
||||||
|
EventBus.getDefault().post(new RongIMConnectionStatusEvent());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (errorCode.code == 33000) {
|
||||||
|
reconnectIndex++;
|
||||||
|
connectIM(AppManager.getInstance().getMainActivity(), new RongIMClient.ConnectCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(String t) {
|
||||||
|
sendMessage(message, pushContent, pushData, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(RongIMClient.ConnectionErrorCode e) {
|
||||||
|
sendMessage(message, pushContent, pushData, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
|
||||||
|
if (RongIMClient.DatabaseOpenStatus.DATABASE_OPEN_ERROR.equals(code)) {
|
||||||
|
sendMessage(message, pushContent, pushData, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onError(message, errorCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.yunbao.common.pay.samsung;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
|
import com.samsung.android.sdk.iap.lib.constants.HelperDefine;
|
||||||
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
|
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
|
||||||
import com.samsung.android.sdk.iap.lib.listener.OnConsumePurchasedItemsListener;
|
import com.samsung.android.sdk.iap.lib.listener.OnConsumePurchasedItemsListener;
|
||||||
import com.samsung.android.sdk.iap.lib.listener.OnGetOwnedListListener;
|
import com.samsung.android.sdk.iap.lib.listener.OnGetOwnedListListener;
|
||||||
@@ -11,6 +11,8 @@ import com.samsung.android.sdk.iap.lib.listener.OnPaymentListener;
|
|||||||
import com.samsung.android.sdk.iap.lib.vo.ConsumeVo;
|
import com.samsung.android.sdk.iap.lib.vo.ConsumeVo;
|
||||||
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
|
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
|
||||||
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
|
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
|
||||||
|
import com.samsung.android.sdk.iap.lib.vo.PurchaseVo;
|
||||||
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -57,8 +59,26 @@ public class SamsungUtil {
|
|||||||
*/
|
*/
|
||||||
public void buy(String skuId, OnPaymentListener onPaymentListener) {
|
public void buy(String skuId, OnPaymentListener onPaymentListener) {
|
||||||
//购买
|
//购买
|
||||||
iapHelper.startPayment(skuId, "", onPaymentListener);
|
iapHelper.startPayment(skuId, "", (errorVo, purchaseVo) -> {
|
||||||
|
if (purchaseVo != null) {
|
||||||
|
onPaymentListener.onPaymentSuccess(purchaseVo.getPurchaseId());
|
||||||
|
} else {
|
||||||
|
if (errorVo.getErrorCode() == HelperDefine.IAP_PAYMENT_IS_CANCELED) {
|
||||||
|
onPaymentListener.onPaymentFailed(mContext.getString(R.string.pay_cancel));
|
||||||
|
} else {
|
||||||
|
onPaymentListener.onPaymentFailed(errorVo.getErrorString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnPaymentListener {
|
||||||
|
void onPaymentSuccess(String purchaseVo);
|
||||||
|
|
||||||
|
void onPaymentFailed(String errorVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消耗指定商品
|
* 消耗指定商品
|
||||||
|
|||||||
@@ -17,11 +17,13 @@ import com.yunbao.common.sud.decorator.SudFSTAPPDecorator;
|
|||||||
import com.yunbao.common.sud.model.GameConfigModel;
|
import com.yunbao.common.sud.model.GameConfigModel;
|
||||||
import com.yunbao.common.sud.model.GameViewInfoModel;
|
import com.yunbao.common.sud.model.GameViewInfoModel;
|
||||||
import com.yunbao.common.sud.state.MGStateResponse;
|
import com.yunbao.common.sud.state.MGStateResponse;
|
||||||
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.SudJsonUtils;
|
import com.yunbao.common.utils.SudJsonUtils;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
import tech.sud.logger.LogUtils;
|
||||||
import tech.sud.mgp.core.ISudFSMStateHandle;
|
import tech.sud.mgp.core.ISudFSMStateHandle;
|
||||||
import tech.sud.mgp.core.ISudFSTAPP;
|
import tech.sud.mgp.core.ISudFSTAPP;
|
||||||
import tech.sud.mgp.core.ISudListenerInitSDK;
|
import tech.sud.mgp.core.ISudListenerInitSDK;
|
||||||
@@ -479,4 +481,13 @@ public abstract class BaseGameViewModel implements SudFSMMGListener {
|
|||||||
return sudFSMMGDecorator.getSudFSMMGCache();
|
return sudFSMMGDecorator.getSudFSMMGCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏结算状态
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onGameMGCommonGameSettle(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSettle model) {
|
||||||
|
LogUtils.e("yqw=====>"+model);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,13 @@ import android.view.View;
|
|||||||
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.blankj.utilcode.util.LogUtils;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
import com.yunbao.common.bean.PrankProgressBean;
|
||||||
|
import com.yunbao.common.bean.SudGameInfoBean;
|
||||||
|
import com.yunbao.common.bean.SudGameScoreBean;
|
||||||
|
import com.yunbao.common.bean.SudSettleBean;
|
||||||
import com.yunbao.common.bean.SudgameCodeModel;
|
import com.yunbao.common.bean.SudgameCodeModel;
|
||||||
import com.yunbao.common.http.base.HttpCallback;
|
import com.yunbao.common.http.base.HttpCallback;
|
||||||
import com.yunbao.common.http.live.LiveNetManager;
|
import com.yunbao.common.http.live.LiveNetManager;
|
||||||
@@ -15,9 +20,14 @@ import com.yunbao.common.manager.IMLoginManager;
|
|||||||
import com.yunbao.common.sud.model.GameConfigModel;
|
import com.yunbao.common.sud.model.GameConfigModel;
|
||||||
import com.yunbao.common.sud.model.GameViewInfoModel;
|
import com.yunbao.common.sud.model.GameViewInfoModel;
|
||||||
import com.yunbao.common.sud.state.SudMGPMGState;
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import tech.sud.mgp.core.ISudFSMMG;
|
import tech.sud.mgp.core.ISudFSMMG;
|
||||||
import tech.sud.mgp.core.ISudFSMStateHandle;
|
import tech.sud.mgp.core.ISudFSMStateHandle;
|
||||||
@@ -62,6 +72,22 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
|
|||||||
public String languageCode = "zh-TW";
|
public String languageCode = "zh-TW";
|
||||||
|
|
||||||
public final MutableLiveData<View> gameViewLiveData = new MutableLiveData<>(); // 游戏View回调
|
public final MutableLiveData<View> gameViewLiveData = new MutableLiveData<>(); // 游戏View回调
|
||||||
|
private SudGameScoreBean sudGameScoreBean;//房间金豆的门槛和赢家奖励
|
||||||
|
private List<SudGameInfoBean> sudGameInfoBeanList = new ArrayList<>();//玩家信息
|
||||||
|
public final MutableLiveData<List<SudSettleBean>> listMutableLiveData = new MutableLiveData<>();//玩家排名信息
|
||||||
|
|
||||||
|
public void setSudGameInfoBeanList(List<SudGameInfoBean> sudGameInfoBeanList) {
|
||||||
|
this.sudGameInfoBeanList = sudGameInfoBeanList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public SudGameScoreBean getSudGameScoreBean() {
|
||||||
|
return sudGameScoreBean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSudGameScoreBean(SudGameScoreBean sudGameScoreBean) {
|
||||||
|
this.sudGameScoreBean = sudGameScoreBean;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 向接入方服务器获取code
|
* 向接入方服务器获取code
|
||||||
@@ -70,7 +96,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
|
|||||||
protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) {
|
protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) {
|
||||||
if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
|
if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
|
||||||
languageCode = "zh-TW";
|
languageCode = "zh-TW";
|
||||||
}else {
|
} else {
|
||||||
languageCode = "en-US";
|
languageCode = "en-US";
|
||||||
}
|
}
|
||||||
// TODO: 2022/6/10 注意,这里是演示使用OkHttpClient请求hello-sud服务
|
// TODO: 2022/6/10 注意,这里是演示使用OkHttpClient请求hello-sud服务
|
||||||
@@ -147,6 +173,81 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
|
|||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取房间的金豆数量和赢家获得的金豆
|
||||||
|
*/
|
||||||
|
public void getScore(String roomId, Activity activity) {
|
||||||
|
LiveNetManager.get(activity).getScore(roomId, new HttpCallback<SudGameScoreBean>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(SudGameScoreBean data) {
|
||||||
|
sudGameScoreBean = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(String error) {
|
||||||
|
ToastUtil.show(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进行排名和结算
|
||||||
|
*/
|
||||||
|
public void sudGameRank(SudMGPMGState.MGCommonGameSettle mgCommonGameSettle) {
|
||||||
|
List<SudSettleBean> settleBeans = new ArrayList<>();
|
||||||
|
int playerNum = mgCommonGameSettle.results.size();//玩家人数
|
||||||
|
int winnerNUm = countWinners(mgCommonGameSettle.results);//第一名人数
|
||||||
|
int winNum;//赢得或者失去的金豆
|
||||||
|
// 构建结算信息
|
||||||
|
for (SudMGPMGState.MGCommonGameSettle.PlayerResult playerResult : mgCommonGameSettle.results) {
|
||||||
|
String uid = playerResult.uid;
|
||||||
|
int rank = playerResult.rank;
|
||||||
|
SudGameInfoBean sudGameInfoBean = findGameInfoBean(uid);
|
||||||
|
if (sudGameInfoBean == null) return;
|
||||||
|
|
||||||
|
if (sudGameScoreBean.getGame_mode() == 1) {
|
||||||
|
//双人游戏
|
||||||
|
if (winnerNUm == 1){
|
||||||
|
winNum = (rank == 1) ? (int) (sudGameScoreBean.getRoom_sill() * 0.8) : -sudGameScoreBean.getRoom_sill();
|
||||||
|
}else {
|
||||||
|
winNum = -sudGameScoreBean.getRoom_ticket();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//多人游戏
|
||||||
|
if (rank == 1){
|
||||||
|
winNum = (playerNum*sudGameScoreBean.getRoom_win_num()-winnerNUm*sudGameScoreBean.getRoom_sill())/winnerNUm;
|
||||||
|
}else {
|
||||||
|
winNum = -sudGameScoreBean.getRoom_sill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settleBeans.add(new SudSettleBean(uid,sudGameInfoBean.getNick_name(),sudGameInfoBean.getAvatar_url(),rank,winNum));
|
||||||
|
}
|
||||||
|
// 更新LiveData
|
||||||
|
listMutableLiveData.setValue(settleBeans);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 统计第一名的玩家数量
|
||||||
|
private int countWinners(List<SudMGPMGState.MGCommonGameSettle.PlayerResult> results) {
|
||||||
|
int count = 0;
|
||||||
|
for (SudMGPMGState.MGCommonGameSettle.PlayerResult result : results) {
|
||||||
|
if (result.rank == 1) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据uid查找对应的游戏信息Bean
|
||||||
|
private SudGameInfoBean findGameInfoBean(String uid) {
|
||||||
|
for (SudGameInfoBean sudGameInfoBean : sudGameInfoBeanList) {
|
||||||
|
if (sudGameInfoBean.getUid().equals(uid)) {
|
||||||
|
return sudGameInfoBean;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置当前用户id(接入方定义)
|
* 设置当前用户id(接入方定义)
|
||||||
*/
|
*/
|
||||||
@@ -255,7 +356,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
|
|||||||
@Override
|
@Override
|
||||||
public void onGameMGCommonGameState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameState model) {
|
public void onGameMGCommonGameState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameState model) {
|
||||||
super.onGameMGCommonGameState(handle, model);
|
super.onGameMGCommonGameState(handle, model);
|
||||||
Log.e("QuickStartGameViewModel",model.toString());
|
Log.e("QuickStartGameViewModel", model.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package com.yunbao.common.sud.decorator;
|
|||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.blankj.utilcode.util.LogUtils;
|
||||||
import com.yunbao.common.event.CheckRemainingBalanceEvent;
|
import com.yunbao.common.event.CheckRemainingBalanceEvent;
|
||||||
import com.yunbao.common.sud.state.SudMGPMGState;
|
import com.yunbao.common.sud.state.SudMGPMGState;
|
||||||
import com.yunbao.common.utils.Bus;
|
import com.yunbao.common.utils.Bus;
|
||||||
@@ -177,11 +178,11 @@ public class SudFSMMGDecorator implements ISudFSMMG {
|
|||||||
} else {
|
} else {
|
||||||
listener.onGameMGCommonGameSettle(handle, mgCommonGameSettle);
|
listener.onGameMGCommonGameSettle(handle, mgCommonGameSettle);
|
||||||
}
|
}
|
||||||
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_SETTLE));
|
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_SETTLE).setMgCommonGameSettle(mgCommonGameSettle));
|
||||||
break;
|
break;
|
||||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN: // 4. 加入游戏按钮点击状态
|
case SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN: // 4. 加入游戏按钮点击状态
|
||||||
SudMGPMGState.MGCommonSelfClickJoinBtn mgCommonSelfClickJoinBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickJoinBtn.class);
|
SudMGPMGState.MGCommonSelfClickJoinBtn mgCommonSelfClickJoinBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickJoinBtn.class);
|
||||||
Bus.get().post(new CheckRemainingBalanceEvent().setSeatIndex(mgCommonSelfClickJoinBtn.seatIndex).setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN));
|
Bus.get().post(new CheckRemainingBalanceEvent().setSeatIndex(mgCommonSelfClickJoinBtn.seatIndex).setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN).setSubReady(false));
|
||||||
// if (listener == null) {
|
// if (listener == null) {
|
||||||
// ISudFSMStateHandleUtils.handleSuccess(handle);
|
// ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||||
// } else {
|
// } else {
|
||||||
@@ -258,7 +259,7 @@ public class SudFSMMGDecorator implements ISudFSMMG {
|
|||||||
// } else {
|
// } else {
|
||||||
// listener.onGameMGCommonSelfClickGameSettleAgainBtn(handle, mgCommonSelfClickGameSettleAgainBtn);
|
// listener.onGameMGCommonSelfClickGameSettleAgainBtn(handle, mgCommonSelfClickGameSettleAgainBtn);
|
||||||
// }
|
// }
|
||||||
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN));
|
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN).setSubReady(false));
|
||||||
break;
|
break;
|
||||||
case SudMGPMGState.MG_COMMON_GAME_SOUND_LIST: // 13. 游戏上报游戏中的声音列表(2021-12-30新增,现在只支持碰碰我最强)
|
case SudMGPMGState.MG_COMMON_GAME_SOUND_LIST: // 13. 游戏上报游戏中的声音列表(2021-12-30新增,现在只支持碰碰我最强)
|
||||||
SudMGPMGState.MGCommonGameSoundList mgCommonGameSoundList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSoundList.class);
|
SudMGPMGState.MGCommonGameSoundList mgCommonGameSoundList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSoundList.class);
|
||||||
|
|||||||
@@ -170,6 +170,15 @@ public class SudMGPMGState implements Serializable {
|
|||||||
// 游戏结果玩家列表
|
// 游戏结果玩家列表
|
||||||
public List<PlayerResult> results;
|
public List<PlayerResult> results;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "MGCommonGameSettle{" +
|
||||||
|
"gameMode=" + gameMode +
|
||||||
|
", gameRoundId='" + gameRoundId + '\'' +
|
||||||
|
", results=" + results +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 游戏结果玩家定义
|
* 游戏结果玩家定义
|
||||||
*/
|
*/
|
||||||
@@ -181,6 +190,19 @@ public class SudMGPMGState implements Serializable {
|
|||||||
public int isEscaped; // 是否逃跑 1:逃跑 0:非逃跑
|
public int isEscaped; // 是否逃跑 1:逃跑 0:非逃跑
|
||||||
public String killerId; // 杀自己的玩家的id
|
public String killerId; // 杀自己的玩家的id
|
||||||
public int isAI; // 是否是AI玩家,1为AI
|
public int isAI; // 是否是AI玩家,1为AI
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PlayerResult{" +
|
||||||
|
"uid='" + uid + '\'' +
|
||||||
|
", rank=" + rank +
|
||||||
|
", award=" + award +
|
||||||
|
", score=" + score +
|
||||||
|
", isEscaped=" + isEscaped +
|
||||||
|
", killerId='" + killerId + '\'' +
|
||||||
|
", isAI=" + isAI +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public class UploadBean {
|
|||||||
public static final int IMG = 0;
|
public static final int IMG = 0;
|
||||||
public static final int VIDEO = 1;
|
public static final int VIDEO = 1;
|
||||||
public static final int VOICE = 2;
|
public static final int VOICE = 2;
|
||||||
|
public static final int LOG = 3;
|
||||||
private File mOriginFile;//要被上传的源文件
|
private File mOriginFile;//要被上传的源文件
|
||||||
private File mCompressFile;//压缩后的图片文件
|
private File mCompressFile;//压缩后的图片文件
|
||||||
private String mRemoteFileName;//上传成功后在云存储上的文件名字
|
private String mRemoteFileName;//上传成功后在云存储上的文件名字
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.yunbao.common.upload;
|
package com.yunbao.common.upload;
|
||||||
|
|
||||||
|
import static java.text.DateFormat.DEFAULT;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
@@ -11,6 +13,7 @@ import com.qiniu.android.storage.UpCompletionHandler;
|
|||||||
import com.qiniu.android.storage.UploadManager;
|
import com.qiniu.android.storage.UploadManager;
|
||||||
import com.yunbao.common.http.CommonHttpUtil;
|
import com.yunbao.common.http.CommonHttpUtil;
|
||||||
import com.yunbao.common.http.HttpCallback;
|
import com.yunbao.common.http.HttpCallback;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.utils.L;
|
import com.yunbao.common.utils.L;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
@@ -18,7 +21,10 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import top.zibin.luban.Luban;
|
import top.zibin.luban.Luban;
|
||||||
|
|
||||||
@@ -52,7 +58,9 @@ public class UploadQnImpl implements UploadStrategy {
|
|||||||
assert response != null;
|
assert response != null;
|
||||||
mList.get(mIndex).setRemoteAccessUrl(response.getString("key"));
|
mList.get(mIndex).setRemoteAccessUrl(response.getString("key"));
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
throw new RuntimeException(e);
|
// throw new RuntimeException(e);
|
||||||
|
L.e(e);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (mList == null || mList.size() == 0) {
|
if (mList == null || mList.size() == 0) {
|
||||||
if (mUploadCallback != null) {
|
if (mUploadCallback != null) {
|
||||||
@@ -72,6 +80,8 @@ public class UploadQnImpl implements UploadStrategy {
|
|||||||
compressedFile.delete();
|
compressedFile.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (uploadBean.getType() == UploadBean.LOG) {
|
||||||
|
uploadBean.getOriginFile().delete();
|
||||||
}
|
}
|
||||||
mIndex++;
|
mIndex++;
|
||||||
if (mIndex < mList.size()) {
|
if (mIndex < mList.size()) {
|
||||||
@@ -90,6 +100,10 @@ public class UploadQnImpl implements UploadStrategy {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback, boolean isImg) {
|
public void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback, boolean isImg) {
|
||||||
|
upload(list, needCompress, callback, isImg, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback, boolean isImg, boolean isLog) {
|
||||||
System.err.println("-------upload------>" + list.size());
|
System.err.println("-------upload------>" + list.size());
|
||||||
if (callback == null) {
|
if (callback == null) {
|
||||||
return;
|
return;
|
||||||
@@ -127,8 +141,12 @@ public class UploadQnImpl implements UploadStrategy {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
if (isLog) {
|
||||||
|
CommonHttpUtil.getUploadQiNiuTokenLog(mGetUploadTokenCallback, list.get(0).getOriginFile().getName());
|
||||||
|
} else {
|
||||||
CommonHttpUtil.getUploadQiNiuToken(mGetUploadTokenCallback, isImg);
|
CommonHttpUtil.getUploadQiNiuToken(mGetUploadTokenCallback, isImg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancelUpload() {
|
public void cancelUpload() {
|
||||||
@@ -159,8 +177,16 @@ public class UploadQnImpl implements UploadStrategy {
|
|||||||
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".mp4"));
|
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".mp4"));
|
||||||
} else if (bean.getType() == UploadBean.VOICE) {
|
} else if (bean.getType() == UploadBean.VOICE) {
|
||||||
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".m4a"));
|
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".m4a"));
|
||||||
|
} else if (bean.getType() == UploadBean.LOG) {
|
||||||
|
bean.setRemoteFileName("logs/"
|
||||||
|
+ IMLoginManager.get(mContext).getUserInfo().getId()
|
||||||
|
+ "/"
|
||||||
|
+ SimpleDateFormat.getDateInstance(DEFAULT, Locale.CHINA).format(new Date())
|
||||||
|
+ "/"
|
||||||
|
+ bean.getOriginFile().getName()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
System.err.println("-------mIndex >= bean.getType() == UploadBean.IMG------>" + bean);
|
System.err.println("-------mIndex >= bean.getType() == " + bean.getType() + "------>" + bean);
|
||||||
upload(bean);
|
upload(bean);
|
||||||
/*if (bean.getType() == UploadBean.IMG && mNeedCompress) {
|
/*if (bean.getType() == UploadBean.IMG && mNeedCompress) {
|
||||||
System.err.println("-------UploadBean.IMG && mNeedCompress------>" + bean + "UploadBean.IMG:" + UploadBean.IMG + "__mNeedCompress" + mNeedCompress);
|
System.err.println("-------UploadBean.IMG && mNeedCompress------>" + bean + "UploadBean.IMG:" + UploadBean.IMG + "__mNeedCompress" + mNeedCompress);
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.yunbao.common.utils;
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.util.Log;
|
||||||
import com.yunbao.common.BuildConfig;
|
import com.yunbao.common.BuildConfig;
|
||||||
|
|
||||||
|
import com.yunbao.common.manager.OpenAdManager;
|
||||||
|
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
||||||
public class AppManager {
|
public class AppManager {
|
||||||
@@ -11,7 +13,7 @@ public class AppManager {
|
|||||||
private static Stack<Activity> activityStack;
|
private static Stack<Activity> activityStack;
|
||||||
|
|
||||||
public AppManager() {
|
public AppManager() {
|
||||||
activityStack=new Stack<>();
|
activityStack = new Stack<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,18 +38,40 @@ public class AppManager {
|
|||||||
return activity;
|
return activity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return getLastActivity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Activity getLiveActivity() {
|
public Activity getLiveActivity() {
|
||||||
for (Activity activity : activityStack) {
|
for (Activity activity : activityStack) {
|
||||||
if (activity.getClass().getSimpleName().contains("LiveAudienceActivity")) {
|
if (activity.getClass().getSimpleName().contains("LiveActivity")) {
|
||||||
return activity;
|
return activity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clear() {
|
||||||
|
activityStack.clear();
|
||||||
|
OpenAdManager.getInstance().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMainActivity() {
|
||||||
|
Activity lastActivity = getLastActivity();
|
||||||
|
if (lastActivity == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return lastActivity.getClass().getSimpleName().contains("MainActivity");
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO 首页类型没展示完进直播间会不展示直播间的。
|
||||||
|
public boolean isLiveActivity() {
|
||||||
|
Activity lastActivity = getLastActivity();
|
||||||
|
if (lastActivity == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return lastActivity.getClass().getSimpleName().contains("LiveAudienceActivity");
|
||||||
|
}
|
||||||
|
|
||||||
public static class SingleApp {
|
public static class SingleApp {
|
||||||
public static AppManager INSTANCE = new AppManager();
|
public static AppManager INSTANCE = new AppManager();
|
||||||
}
|
}
|
||||||
@@ -59,6 +83,10 @@ public class AppManager {
|
|||||||
if (activityStack == null) {
|
if (activityStack == null) {
|
||||||
activityStack = new Stack<Activity>();
|
activityStack = new Stack<Activity>();
|
||||||
}
|
}
|
||||||
|
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>class com.yunbao.main.activity.MsgAddressBookActivity
|
||||||
|
if (getActivity(activity.getClass()) != null) {
|
||||||
|
activityStack.remove(getActivity(activity.getClass()));
|
||||||
|
}
|
||||||
activityStack.add(activity);
|
activityStack.add(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ public class JavascriptInterfaceUtils {
|
|||||||
liveBean.setGiftId(giftId);
|
liveBean.setGiftId(giftId);
|
||||||
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
|
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
|
||||||
|
|
||||||
if (!"".endsWith(Constants.mStream)) {
|
if (!"".endsWith(Constants.mStream)) {
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ public class JavascriptInterfaceUtils {
|
|||||||
}
|
}
|
||||||
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)).setLiveEnd(true));
|
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)).setLiveEnd(true));
|
||||||
} else {
|
} else {
|
||||||
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk));
|
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk),isSw);
|
||||||
}
|
}
|
||||||
androidGoBack();
|
androidGoBack();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,13 @@ package com.yunbao.common.utils;
|
|||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by cxf on 2017/8/3.
|
* Created by cxf on 2017/8/3.
|
||||||
*/
|
*/
|
||||||
@@ -12,17 +19,35 @@ public class L {
|
|||||||
|
|
||||||
private final static String TAG = "log--->";
|
private final static String TAG = "log--->";
|
||||||
|
|
||||||
|
private final static String TAG_SW = "log--->TAG_SW";
|
||||||
|
|
||||||
public static void e(String s) {
|
public static void e(String s) {
|
||||||
e(TAG, s);
|
e(TAG, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void eSw(String s) {
|
||||||
|
if (sDeBug) {
|
||||||
|
Log.e(TAG_SW, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
|
||||||
|
|
||||||
public static void e(String tag, String s) {
|
public static void e(String tag, String s) {
|
||||||
if (sDeBug) {
|
if (sDeBug) {
|
||||||
Log.e(tag, s);
|
Log.e(tag, s);
|
||||||
|
} else {
|
||||||
|
String uuid = UUID.randomUUID().toString();
|
||||||
|
Log.e(tag, uuid);
|
||||||
|
LogUtils.addSafeLog(dateFormat.format(new Date()) + " [" + uuid + "|" + tag + "] " + s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setDeBug(boolean deBug) {
|
public static void setDeBug(boolean deBug) {
|
||||||
sDeBug = deBug;
|
sDeBug = deBug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void e(Exception e) {
|
||||||
|
Log.e("Exception", e.getMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
private LiveBean mLiveBean;
|
private LiveBean mLiveBean;
|
||||||
private ActionListener mActionListener;
|
private ActionListener mActionListener;
|
||||||
private int mLiveSdk;
|
private int mLiveSdk;
|
||||||
|
private boolean isSw;
|
||||||
//搜索页面不提示密码
|
//搜索页面不提示密码
|
||||||
public static boolean isRoom = false;
|
public static boolean isRoom = false;
|
||||||
|
|
||||||
@@ -50,7 +51,7 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
@Override
|
@Override
|
||||||
public void forwardNormalRoom(CheckLiveModel model) {
|
public void forwardNormalRoom(CheckLiveModel model) {
|
||||||
if (actionListener != null) {
|
if (actionListener != null) {
|
||||||
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk());
|
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk(),model.getIsShengwang().equals("1"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
if (model.getTypeMsg().equalsIgnoreCase(password)) {
|
if (model.getTypeMsg().equalsIgnoreCase(password)) {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
if (actionListener != null) {
|
if (actionListener != null) {
|
||||||
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk());
|
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk(),model.getIsShengwang().equals("1"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ToastUtil.show(mContext.getString(R.string.live_password_error));
|
ToastUtil.show(mContext.getString(R.string.live_password_error));
|
||||||
@@ -93,7 +94,7 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
public void onSuccess(int code, String msg, String[] info) {
|
public void onSuccess(int code, String msg, String[] info) {
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
if (actionListener != null) {
|
if (actionListener != null) {
|
||||||
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk());
|
actionListener.onLiveRoomChanged(liveUid, stream, model.getType(), model.getTypeVal(), model.getLiveSdk(),model.getIsShengwang().equals("1"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ToastUtil.show(msg);
|
ToastUtil.show(msg);
|
||||||
@@ -139,6 +140,7 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
mLiveTypeMsg = obj.getString("type_msg");
|
mLiveTypeMsg = obj.getString("type_msg");
|
||||||
if (CommonAppConfig.LIVE_SDK_CHANGED) {
|
if (CommonAppConfig.LIVE_SDK_CHANGED) {
|
||||||
mLiveSdk = obj.getIntValue("live_sdk");
|
mLiveSdk = obj.getIntValue("live_sdk");
|
||||||
|
isSw= obj.getString("is_shengwang").equals("1");
|
||||||
} else {
|
} else {
|
||||||
mLiveSdk = CommonAppConfig.LIVE_SDK_USED;
|
mLiveSdk = CommonAppConfig.LIVE_SDK_USED;
|
||||||
}
|
}
|
||||||
@@ -263,17 +265,16 @@ public class LiveRoomCheckLivePresenter {
|
|||||||
*/
|
*/
|
||||||
private void enterLiveRoom() {
|
private void enterLiveRoom() {
|
||||||
if (mActionListener != null) {
|
if (mActionListener != null) {
|
||||||
mActionListener.onLiveRoomChanged(mLiveBean, mLiveType, mLiveTypeVal, mLiveSdk);
|
mActionListener.onLiveRoomChanged(mLiveBean, mLiveType, mLiveTypeVal, mLiveSdk,isSw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public interface ActionListener {
|
public interface ActionListener {
|
||||||
void onLiveRoomChanged(LiveBean liveBean, int liveType, int liveTypeVal, int liveSdk);
|
void onLiveRoomChanged(LiveBean liveBean, int liveType, int liveTypeVal, int liveSdk,boolean isSw);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface NewActionListener {
|
public interface NewActionListener {
|
||||||
void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk);
|
void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw);
|
||||||
|
|
||||||
void onCheckError(String contextError);
|
void onCheckError(String contextError);
|
||||||
}
|
}
|
||||||
|
|||||||
209
common/src/main/java/com/yunbao/common/utils/LoadSoUtil.java
Normal file
209
common/src/main/java/com/yunbao/common/utils/LoadSoUtil.java
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.pdlive.lib_so.DynamicSoLauncher;
|
||||||
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
|
import okhttp3.Call;
|
||||||
|
import okhttp3.Callback;
|
||||||
|
import okhttp3.Cookie;
|
||||||
|
import okhttp3.CookieJar;
|
||||||
|
import okhttp3.HttpUrl;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
|
|
||||||
|
public class LoadSoUtil {
|
||||||
|
|
||||||
|
//so保存的路径
|
||||||
|
public static final String so_path = CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + "/" + LoadSoUtil.so_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 先加载so文件,再去做初始化的操作
|
||||||
|
* 1.正常的流程,判断手机的类型 加载不同的so(SUPPORTED_ABIS[0].contains("64"),代码中还未实现 )
|
||||||
|
* 2.通过不同的url去下载对应的so的zip文件
|
||||||
|
* 3.解压zip到指定位置
|
||||||
|
* 4.加载解压完成的so文件
|
||||||
|
*/
|
||||||
|
public static void downloadSoAndLoad(Context context, onLoadSoListener listener) {
|
||||||
|
//检查本地是否创建了zip的缓存文件
|
||||||
|
String path = context.getFilesDir().getAbsolutePath() + "/so_zip";
|
||||||
|
File file = new File(path);
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.mkdir();
|
||||||
|
} else if (isLoadSo()) {//这里去验证so文件是否已经下载过了
|
||||||
|
loadSo(listener);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OkHttpClient.Builder builder = new OkHttpClient.Builder()
|
||||||
|
.connectTimeout(10, TimeUnit.SECONDS)
|
||||||
|
.readTimeout(10, TimeUnit.SECONDS)
|
||||||
|
.writeTimeout(10 * 5, TimeUnit.SECONDS)
|
||||||
|
.cookieJar(new CookieJar() {
|
||||||
|
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveFromResponse(@NotNull HttpUrl httpUrl, @NotNull List<Cookie> list) {
|
||||||
|
cookieStore.put(httpUrl.host(), list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public List<Cookie> loadForRequest(@NotNull HttpUrl httpUrl) {
|
||||||
|
List<Cookie> cookies = cookieStore.get(httpUrl.host());
|
||||||
|
return cookies != null ? cookies : new ArrayList<>();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.hostnameVerifier((hostname, session) -> true);
|
||||||
|
//开始下载文件
|
||||||
|
downloadFile(builder.build(), "https://downs.yaoulive.com/x86.zip", new File(path + "/" + "libSo.zip"), new onLoadSoListener() {
|
||||||
|
@Override
|
||||||
|
public void ok() {
|
||||||
|
//下载完成开始解压 解压完成之后 区初始化声网数据
|
||||||
|
zip(path + "/" + "libSo.zip", listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void error() {
|
||||||
|
listener.error();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载完成解压zip文件
|
||||||
|
*/
|
||||||
|
private static void zip(String path, onLoadSoListener listener) {
|
||||||
|
ZipInputStream zis = null;
|
||||||
|
FileOutputStream fos = null;
|
||||||
|
try {
|
||||||
|
zis = new ZipInputStream(new FileInputStream(path));
|
||||||
|
ZipEntry ze;
|
||||||
|
String soPath = so_path;
|
||||||
|
File file = new File(soPath);
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.mkdir();
|
||||||
|
}
|
||||||
|
while ((ze = zis.getNextEntry()) != null) {
|
||||||
|
String fileName = ze.getName();
|
||||||
|
File newFile = new File(soPath + File.separator + fileName);
|
||||||
|
fos = new FileOutputStream(newFile);
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len;
|
||||||
|
while ((len = zis.read(buffer)) > 0) {
|
||||||
|
fos.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
fos.close();
|
||||||
|
zis.closeEntry();
|
||||||
|
}
|
||||||
|
loadSo(listener);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
listener.error();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (zis != null) zis.close();
|
||||||
|
if (fos != null) fos.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 去下载so的zip文件
|
||||||
|
* 可以在下载之前去做zip是否已经下载的验证,还可以根据版本做区分(是否是最新版本,要不要做断点续传)
|
||||||
|
*/
|
||||||
|
private static void downloadFile(OkHttpClient mOkHttpClient, String url, File file, onLoadSoListener listener) {
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.get()
|
||||||
|
.url(url)
|
||||||
|
.build();
|
||||||
|
mOkHttpClient.newCall(request)
|
||||||
|
.enqueue(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call call, IOException e) {
|
||||||
|
if (listener != null) listener.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call call, Response response) {
|
||||||
|
if (response.isSuccessful()) {
|
||||||
|
InputStream is = null;
|
||||||
|
BufferedOutputStream bos = null;
|
||||||
|
try {
|
||||||
|
is = response.body().byteStream();
|
||||||
|
bos = new BufferedOutputStream(new FileOutputStream(file));
|
||||||
|
byte[] bytes = new byte[10240];
|
||||||
|
int len;
|
||||||
|
while ((len = is.read(bytes)) != -1) {
|
||||||
|
bos.write(bytes, 0, len);
|
||||||
|
}
|
||||||
|
bos.flush();
|
||||||
|
if (listener != null) listener.ok();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
if (listener != null) listener.error();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (bos != null) bos.close();
|
||||||
|
if (is != null) is.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLoadSo() {
|
||||||
|
File fileSo = new File(so_path);
|
||||||
|
if (!fileSo.exists()) {
|
||||||
|
fileSo.mkdir();
|
||||||
|
}
|
||||||
|
if (fileSo.listFiles().length == 22) {//说明之前已经保存了
|
||||||
|
Log.i("mLog", "已经下载了so 所有直接加载就行 ");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用自己实现的加载so的方式
|
||||||
|
*/
|
||||||
|
public static void loadSo(onLoadSoListener listener) {
|
||||||
|
File fileSo = new File(so_path);
|
||||||
|
if (!fileSo.exists()) {
|
||||||
|
fileSo.mkdir();
|
||||||
|
}
|
||||||
|
File file[] = fileSo.listFiles();
|
||||||
|
for (int i = 0; i < file.length; i++) {
|
||||||
|
DynamicSoLauncher.INSTANCE.loadSoDynamically(file[i]);
|
||||||
|
}
|
||||||
|
listener.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface onLoadSoListener {
|
||||||
|
void ok();
|
||||||
|
|
||||||
|
void error();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -24,28 +24,25 @@ import com.lzy.okgo.request.PostRequest;
|
|||||||
import com.lzy.okserver.OkUpload;
|
import com.lzy.okserver.OkUpload;
|
||||||
import com.lzy.okserver.upload.UploadListener;
|
import com.lzy.okserver.upload.UploadListener;
|
||||||
import com.lzy.okserver.upload.UploadTask;
|
import com.lzy.okserver.upload.UploadTask;
|
||||||
|
import com.yunbao.common.BuildConfig;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.bean.IMLoginModel;
|
import com.yunbao.common.http.live.LiveNetManager;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.upload.UploadBean;
|
||||||
|
import com.yunbao.common.upload.UploadCallback;
|
||||||
|
import com.yunbao.common.upload.UploadQnImpl;
|
||||||
|
|
||||||
import java.io.BufferedOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.channels.Channels;
|
|
||||||
import java.nio.channels.FileChannel;
|
|
||||||
import java.nio.channels.WritableByteChannel;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
import okhttp3.Call;
|
import okhttp3.Call;
|
||||||
import okhttp3.Callback;
|
import okhttp3.Callback;
|
||||||
@@ -149,61 +146,94 @@ public class LogUtil {
|
|||||||
|
|
||||||
|
|
||||||
public static void shareFile(Context context) {
|
public static void shareFile(Context context) {
|
||||||
try {
|
|
||||||
IMLoginModel bean = IMLoginManager.get(context).getUserInfo();
|
|
||||||
boolean isAnchor = false;
|
|
||||||
if (bean != null) {
|
|
||||||
isAnchor = bean.anchorUserType();
|
|
||||||
}
|
|
||||||
//有debug文件或主播才允许
|
|
||||||
if (!new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "pdlive.debug").exists() && !isAnchor) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/* if (PermissionChecker.checkCallingOrSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) {
|
|
||||||
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
String title = "[PDLIVE]" + CommonAppConfig.getInstance().getUid() + "_";
|
String title = "[PDLIVE]" + CommonAppConfig.getInstance().getUid() + "_";
|
||||||
String today = title + SimpleDateFormat.getDateInstance(DEFAULT, Locale.CHINA).format(new Date());
|
String today = title + SimpleDateFormat.getDateInstance(DEFAULT, Locale.CHINA).format(new Date());
|
||||||
File dir = new File(context.getDir("files", Context.MODE_PRIVATE).getAbsolutePath() + File.separator);
|
File dir = new File("/data/data/" + context.getPackageName() + File.separator);
|
||||||
File zip = new File(context.getDir("files", Context.MODE_PRIVATE).getAbsolutePath() + File.separator + today + ".zip");
|
File zip = new File(context.getDir("files", Context.MODE_PRIVATE).getAbsolutePath() + File.separator + today + ".zip");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zip)));
|
List<String> filters = getFiltersList(context.getPackageName());
|
||||||
FileInputStream fis = null;
|
filters.add(context.getPackageName() + File.separator + "app_files" + File.separator + today + ".zip");
|
||||||
WritableByteChannel writableByteChannel = Channels.newChannel(zos);
|
List<String> srcList = new ArrayList<>();
|
||||||
if (dir.listFiles() != null) {
|
srcList.add(dir.getAbsolutePath());
|
||||||
for (File file : dir.listFiles()) {
|
srcList.add(context.getExternalFilesDir("").getAbsolutePath());
|
||||||
if (file.getName().endsWith(".log")) {
|
LogUtils.endSafeLog();
|
||||||
ZipEntry entry = new ZipEntry(file.getName());
|
ZipUtils.zipFolder(srcList, zip.getAbsolutePath(), filters, new Runnable() {
|
||||||
zos.putNextEntry(entry);
|
@Override
|
||||||
fis = new FileInputStream(file);
|
public void run() {
|
||||||
FileChannel channel = fis.getChannel();
|
if (BuildConfig.DEBUG) {
|
||||||
channel.transferTo(0, file.length() - 1, writableByteChannel);
|
return;
|
||||||
fis.close();
|
|
||||||
}
|
}
|
||||||
|
UploadQnImpl mUploadStrategy = new UploadQnImpl(context);
|
||||||
|
List<UploadBean> list = new ArrayList<>();
|
||||||
|
list.add(new UploadBean(zip, UploadBean.LOG));
|
||||||
|
mUploadStrategy.upload(list, false, new UploadCallback() {
|
||||||
|
@Override
|
||||||
|
public void onFinish(List<UploadBean> list, boolean success) {
|
||||||
|
if (success) {
|
||||||
|
LiveNetManager.get(context).getLogUpdateStatus("3", null);
|
||||||
}
|
}
|
||||||
|
LogUtils.startSafeLog(context);
|
||||||
}
|
}
|
||||||
zos.close();
|
}, false, true);
|
||||||
writableByteChannel.close();
|
}
|
||||||
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
if (zip.exists()) {
|
|
||||||
DialogUitl.showSimpleDialog(context, "上报日志", new DialogUitl.SimpleCallback() {
|
|
||||||
@Override
|
|
||||||
public void onConfirmClick(Dialog dialog, String content) {
|
|
||||||
new Thread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
uploadLog(zip);
|
|
||||||
}
|
}
|
||||||
}).start();
|
|
||||||
dialog.dismiss();
|
private static @NonNull List<String> getFiltersList(String packageName) {
|
||||||
ToastUtil.show("OK");
|
List<String> filters = new ArrayList<>();
|
||||||
|
filters.add(packageName + File.separator + "files" + File.separator + "gif");
|
||||||
|
filters.add(packageName + File.separator + "app_textures");
|
||||||
|
filters.add(packageName + File.separator + "app_webview");
|
||||||
|
filters.add(packageName + File.separator + "code_cache");
|
||||||
|
filters.add(packageName + File.separator + "databases");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "https");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "image");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "jtechCache");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "picasso-cache");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "svga");
|
||||||
|
filters.add(packageName + File.separator + "cache" + File.separator + "WebView");
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String TAG = "Upload";
|
||||||
|
|
||||||
|
private static void uploadLog(File log) {
|
||||||
|
|
||||||
|
JSONObject body = new JSONObject();
|
||||||
|
|
||||||
|
MultipartBody requestBody = new MultipartBody.Builder().addFormDataPart("uid", CommonAppConfig.getInstance().getUid()).addFormDataPart("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date())).addFormDataPart("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY + "").addFormDataPart("appVersion", CommonAppConfig.getInstance().getVersion()).addFormDataPart("file", "file", RequestBody.create(MediaType.parse("application/octet-stream"), log)) //上报日志文件
|
||||||
|
.build();
|
||||||
|
|
||||||
|
body.put("uid", CommonAppConfig.getInstance().getUid());
|
||||||
|
body.put("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date()));
|
||||||
|
body.put("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY);
|
||||||
|
body.put("appVersion", CommonAppConfig.getInstance().getVersion());
|
||||||
|
|
||||||
|
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(3, TimeUnit.SECONDS).build();
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url("https://tools.yutou233.cn/public/file/request.do")//临时上报地址,可接受文件
|
||||||
|
//.url("https://newht.yaoulive.com/index.php/api/error_log/report") //无法接受文件
|
||||||
|
.post(requestBody).build();
|
||||||
|
client.newCall(request).enqueue(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call call, @NonNull IOException e) {
|
||||||
|
Log.e(TAG, "error", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call call, okhttp3.Response response) throws IOException {
|
||||||
|
String body = response.body().string();
|
||||||
|
Log.i(TAG, "onResponse: " + body);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void openShareDialog(Context context, File zip) {
|
||||||
Intent share = new Intent(Intent.ACTION_SEND);
|
Intent share = new Intent(Intent.ACTION_SEND);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", zip);
|
Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", zip);
|
||||||
@@ -231,43 +261,4 @@ public class LogUtil {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String TAG = "Upload";
|
|
||||||
|
|
||||||
private static void uploadLog(File log) {
|
|
||||||
|
|
||||||
JSONObject body = new JSONObject();
|
|
||||||
|
|
||||||
MultipartBody requestBody = new MultipartBody.Builder().addFormDataPart("uid", CommonAppConfig.getInstance().getUid()).addFormDataPart("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date())).addFormDataPart("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY + "").addFormDataPart("appVersion", CommonAppConfig.getInstance().getVersion()).addFormDataPart("file", "file", RequestBody.create(MediaType.parse("application/octet-stream"), log)) //上报日志文件
|
|
||||||
.build();
|
|
||||||
|
|
||||||
body.put("uid", CommonAppConfig.getInstance().getUid());
|
|
||||||
body.put("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date()));
|
|
||||||
body.put("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY);
|
|
||||||
body.put("appVersion", CommonAppConfig.getInstance().getVersion());
|
|
||||||
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(3, TimeUnit.SECONDS).build();
|
|
||||||
Request request = new Request.Builder().url("https://newht.yaoulive.com/index.php/api/error_log/report") //无法接受文件
|
|
||||||
.post(requestBody).build();
|
|
||||||
client.newCall(request).enqueue(new Callback() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Call call, @NonNull IOException e) {
|
|
||||||
Log.e(TAG, "error", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResponse(Call call, okhttp3.Response response) throws IOException {
|
|
||||||
String body = response.body().string();
|
|
||||||
Log.i(TAG, "onResponse: " + body);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.shayu.phonelive.utils;
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
import static java.text.DateFormat.DEFAULT;
|
import static java.text.DateFormat.DEFAULT;
|
||||||
|
|
||||||
@@ -17,8 +17,11 @@ import java.util.Calendar;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
public class LogUtils {
|
public class LogUtils {
|
||||||
|
private static final LinkedBlockingQueue<String> QUEUE = new LinkedBlockingQueue<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采集所有日志
|
* 采集所有日志
|
||||||
*/
|
*/
|
||||||
@@ -68,7 +71,55 @@ public class LogUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
startSafeLog(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Thread safeThread;
|
||||||
|
private static boolean writerSafeLog = true;
|
||||||
|
|
||||||
|
public static void startSafeLog(Context context) {
|
||||||
|
if (safeThread != null && safeThread.isAlive()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
safeThread = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String title = CommonAppConfig.getInstance().getUid() + "_";
|
||||||
|
String today = title + SimpleDateFormat.getDateInstance(DEFAULT, Locale.CHINA).format(new Date());
|
||||||
|
File saveFile = new File(context.getDir("files", Context.MODE_PRIVATE).getAbsolutePath() + File.separator + today + ".safe");
|
||||||
|
saveFile.createNewFile();
|
||||||
|
FileOutputStream os = new FileOutputStream(saveFile, true);
|
||||||
|
PrintWriter writer = new PrintWriter(os);
|
||||||
|
while (writerSafeLog) {
|
||||||
|
if (!QUEUE.isEmpty()) {
|
||||||
|
writer.append(QUEUE.poll()).write("\n");
|
||||||
|
writer.flush();
|
||||||
|
} else {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (!QUEUE.isEmpty()){
|
||||||
|
writer.append(QUEUE.poll()).write("\n");
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
safeThread.setName("safeLog");
|
||||||
|
safeThread.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addSafeLog(String log) {
|
||||||
|
QUEUE.offer(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void endSafeLog() {
|
||||||
|
writerSafeLog = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,10 +46,13 @@ public class RouteUtil {
|
|||||||
public static final String PATH_RED_PACKET_LIST = "/main/RedPacketListActivity";
|
public static final String PATH_RED_PACKET_LIST = "/main/RedPacketListActivity";
|
||||||
public static final String PATH_RED_PACKET_INFO = "/main/RedPacketInfoActivity";
|
public static final String PATH_RED_PACKET_INFO = "/main/RedPacketInfoActivity";
|
||||||
public static final String PATH_RED_PACKET_USER = "/main/RedPacketUsersActivity";
|
public static final String PATH_RED_PACKET_USER = "/main/RedPacketUsersActivity";
|
||||||
public static final String PATH_SELECT_AVATAR="/main/UserAvatarSelectActivity";
|
public static final String PATH_SELECT_AVATAR = "/main/UserAvatarSelectActivity";
|
||||||
public static final String PATH_BattlePassActivity="/main/BattlePassActivity";
|
public static final String PATH_BattlePassActivity = "/main/BattlePassActivity";
|
||||||
|
public static final String PATH_SudSwGameActivity = "/live/SudSwGameActivity";
|
||||||
|
public static final String PATH_SudRyGameActivity = "/live/SudRyGameActivity";
|
||||||
|
|
||||||
|
public static final String PATH_COMMUNITY_Activity = "/main/MainHomeCommunityActivity";
|
||||||
public static final String PATH_SudGameActivity="/live/SudGameActivity";
|
public static final String PATH_SudGameActivity="/live/SudGameActivity";
|
||||||
public static final String PATH_COMMUNITY_Activity="/main/MainHomeCommunityActivity";
|
|
||||||
public static final String PATH_FEEDBACK_SUCCESS_ACTIVITY = "/main/FeedbackSuccessActivity";
|
public static final String PATH_FEEDBACK_SUCCESS_ACTIVITY = "/main/FeedbackSuccessActivity";
|
||||||
public static final String PATH_FEEDBACK_ACTIVITY = "/main/FeedbackActivity";
|
public static final String PATH_FEEDBACK_ACTIVITY = "/main/FeedbackActivity";
|
||||||
public static final String PATH_FEEDBACK_EDIT_ACTIVITY = "/main/FeedbackEditActivity";
|
public static final String PATH_FEEDBACK_EDIT_ACTIVITY = "/main/FeedbackEditActivity";
|
||||||
@@ -59,14 +62,26 @@ public class RouteUtil {
|
|||||||
ARouter.getInstance().build(PATH_COMMUNITY_Activity)
|
ARouter.getInstance().build(PATH_COMMUNITY_Activity)
|
||||||
.navigation();
|
.navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void forwardFansActivity(String uid) {
|
public static void forwardFansActivity(String uid) {
|
||||||
ARouter.getInstance().build(PATH_FANSACTIVITY)
|
ARouter.getInstance().build(PATH_FANSACTIVITY)
|
||||||
.withString(Constants.TO_UID, uid)
|
.withString(Constants.TO_UID, uid)
|
||||||
.navigation();
|
.navigation();
|
||||||
}
|
}
|
||||||
public static void forwardSudGameActivity(String CreateSudRoom) {
|
|
||||||
ARouter.getInstance().build(PATH_SudGameActivity)
|
public static void forwardSwSudGameActivity(String CreateSudRoom, boolean isAn, boolean isHome) {
|
||||||
|
ARouter.getInstance().build(PATH_SudSwGameActivity)
|
||||||
.withString("CreateSudRoom", CreateSudRoom)
|
.withString("CreateSudRoom", CreateSudRoom)
|
||||||
|
.withBoolean("CreateIsAn", isAn)
|
||||||
|
.withBoolean("CreateIsHome", isHome)
|
||||||
|
.navigation();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void forwardRySudGameActivity(String CreateSudRoom, boolean isAn, boolean isHome) {
|
||||||
|
ARouter.getInstance().build(PATH_SudRyGameActivity)
|
||||||
|
.withString("CreateSudRoom", CreateSudRoom)
|
||||||
|
.withBoolean("CreateIsAn", isAn)
|
||||||
|
.withBoolean("CreateIsHome", isHome)
|
||||||
.navigation();
|
.navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +233,7 @@ public class RouteUtil {
|
|||||||
* 跳转到充值页面
|
* 跳转到充值页面
|
||||||
*/
|
*/
|
||||||
public static void forwardMyCoin(Context context) {
|
public static void forwardMyCoin(Context context) {
|
||||||
String url = CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=zhifu&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
|
String url = CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=zhifu&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
|
||||||
ARouter.getInstance().build(PATH_COIN).withString("url", url).navigation();
|
ARouter.getInstance().build(PATH_COIN).withString("url", url).navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +265,7 @@ public class RouteUtil {
|
|||||||
/**
|
/**
|
||||||
* 打开直播页面
|
* 打开直播页面
|
||||||
*/
|
*/
|
||||||
public static void forwardLiveAudienceActivity(LiveBean mLiveBean, int mLiveType, int mLiveSDK, int mLiveTypeVal) {
|
public static void forwardLiveAudienceActivity(LiveBean mLiveBean, int mLiveType, int mLiveSDK, int mLiveTypeVal, boolean isSw) {
|
||||||
if (MicStatusManager.getInstance().isMic(mLiveBean.getUid())) {
|
if (MicStatusManager.getInstance().isMic(mLiveBean.getUid())) {
|
||||||
MicStatusManager.getInstance().showDownMicDialog(CommonAppContext.activityWeakReference.get());
|
MicStatusManager.getInstance().showDownMicDialog(CommonAppContext.activityWeakReference.get());
|
||||||
return;
|
return;
|
||||||
@@ -260,7 +275,9 @@ public class RouteUtil {
|
|||||||
.withParcelable(Constants.LIVE_BEAN, mLiveBean)
|
.withParcelable(Constants.LIVE_BEAN, mLiveBean)
|
||||||
.withInt(Constants.LIVE_TYPE, mLiveType)
|
.withInt(Constants.LIVE_TYPE, mLiveType)
|
||||||
.withInt(Constants.LIVE_SDK, mLiveSDK)
|
.withInt(Constants.LIVE_SDK, mLiveSDK)
|
||||||
|
.withBoolean(Constants.LIVE_SDK_IS_SW, isSw)
|
||||||
.withInt(Constants.LIVE_TYPE_VAL, mLiveTypeVal);
|
.withInt(Constants.LIVE_TYPE_VAL, mLiveTypeVal);
|
||||||
|
|
||||||
if (mLiveBean.getParams() != null) {
|
if (mLiveBean.getParams() != null) {
|
||||||
for (String key : mLiveBean.getParams().keySet()) {
|
for (String key : mLiveBean.getParams().keySet()) {
|
||||||
postcard.withString(key, mLiveBean.getParams().get(key));
|
postcard.withString(key, mLiveBean.getParams().get(key));
|
||||||
@@ -269,14 +286,14 @@ public class RouteUtil {
|
|||||||
postcard.navigation();
|
postcard.navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void forwardGiftWallActivity(String mStream, String mAnchorName, String mLiveUid, String mAvatarUrl, int isAttention,boolean isLive) {
|
public static void forwardGiftWallActivity(String mStream, String mAnchorName, String mLiveUid, String mAvatarUrl, int isAttention, boolean isLive) {
|
||||||
ARouter.getInstance().build(PATH_GIFT_WALL)
|
ARouter.getInstance().build(PATH_GIFT_WALL)
|
||||||
.withString(Constants.LIVE_UID, mLiveUid)
|
.withString(Constants.LIVE_UID, mLiveUid)
|
||||||
.withString(Constants.STREAM, mStream)
|
.withString(Constants.STREAM, mStream)
|
||||||
.withString("mAnchorName", mAnchorName)
|
.withString("mAnchorName", mAnchorName)
|
||||||
.withString("mAvatarUrl", mAvatarUrl)
|
.withString("mAvatarUrl", mAvatarUrl)
|
||||||
.withInt("isAttention", isAttention)
|
.withInt("isAttention", isAttention)
|
||||||
.withBoolean("isLive",isLive)
|
.withBoolean("isLive", isLive)
|
||||||
.navigation();
|
.navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,13 @@ import android.content.Context;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.google.gson.Gson;
|
||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,9 +42,8 @@ public class SpUtil {
|
|||||||
public static final String ANCHOR_PK_TIME = "anchorPkTime";
|
public static final String ANCHOR_PK_TIME = "anchorPkTime";
|
||||||
//播放短视频上下滑动引导页
|
//播放短视频上下滑动引导页
|
||||||
public static final String READ_VIDEO_GUIDE = "readVideoGuide";
|
public static final String READ_VIDEO_GUIDE = "readVideoGuide";
|
||||||
|
|
||||||
public static final String MESSAGE_SYS_DEL = "FIRST_DEL";
|
public static final String MESSAGE_SYS_DEL = "FIRST_DEL";
|
||||||
|
public static final String LIVE_GAME_NEWED_LIST = "LIVE_GAME_NEWED_LIST";
|
||||||
|
|
||||||
public SpUtil() {
|
public SpUtil() {
|
||||||
mSharedPreferences = CommonAppContext.sInstance.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
|
mSharedPreferences = CommonAppContext.sInstance.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
|
||||||
@@ -56,6 +60,41 @@ public class SpUtil {
|
|||||||
return sInstance;
|
return sInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setLiveGameId(String gameId) {
|
||||||
|
String gameMap = getStringValue(LIVE_GAME_NEWED_LIST);
|
||||||
|
List<String> gameNewList;
|
||||||
|
gameNewList = JSONArray.parseArray(gameMap, String.class);
|
||||||
|
L.eSw("gameMap:" + gameMap);
|
||||||
|
if (gameNewList == null) {
|
||||||
|
gameNewList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < gameNewList.size(); i++) {
|
||||||
|
if (gameNewList.get(i).equals(gameId)) {
|
||||||
|
gameNewList.remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gameNewList.add(gameId);
|
||||||
|
setStringValue(LIVE_GAME_NEWED_LIST, new Gson().toJson(gameNewList));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLiveGameNew(String gameId) {
|
||||||
|
String gameMap = getStringValue(LIVE_GAME_NEWED_LIST);
|
||||||
|
List<String> gameNewList = new ArrayList<>();
|
||||||
|
gameNewList = JSONArray.parseArray(gameMap, String.class);
|
||||||
|
if (gameNewList == null) {
|
||||||
|
gameNewList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
boolean isNew = false;
|
||||||
|
for (int i = 0; i < gameNewList.size(); i++) {
|
||||||
|
if (gameNewList.get(i).equals(gameId)) {
|
||||||
|
isNew = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !isNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存一个字符串
|
* 保存一个字符串
|
||||||
*/
|
*/
|
||||||
|
|||||||
12
common/src/main/java/com/yunbao/common/utils/ViewUtils.java
Normal file
12
common/src/main/java/com/yunbao/common/utils/ViewUtils.java
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class ViewUtils {
|
||||||
|
public static <T extends View> T findViewById(View view,int id,Class<T> clazz){
|
||||||
|
return view.findViewById(id);
|
||||||
|
}
|
||||||
|
public static <T extends View> T findViewById(View view,int id){
|
||||||
|
return view.findViewById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user