Compare commits

..

17 Commits

Author SHA1 Message Date
fcd13751c9 Merge remote-tracking branch 'origin/dev_6.6.8' into dev_6.6.8 2024-05-08 11:35:30 +08:00
e24805cf9b 移除友盟SDK 2024-05-08 11:34:56 +08:00
489a99e522 移除友盟SDK 2024-05-08 11:34:41 +08:00
6a51b39134 移除友盟SDK 2024-05-08 11:34:07 +08:00
86bbf6a7f3 更新小游戏混淆列表 2024-05-08 10:49:07 +08:00
599e88acc6 替换友盟为本地aar
调整小游戏为繁体中文
2024-05-08 09:52:35 +08:00
2093306d36 修复测试反馈问题
调整小助手、机器人图标
调整PD一号的IM消息
调整PD一号的红包UI
调整翻译
2024-05-05 16:13:28 +08:00
8e2acc3417 Merge branch 'master' into dev_6.6.8 2024-04-29 11:30:25 +08:00
d28d0dd3d7 修复测试反馈问题 2024-04-29 11:02:23 +08:00
150bdba795 完成小游戏直播间半屏内容 2024-04-26 18:04:16 +08:00
651fe12edd 新增小助手中英文图标判定
新增消息页图标中英文判定
2024-04-26 14:47:58 +08:00
d0c0f8f82e 新增戰令一鍵領取按鈕 2024-04-26 11:11:48 +08:00
1f12187766 根据测试反馈修改帮助反馈问题
新增小游戏跳一跳回血和必中的回调
新增关闭发红包页面后自动打开礼物栏的功能
调整小游戏跳一跳回调防抖
2024-04-26 10:08:19 +08:00
18401019693
754f2a9294 修改问题全服跳转直播间问题 2024-04-25 15:32:38 +08:00
1c9493d7c8 修改帮助反馈的UI 2024-04-24 18:00:46 +08:00
34e4765e13 修改帮助反馈的UI 2024-04-24 17:48:21 +08:00
d4d191fad6 新增帮助与反馈功能 2024-04-24 16:26:47 +08:00
202 changed files with 3393 additions and 597 deletions

View File

@@ -1,18 +1,12 @@
//apply plugin: 'com.android.library'
//apply plugin: 'img-optimizer'
//apply plugin: 'kotlin-android'
//apply plugin: 'kotlin-android-extensions'
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-parcelize'
id 'img-optimizer'
}
apply plugin: 'com.android.library'
apply plugin: 'img-optimizer'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
namespace "com.yunbao.faceunity"
compileSdk rootProject.ext.android.compileSdkVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
@@ -54,11 +48,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
buildFeatures {
buildConfig = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {

View File

@@ -2,7 +2,7 @@ package com.yunbao.faceunity;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.platform.app.Instrimport com.yunbao.common.utils.MobclickAgent;ntationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;

View File

@@ -1,5 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.yunbao.faceunity"
>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
@@ -10,9 +11,7 @@
<application
android:icon="@mipmap/ico_home_animoji"
android:allowBackup="true"
tools:replace="allowBackup"
>
android:allowBackup="true">
</application>

View File

@@ -1,15 +1,15 @@
apply plugin: 'com.android.library'
android {
namespace "com.samsung.android.sdk.iap.lib"
compileSdk rootProject.ext.android.compileSdkVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
minSdkVersion minSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
versionCode rootProject.ext.android.versionCode
versionName rootProject.ext.android.versionName
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode versionCode
versionName versionName
targetSdkVersion targetSdkVersion
}
buildTypes {
@@ -18,15 +18,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
buildFeatures {
buildConfig = true
}
}
repositories {
flatDir {
dirs 'libs', '../libs'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}

View File

@@ -1,31 +1,30 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.samsung.android.sdk.iap.lib"
android:versionCode="601000004"
android:versionName="6.1.0">
<!-- version code [Major/Minor/Bug fix release/Build number ] : x xx xxx xxx -->
<application
android:allowBackup="true"
tools:replace="allowBackup">
<application>
<!-- IAP 라이브러리 내 Activity 선언 시작-->
<activity
android:name="com.samsung.android.sdk.iap.lib2.activity.DialogActivity"
android:name="com.samsung.android.sdk.iap.lib.activity.DialogActivity"
android:theme="@style/Theme.Empty"
android:configChanges="orientation|screenSize"/>
<activity
android:name="com.samsung.android.sdk.iap.lib2.activity.CheckPackageActivity"
android:name="com.samsung.android.sdk.iap.lib.activity.CheckPackageActivity"
android:theme="@style/Theme.Empty"
android:configChanges="orientation|screenSize"/>
<activity
android:name="com.samsung.android.sdk.iap.lib2.activity.AccountActivity"
android:name="com.samsung.android.sdk.iap.lib.activity.AccountActivity"
android:theme="@style/Theme.Transparent"
android:configChanges="orientation|screenSize"/>
<activity
android:name="com.samsung.android.sdk.iap.lib2.activity.PaymentActivity"
android:name="com.samsung.android.sdk.iap.lib.activity.PaymentActivity"
android:theme="@style/Theme.Empty"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden|locale|uiMode|fontScale|density"/>

View File

@@ -1,13 +1,13 @@
package com.samsung.android.sdk.iap.lib2.activity;
package com.samsung.android.sdk.iap.lib.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
/**
* Created by sangbum7.kim on 2018-03-06.
@@ -16,11 +16,12 @@ import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
public class AccountActivity extends Activity {
private static final String TAG = AccountActivity.class.getSimpleName();
com.samsung.android.sdk.iap.lib2.helper.IapHelper mIapHelper = null;
IapHelper mIapHelper = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mIapHelper = IapHelper.getInstance(this);
// ====================================================================
// 1. If IAP package is installed and valid, start SamsungAccount

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.activity;
package com.samsung.android.sdk.iap.lib.activity;
import android.app.Activity;
import android.app.Dialog;
@@ -8,25 +8,25 @@ import android.util.Log;
import android.widget.Toast;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib2.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib2.vo.PurchaseVo;
import com.samsung.android.sdk.iap.lib.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.vo.PurchaseVo;
public abstract class BaseActivity extends Activity {
private static final String TAG = BaseActivity.class.getSimpleName();
protected com.samsung.android.sdk.iap.lib2.vo.ErrorVo mErrorVo = new com.samsung.android.sdk.iap.lib2.vo.ErrorVo();
protected ErrorVo mErrorVo = new ErrorVo();
private Dialog mProgressDialog = null;
protected com.samsung.android.sdk.iap.lib2.vo.PurchaseVo mPurchaseVo = null;
protected PurchaseVo mPurchaseVo = null;
/**
* Helper Class between IAPService and 3rd Party Application
*/
com.samsung.android.sdk.iap.lib2.helper.IapHelper mIapHelper = null;
IapHelper mIapHelper = null;
/**
* Flag value to show successful pop-up. Error pop-up appears whenever it fails or not.
@@ -64,15 +64,15 @@ public abstract class BaseActivity extends Activity {
public boolean checkAppsPackage(Activity _activity) {
// 1. If Galaxy Store is installed
// ====================================================================
if (com.samsung.android.sdk.iap.lib2.helper.HelperUtil.isInstalledAppsPackage(this)) {
if (HelperUtil.isInstalledAppsPackage(this)) {
// 1) If Galaxy Store is enabled
// ================================================================
if (!com.samsung.android.sdk.iap.lib2.helper.HelperUtil.isEnabledAppsPackage(this)) {
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.showEnableGalaxyStoreDialog(_activity);
if (!HelperUtil.isEnabledAppsPackage(this)) {
HelperUtil.showEnableGalaxyStoreDialog(_activity);
// ================================================================
// 2) If Galaxy Store is valid
// ================================================================
} else if (com.samsung.android.sdk.iap.lib2.helper.HelperUtil.isValidAppsPackage(this)) {
} else if (HelperUtil.isValidAppsPackage(this)) {
return true;
} else {
// Set error to notify result to third-party application
@@ -84,7 +84,7 @@ public abstract class BaseActivity extends Activity {
R.string.dream_ph_body_contact_p1sscustomer_servicep2ss_for_more_information_n_nerror_code_c_p3ss),
"", "", ERROR_ISSUER_IAP_CLIENT + ERROR_CODE_INVALID_GALAXY_STORE);
mErrorVo.setError(HelperDefine.IAP_PAYMENT_IS_CANCELED, errorString);
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.showInvalidGalaxyStoreDialog(this);
HelperUtil.showInvalidGalaxyStoreDialog(this);
}
// ================================================================
@@ -92,7 +92,7 @@ public abstract class BaseActivity extends Activity {
// 2. If Galaxy Store is not installed
// ====================================================================
} else {
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.installAppsPackage(this);
HelperUtil.installAppsPackage(this);
}
// ====================================================================
return false;
@@ -161,12 +161,12 @@ public abstract class BaseActivity extends Activity {
else {
Log.e(TAG, "finishPurchase: " + mErrorVo.dump());
if (mShowErrorDialog) {
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.showIapErrorDialog(
HelperUtil.showIapErrorDialog(
this,
getString(R.string.dream_ph_pheader_couldnt_complete_purchase),
mErrorVo.getErrorString(),
mErrorVo.getErrorDetailsString(),
new com.samsung.android.sdk.iap.lib2.dialog.BaseDialogFragment.OnClickListener() {
new BaseDialogFragment.OnClickListener() {
@Override
public void onClick() {
finish();

View File

@@ -1,12 +1,12 @@
package com.samsung.android.sdk.iap.lib2.activity;
package com.samsung.android.sdk.iap.lib.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
/**
* Created by sangbum7.kim on 2018-03-07.
@@ -27,12 +27,12 @@ public class CheckPackageActivity extends Activity {
int DialogType = extras.getInt("DialogType");
switch (DialogType) {
case HelperDefine.DIALOG_TYPE_INVALID_PACKAGE: {
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.showInvalidGalaxyStoreDialog(this);
HelperUtil.showInvalidGalaxyStoreDialog(this);
mFinishFlag = false;
}
break;
case HelperDefine.DIALOG_TYPE_DISABLE_APPLICATION: {
com.samsung.android.sdk.iap.lib2.helper.HelperUtil.showEnableGalaxyStoreDialog(this);
HelperUtil.showEnableGalaxyStoreDialog(this);
mFinishFlag = false;
}
break;

View File

@@ -1,12 +1,16 @@
package com.samsung.android.sdk.iap.lib2.activity;
package com.samsung.android.sdk.iap.lib.activity;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib2.helper.HelperUtil;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperUtil;
/**
* Created by sangbum7.kim on 2018-03-05.

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.activity;
package com.samsung.android.sdk.iap.lib.activity;
import android.content.ComponentName;
import android.content.Context;
@@ -9,9 +9,9 @@ import android.util.Log;
import android.widget.Toast;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.HelperListenerManager;
import com.samsung.android.sdk.iap.lib2.listener.OnPaymentListener;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperListenerManager;
import com.samsung.android.sdk.iap.lib.listener.OnPaymentListener;
public class PaymentActivity extends BaseActivity {
private static final String TAG = PaymentActivity.class.getSimpleName();
@@ -56,7 +56,7 @@ public class PaymentActivity extends BaseActivity {
super.preDestory();
if (isFinishing()) {
OnPaymentListener onPaymentListener =
com.samsung.android.sdk.iap.lib2.helper.HelperListenerManager.getInstance().getOnPaymentListener();
HelperListenerManager.getInstance().getOnPaymentListener();
HelperListenerManager.getInstance().setOnPaymentListener(null);
if (null != onPaymentListener) {
onPaymentListener.onPayment(mErrorVo, mPurchaseVo);

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.dialog;
package com.samsung.android.sdk.iap.lib.dialog;
import android.app.ActionBar;
import android.app.Dialog;
@@ -8,6 +8,7 @@ import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper;
package com.samsung.android.sdk.iap.lib.helper;
/**
* Created by sangbum7.kim on 2017-07-17.

View File

@@ -1,12 +1,12 @@
package com.samsung.android.sdk.iap.lib2.helper;
package com.samsung.android.sdk.iap.lib.helper;
import com.samsung.android.sdk.iap.lib2.listener.OnConsumePurchasedItemsListener;
import com.samsung.android.sdk.iap.lib2.listener.OnGetOwnedListListener;
import com.samsung.android.sdk.iap.lib2.listener.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib2.listener.OnPaymentListener;
import com.samsung.android.sdk.iap.lib2.helper.task.ConsumePurchasedItemsTask;
import com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask;
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.GetProductsDetailsTask;
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.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib.listener.OnPaymentListener;
/**
* Created by sangbum7.kim on 2017-08-29.

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper;
package com.samsung.android.sdk.iap.lib.helper;
import android.app.Activity;
import android.content.ComponentName;
@@ -14,9 +14,9 @@ import android.text.Html;
import android.util.Log;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.activity.BaseActivity;
import com.samsung.android.sdk.iap.lib2.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.activity.BaseActivity;
import com.samsung.android.sdk.iap.lib.dialog.BaseDialogFragment;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
/**
* Created by sangbum7.kim on 2017-08-17.

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper;
package com.samsung.android.sdk.iap.lib.helper;
import android.content.ComponentName;
import android.content.Context;
@@ -12,20 +12,20 @@ import android.util.Log;
import com.samsung.android.iap.IAPConnector;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.activity.CheckPackageActivity;
import com.samsung.android.sdk.iap.lib2.activity.PaymentActivity;
import com.samsung.android.sdk.iap.lib2.listener.OnConsumePurchasedItemsListener;
import com.samsung.android.sdk.iap.lib2.listener.OnGetOwnedListListener;
import com.samsung.android.sdk.iap.lib2.listener.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib2.listener.OnPaymentListener;
import com.samsung.android.sdk.iap.lib2.service.BaseService;
import com.samsung.android.sdk.iap.lib2.service.ConsumePurchasedItems;
import com.samsung.android.sdk.iap.lib2.service.OwnedProduct;
import com.samsung.android.sdk.iap.lib2.service.ProductsDetails;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib2.helper.task.ConsumePurchasedItemsTask;
import com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask;
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.helper.task.ConsumePurchasedItemsTask;
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.listener.OnConsumePurchasedItemsListener;
import com.samsung.android.sdk.iap.lib.listener.OnGetOwnedListListener;
import com.samsung.android.sdk.iap.lib.listener.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib.listener.OnPaymentListener;
import com.samsung.android.sdk.iap.lib.service.BaseService;
import com.samsung.android.sdk.iap.lib.service.ConsumePurchasedItems;
import com.samsung.android.sdk.iap.lib.service.OwnedProduct;
import com.samsung.android.sdk.iap.lib.service.ProductsDetails;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import java.util.ArrayList;
@@ -46,9 +46,9 @@ public class IapHelper extends HelperDefine {
// AsyncTask for API
// ========================================================================
private com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask mGetProductsDetailsTask = null;
private com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask mGetOwnedListTask = null;
private com.samsung.android.sdk.iap.lib2.helper.task.ConsumePurchasedItemsTask mConsumePurchasedItemsTask = null;
private GetProductsDetailsTask mGetProductsDetailsTask = null;
private GetOwnedListTask mGetOwnedListTask = null;
private ConsumePurchasedItemsTask mConsumePurchasedItemsTask = null;
// ========================================================================
private ArrayList<BaseService> mServiceQueue = new ArrayList<BaseService>();
@@ -267,7 +267,7 @@ public class IapHelper extends HelperDefine {
if (mIapConnector == null || mContext == null) {
return false;
} else {
mGetProductsDetailsTask = new com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask(_baseService,
mGetProductsDetailsTask = new GetProductsDetailsTask(_baseService,
mIapConnector,
mContext,
_productIDs,
@@ -344,7 +344,7 @@ public class IapHelper extends HelperDefine {
if (mIapConnector == null || mContext == null) {
return false;
} else {
mGetOwnedListTask = new com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask(_baseService,
mGetOwnedListTask = new GetOwnedListTask(_baseService,
mIapConnector,
mContext,
_productType,
@@ -417,7 +417,7 @@ public class IapHelper extends HelperDefine {
mConsumePurchasedItemsTask.cancel(true);
}
mConsumePurchasedItemsTask = new com.samsung.android.sdk.iap.lib2.helper.task.ConsumePurchasedItemsTask(_baseService,
mConsumePurchasedItemsTask = new ConsumePurchasedItemsTask(_baseService,
mIapConnector,
mContext,
_purchaseIds,

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper.task;
package com.samsung.android.sdk.iap.lib.helper.task;
import android.content.Context;
import android.os.AsyncTask;
@@ -6,8 +6,9 @@ import android.util.Log;
import com.samsung.android.iap.IAPConnector;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.service.BaseService;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.service.BaseService;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
/**
* Created by sangbum7.kim on 2017-09-01.

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper.task;
package com.samsung.android.sdk.iap.lib.helper.task;
import android.content.Context;
import android.os.Bundle;
@@ -6,9 +6,9 @@ import android.util.Log;
import com.samsung.android.iap.IAPConnector;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.service.ConsumePurchasedItems;
import com.samsung.android.sdk.iap.lib2.vo.ConsumeVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.service.ConsumePurchasedItems;
import com.samsung.android.sdk.iap.lib.vo.ConsumeVo;
import java.util.ArrayList;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper.task;
package com.samsung.android.sdk.iap.lib.helper.task;
import android.content.Context;
import android.os.Bundle;
@@ -6,9 +6,9 @@ import android.util.Log;
import com.samsung.android.iap.IAPConnector;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.service.OwnedProduct;
import com.samsung.android.sdk.iap.lib2.vo.OwnedProductVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.service.OwnedProduct;
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
import java.util.ArrayList;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.helper.task;
package com.samsung.android.sdk.iap.lib.helper.task;
import android.content.Context;
import android.os.Bundle;
@@ -6,9 +6,9 @@ import android.util.Log;
import com.samsung.android.iap.IAPConnector;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.service.ProductsDetails;
import com.samsung.android.sdk.iap.lib2.vo.ProductVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.service.ProductsDetails;
import com.samsung.android.sdk.iap.lib.vo.ProductVo;
import java.util.ArrayList;

View File

@@ -1,13 +1,13 @@
package com.samsung.android.sdk.iap.lib2.listener;
package com.samsung.android.sdk.iap.lib.listener;
import com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib2.vo.ConsumeVo;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib.vo.ConsumeVo;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import java.util.ArrayList;
/**
* Callback Interface used with {@link com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask}
* Callback Interface used with {@link GetOwnedListTask}
*/
public interface OnConsumePurchasedItemsListener {
/**

View File

@@ -0,0 +1,20 @@
package com.samsung.android.sdk.iap.lib.listener;
import com.samsung.android.sdk.iap.lib.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
import java.util.ArrayList;
/**
* Callback Interface used with {@link GetOwnedListTask}
*/
public interface OnGetOwnedListListener {
/**
* Callback method to be invoked when {@link GetOwnedListTask} has been finished.
*
* @param _errorVO
* @param _ownedList
*/
void onGetOwnedProducts(ErrorVo _errorVO, ArrayList<OwnedProductVo> _ownedList);
}

View File

@@ -0,0 +1,20 @@
package com.samsung.android.sdk.iap.lib.listener;
import com.samsung.android.sdk.iap.lib.helper.task.GetProductsDetailsTask;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.vo.ProductVo;
import java.util.ArrayList;
/**
* Callback Interface used with {@link GetProductsDetailsTask}
*/
public interface OnGetProductsDetailsListener {
/**
* Callback method to be invoked when {@link GetProductsDetailsTask} has been finished.
*
* @param _errorVO
* @param _productList
*/
void onGetProducts(ErrorVo _errorVO, ArrayList<ProductVo> _productList);
}

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.listener;
package com.samsung.android.sdk.iap.lib.listener;
/**
* Callback Interface to be invoked when bind to IAPService has been finished.

View File

@@ -1,7 +1,7 @@
package com.samsung.android.sdk.iap.lib2.listener;
package com.samsung.android.sdk.iap.lib.listener;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib2.vo.PurchaseVo;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.vo.PurchaseVo;
/**
* Callback Interface to be invoked when payment has been finished.

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.listener;
package com.samsung.android.sdk.iap.lib.listener;
/**
* Created by sangbum7.kim on 2018-02-28.

View File

@@ -1,15 +1,15 @@
package com.samsung.android.sdk.iap.lib2.service;
package com.samsung.android.sdk.iap.lib.service;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.activity.AccountActivity;
import com.samsung.android.sdk.iap.lib2.activity.DialogActivity;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib.activity.AccountActivity;
import com.samsung.android.sdk.iap.lib.activity.DialogActivity;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.vo.ErrorVo;
/**
* Created by sangbum7.kim on 2018-02-28.
@@ -18,8 +18,8 @@ import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
public abstract class BaseService {
private static final String TAG = BaseService.class.getSimpleName();
protected com.samsung.android.sdk.iap.lib2.vo.ErrorVo mErrorVo = new com.samsung.android.sdk.iap.lib2.vo.ErrorVo();
protected com.samsung.android.sdk.iap.lib2.helper.IapHelper mIapHelper = null;
protected ErrorVo mErrorVo = new ErrorVo();
protected IapHelper mIapHelper = null;
protected Context mContext = null;
public BaseService(IapHelper _iapHelper, Context _context) {
@@ -28,7 +28,7 @@ public abstract class BaseService {
mErrorVo.setError(HelperDefine.IAP_ERROR_INITIALIZATION, mContext.getString(R.string.mids_sapps_pop_unknown_error_occurred));
}
public com.samsung.android.sdk.iap.lib2.vo.ErrorVo getErrorVo() {
public ErrorVo getErrorVo() {
return mErrorVo;
}

View File

@@ -1,13 +1,13 @@
package com.samsung.android.sdk.iap.lib2.service;
package com.samsung.android.sdk.iap.lib.service;
import android.content.Context;
import android.util.Log;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib2.listener.OnConsumePurchasedItemsListener;
import com.samsung.android.sdk.iap.lib2.vo.ConsumeVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
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.vo.ConsumeVo;
import java.util.ArrayList;
@@ -18,9 +18,9 @@ import java.util.ArrayList;
public class ConsumePurchasedItems extends BaseService {
private static final String TAG = ConsumePurchasedItems.class.getSimpleName();
private com.samsung.android.sdk.iap.lib2.listener.OnConsumePurchasedItemsListener mOnConsumePurchasedItemsListener = null;
private OnConsumePurchasedItemsListener mOnConsumePurchasedItemsListener = null;
private static String mPurchaseIds = "";
protected ArrayList<com.samsung.android.sdk.iap.lib2.vo.ConsumeVo> mConsumeList = null;
protected ArrayList<ConsumeVo> mConsumeList = null;
public ConsumePurchasedItems(IapHelper _iapHelper, Context _context, OnConsumePurchasedItemsListener _onConsumePurchasedItemsListener) {
super(_iapHelper, _context);

View File

@@ -1,13 +1,13 @@
package com.samsung.android.sdk.iap.lib2.service;
package com.samsung.android.sdk.iap.lib.service;
import android.content.Context;
import android.util.Log;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib2.listener.OnGetOwnedListListener;
import com.samsung.android.sdk.iap.lib2.vo.OwnedProductVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.listener.OnGetOwnedListListener;
import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo;
import java.util.ArrayList;
@@ -18,9 +18,9 @@ import java.util.ArrayList;
public class OwnedProduct extends BaseService {
private static final String TAG = OwnedProduct.class.getSimpleName();
private com.samsung.android.sdk.iap.lib2.listener.OnGetOwnedListListener mOnGetOwnedListListener = null;
private OnGetOwnedListListener mOnGetOwnedListListener = null;
private static String mProductType = "";
protected ArrayList<com.samsung.android.sdk.iap.lib2.vo.OwnedProductVo> mOwnedList = null;
protected ArrayList<OwnedProductVo> mOwnedList = null;
public OwnedProduct(IapHelper _iapHelper, Context _context, OnGetOwnedListListener _onGetOwnedListListener) {
super(_iapHelper, _context);

View File

@@ -1,13 +1,13 @@
package com.samsung.android.sdk.iap.lib2.service;
package com.samsung.android.sdk.iap.lib.service;
import android.content.Context;
import android.util.Log;
import com.samsung.android.sdk.iap.lib.R;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib2.helper.IapHelper;
import com.samsung.android.sdk.iap.lib2.listener.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib2.vo.ProductVo;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.IapHelper;
import com.samsung.android.sdk.iap.lib.listener.OnGetProductsDetailsListener;
import com.samsung.android.sdk.iap.lib.vo.ProductVo;
import java.util.ArrayList;
@@ -18,9 +18,9 @@ import java.util.ArrayList;
public class ProductsDetails extends BaseService {
private static final String TAG = ProductsDetails.class.getSimpleName();
private com.samsung.android.sdk.iap.lib2.listener.OnGetProductsDetailsListener mOnGetProductsDetailsListener = null;
private OnGetProductsDetailsListener mOnGetProductsDetailsListener = null;
private static String mProductIds = "";
protected ArrayList<com.samsung.android.sdk.iap.lib2.vo.ProductVo> mProductsDetails = null;
protected ArrayList<ProductVo> mProductsDetails = null;
public ProductsDetails(IapHelper _iapHelper, Context _context, OnGetProductsDetailsListener _onGetProductsDetailsListener) {
super(_iapHelper, _context);

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import android.text.format.DateFormat;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import android.util.Log;

View File

@@ -1,6 +1,6 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import com.samsung.android.sdk.iap.lib2.helper.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
public class ErrorVo {
private int mErrorCode = HelperDefine.IAP_PAYMENT_IS_CANCELED;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import android.util.Base64;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import org.json.JSONException;
import org.json.JSONObject;

View File

@@ -1,4 +1,4 @@
package com.samsung.android.sdk.iap.lib2.vo;
package com.samsung.android.sdk.iap.lib.vo;
import android.util.Base64;

View File

@@ -1,20 +0,0 @@
package com.samsung.android.sdk.iap.lib2.listener;
import com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib2.vo.OwnedProductVo;
import java.util.ArrayList;
/**
* Callback Interface used with {@link com.samsung.android.sdk.iap.lib2.helper.task.GetOwnedListTask}
*/
public interface OnGetOwnedListListener {
/**
* Callback method to be invoked when {@link GetOwnedListTask} has been finished.
*
* @param _errorVO
* @param _ownedList
*/
void onGetOwnedProducts(ErrorVo _errorVO, ArrayList<OwnedProductVo> _ownedList);
}

View File

@@ -1,20 +0,0 @@
package com.samsung.android.sdk.iap.lib2.listener;
import com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask;
import com.samsung.android.sdk.iap.lib2.vo.ErrorVo;
import com.samsung.android.sdk.iap.lib2.vo.ProductVo;
import java.util.ArrayList;
/**
* Callback Interface used with {@link com.samsung.android.sdk.iap.lib2.helper.task.GetProductsDetailsTask}
*/
public interface OnGetProductsDetailsListener {
/**
* Callback method to be invoked when {@link GetProductsDetailsTask} has been finished.
*
* @param _errorVO
* @param _productList
*/
void onGetProducts(ErrorVo _errorVO, ArrayList<ProductVo> _productList);
}

View File

@@ -1,18 +1,12 @@
//apply plugin: 'com.android.library'
//apply plugin: 'img-optimizer'
//apply plugin: 'kotlin-android'
//apply plugin: 'kotlin-android-extensions'
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-parcelize'
id 'img-optimizer'
}
apply plugin: 'com.android.library'
apply plugin: 'img-optimizer'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
namespace "com.pdlive.shayu"
compileSdk rootProject.ext.android.compileSdkVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
@@ -54,11 +48,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
buildFeatures {
buildConfig = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
package="com.pdlive.shayu">
<queries>
<package android:name="com.pdlive.shayu"/>
@@ -19,7 +19,7 @@
tools:ignore="ExportedContentProvider" />
</queries>
<application>
<application android:allowBackup="true">
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"

View File

@@ -1,17 +0,0 @@
package com.yunbao.share;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}

View File

@@ -4,10 +4,32 @@ apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.alibaba.arouter'
android {
namespace "com.pandoralive.shayu"
dexOptions {
jumboMode = true
}
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 {
@@ -31,7 +53,9 @@ android {
}
}
}*/
compileSdk rootProject.ext.android.compileSdkVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
@@ -101,11 +125,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
buildFeatures {
buildConfig = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
applicationVariants.all { variant ->
println "清空build文件夹";
@@ -118,14 +139,27 @@ android {
processManifestTask.doLast { pm ->
String manifestPath = "build/intermediates/bundle_manifest/release/bundle-manifest/AndroidManifest.xml"
def isGooglePlay = rootProject.ext.manifestPlaceholders.isGooglePlay
if (file(manifestPath).exists() && isGooglePlay) {
println "谷歌版本:" + isGooglePlay
println "文件存在" + file(manifestPath).exists()
println "" + (isGooglePlay != 0)
println "" + (file(manifestPath).exists() && isGooglePlay != 0)
if (file(manifestPath).exists() && isGooglePlay != 0) {
def manifestContent = file(manifestPath).getText()
println "移除权限"
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
file(manifestPath).write(manifestContent)
} else {
print "not Exists = " + manifestPath
}
manifestPath = "build/intermediates/merged_manifests/release/processReleaseManifest/AndroidManifest.xml"
if (file(manifestPath).exists() && isGooglePlay != 0) {
def manifestContent = file(manifestPath).getText()
println "移除权限2"
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
file(manifestPath).write(manifestContent)
}
}
variant.mergeAssetsProvider.configure {
doLast {
@@ -170,7 +204,7 @@ android {
isGoogle = "谷歌"
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 2) {
isGoogle = "Huawei"
}else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 3) {
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 3) {
isGoogle = "Samsung"
}
def isPlugin = "完整"
@@ -182,7 +216,6 @@ android {
isTest = "正式服"
}
outputFileName = "[${new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
}
}
signingConfigs {

View File

@@ -194,12 +194,9 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
-keep public class com.alibaba.android.arouter.facade.**{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
# 如果使用了 byType 的方式获取 Service,需添加下面规则,保护接口
# If you use the byType method to obtain Service, add the following rules to protect the interface:
-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
# -keep class * implements com.alibaba.android.arouter.facade.template.IProvider
@@ -278,6 +275,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
-keep class tech.sud.mgp.hello.ui.main.settings.model.** {*;}
-keep class tech.sud.mgp.hello.ui.main.nft.model.** {*;}
-keep class tech.sud.mgp.hello.common.event.model.** {*;}
-keep class tech.sud.mgp.**{*;}
-keep class bitter.jnibridge.** { *; }
-keep class com.google.androidgamesdk.** { *; }
-keep class com.unity3d.** { *; }
-keep class do.do.do.** { *; }
-keep class do.if.do.** { *; }
-keep class for.do.** { *; }
-keep class if.do.do.do.** { *; }
-keep class org.fmod.** { *; }
-keep class tech.sud.** { *; }
-keep class tech.unity3d.** { *; }
-keep class com.yunbao.common.sud.** {*;}

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
package="myname.pdlive.shayu">
<uses-permission
android:name="android.permission.CALL_PHONE"

View File

@@ -30,14 +30,14 @@ import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
import com.tencent.imsdk.v2.V2TIMUserInfo;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.BuildConfig;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.AnchorStartLiveBean;
import com.yunbao.common.bean.CrashSaveBean;
import com.yunbao.common.dialog.DebugDialog;
import com.yunbao.common.event.SudGameSocketImEvent;
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
@@ -142,6 +142,7 @@ public class AppContext extends CommonAppContext {
registerError();
registerFirebaseCrash();
LogUtils.start(this);
//DebugDialog.getInstance().setParams("初始化","启动");
sInstance = this;
L.setDeBug(BuildConfig.DEBUG);
AppEventsLogger.activateApp(this);
@@ -164,20 +165,20 @@ public class AppContext extends CommonAppContext {
OpenInstall.init(this);
}
//设置LOG开关默认为false
UMConfigure.setLogEnabled(true);
//UMConfigure.setLogEnabled(true);
//友盟正式初始化
UMConfigure.init(getApplicationContext(), "64e40ee55488fe7b3afa2c96", "PDLive", UMConfigure.DEVICE_TYPE_PHONE, "64e40ee55488fe7b3afa2c96");
//UMConfigure.init(getApplicationContext(), "64e40ee55488fe7b3afa2c96", "PDLive", UMConfigure.DEVICE_TYPE_PHONE, "64e40ee55488fe7b3afa2c96");
//集成umeng-crash-vx.x.x.aar则需要关闭原有统计SDK异常捕获功能
MobclickAgent.setCatchUncaughtExceptions(false);
//PushSDK初始化(如使用推送SDK必须调用此方法)
//统计SDK是否支持采集在子进程中打点的自定义事件默认不支持
UMConfigure.setProcessEvent(true);//支持多进程打点
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
UMConfigure.submitPolicyGrantResult(getApplicationContext(), true);
//UMConfigure.setProcessEvent(true);//支持多进程打点
//MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
//UMConfigure.submitPolicyGrantResult(getApplicationContext(), true);
registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());
//初始化 AndroidUtilCode

View File

@@ -29,7 +29,6 @@ import androidx.core.app.NotificationManagerCompat;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.pandoralive.shayu.R;
import com.shayu.phonelive.AppContext;
import com.tencent.rtmp.ITXLivePlayListener;
import com.tencent.rtmp.TXLiveBase;
@@ -73,6 +72,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import myname.pdlive.shayu.R;
/**
* Created by cxf on 2018/9/17.

View File

@@ -35,7 +35,6 @@ import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition;
import com.makeramen.roundedimageview.RoundedImageView;
import com.pandoralive.shayu.R;
import com.shayu.phonelive.AppContext;
import com.shayu.phonelive.activity.LauncherActivity;
import com.yunbao.common.bean.NotificationMsgBean;
@@ -52,6 +51,7 @@ import io.rong.imlib.ConnectChangeReceiver;
import io.rong.push.PushType;
import io.rong.push.notification.PushMessageReceiver;
import io.rong.push.notification.PushNotificationMessage;
import myname.pdlive.shayu.R;
public class CustomMessageReceiver extends PushMessageReceiver {

View File

@@ -3,8 +3,8 @@ apply plugin: 'img-optimizer'
android {
compileSdk rootProject.ext.android.compileSdkVersion
targetSdk rootProject.ext.android.buildToolsVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
@@ -42,8 +42,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {

View File

@@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yunbao.baidu"
/>

View File

@@ -3,8 +3,8 @@ apply plugin: 'img-optimizer'
android {
compileSdk rootProject.ext.android.compileSdkVersion
targetSdk rootProject.ext.android.buildToolsVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
@@ -45,8 +45,8 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {

View File

@@ -1,2 +1,2 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
/>
package="com.yunbao.beauty"/>

View File

@@ -4,28 +4,27 @@ apply from: "dependencies.gradle"
buildscript {
ext.kotlin_version = '1.8.22'
ext.kotlin_version = '1.6.20'
repositories {
maven { url "https://mvn.mob.com/android" }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.faceunity.com/repository/maven-public/' }//美颜库
maven { url 'http://maven.faceunity.com/repository/maven-public/' }//美颜库
maven { url 'https://repo1.maven.org/maven2/' }//埋点
maven {url 'https://developer.huawei.com/repo/'}
maven { url "https://jitpack.io" }
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.3.1'
classpath 'com.android.tools.build:gradle:4.0.2'
//一键压缩png工具
classpath 'com.chenenyu:img-optimizer:1.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20"
classpath 'com.google.gms:google-services:4.3.3'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
classpath "com.github.jadepeakpoet.ARouter:arouter-register:1.0.3"
classpath "com.alibaba:arouter-register:1.0.2"
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
}
@@ -41,9 +40,9 @@ allprojects {
maven { url "https://mvn.mob.com/android" }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://developer.huawei.com/repo'}//华为库
maven { url 'http://developer.huawei.com/repo'}//华为库
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.faceunity.com/repository/maven-public/' }//美颜库
maven { url 'http://maven.faceunity.com/repository/maven-public/' }//美颜库
maven { url "https://jitpack.io" }
maven { url 'https://repo1.maven.org/maven2/' }//埋点
google() // Google's Maven repository

View File

@@ -3,8 +3,8 @@ apply plugin: 'img-optimizer'
android {
namespace "com.yunbao.common"
compileSdk rootProject.ext.android.compileSdkVersion
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
@@ -53,11 +53,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
buildFeatures {
buildConfig = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
@@ -161,14 +158,14 @@ dependencies {
//腾讯im
api 'com.tencent.imsdk:imsdk-plus:5.4.666'
api 'com.google.code.gson:gson:2.8.8'
api 'cn.rongcloud.sdk:rtc_lib:5.6.9' // 音视频通话基础能力库
api 'cn.rongcloud.sdk:rtc_lib:5.2.0' // 音视频通话基础能力库
//此处以集成 5.1.2 版本为例
api 'cn.rongcloud.sdk:im_lib:5.6.10'
api 'cn.rongcloud.sdk:im_lib:5.2.0.2'
//此处以集成 5.1.2 版本为例
api 'cn.rongcloud.sdk:im_kit:5.6.10' // 即时通讯 UI 基础组件
api 'cn.rongcloud.sdk:im_kit:5.2.5.4' // 即时通讯 UI 基础组件
//融云小视频模块
api 'cn.rongcloud.sdk:sight:5.6.10'
api 'cn.rongcloud.sdk:sight:5.2.5.4'
api 'com.facebook.android:facebook-android-sdk:15.2.0'
implementation 'com.facebook.android:facebook-android-sdk:15.2.0'
@@ -203,9 +200,7 @@ dependencies {
//自定义圆角图片
api 'com.makeramen:roundedimageview:2.3.0'
// 友盟统计SDK
api 'com.umeng.umsdk:common:9.6.3'// 必选
api 'com.umeng.umsdk:asms:1.8.0'// 必选
api 'com.umeng.umsdk:uyumao:1.1.2'
// api(name: 'umeng-common-9.6.8+000', ext: 'aar')
//高级运营分析功能依赖库使用卸载分析、开启反作弊能力请务必集成以免影响高级功能使用。common需搭配v9.6.3及以上版本asms需搭配v1.7.0及以上版本。需更新隐私声明。
// 标准版本SudMGP SDK
api 'tech.sud.mgp:SudMGP:1.3.3.1158'
@@ -222,7 +217,7 @@ dependencies {
api project(':lib_google')
//samsung插件包
//api project(':IAP6Helper')
api project(':IAP6Helper')
//文字渐变色
api 'com.github.FlyJingFish:GradientTextView:1.2.4'

Binary file not shown.

View File

@@ -1,14 +1,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
package="com.yunbao.common">
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<!-- <uses-permission android:name="android.permission.INTERNET" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
<application
android:allowBackup="true"
tools:replace="allowBackup"
>
<application android:allowBackup="true">
<!-- <meta-data-->
<!-- android:name="com.google.ar.core"-->

View File

@@ -272,6 +272,8 @@ public class Constants {
public static final int LINK_MIC_TYPE_NORMAL = 0;//观众与主播连麦
public static final int LINK_MIC_TYPE_ANCHOR = 1;//主播与主播连麦
public static final String SOCKET_LIVE_ANCHOR_PK_DIALOG="GuildCompetitionNotice";//公会赛弹窗
//视频举报获取位置
public static int xIndex = 0;
public static int yindex = 0;

View File

@@ -39,7 +39,7 @@ public class HtmlConfig {
public static final String TURNTABLE_URL = CommonAppConfig.HOST + "/Appapi/Turntable/index";
//在线商城
public static final String SHOP = CommonAppConfig.HOST + "/h5/shoppingMall.html";
public static final String SHOP = CommonAppConfig.HOST + "/h5/shop/index.html";
//社区
public static final String ENCOURAGE = CommonAppConfig.HOST + "/h5/shequ/index.html#/h5/shequ";

View File

@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
@@ -24,13 +25,12 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.R;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.LifeCycleListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.ClickUtil;
import com.yunbao.common.utils.ToastUtil;
import java.util.ArrayList;
import java.util.List;
@@ -92,7 +92,8 @@ public abstract class AbsActivity extends AppCompatActivity {
protected void main() {
}
protected void create(){
protected void create() {
}
@@ -107,6 +108,17 @@ public abstract class AbsActivity extends AppCompatActivity {
}
}
protected void setTitleBold(boolean bold) {
TextView titleView = (TextView) findViewById(R.id.titleView);
if (titleView != null) {
if (bold) {
titleView.setTypeface(Typeface.DEFAULT_BOLD);
} else {
titleView.setTypeface(Typeface.DEFAULT);
}
}
}
public void backClick(View v) {
if (v.getId() == R.id.btn_back) {
onBackPressed();
@@ -181,14 +193,14 @@ public abstract class AbsActivity extends AppCompatActivity {
//友盟统计
// MobclickAgent.onResume(this);
MobclickAgent.onPageStart(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onResume_"+this.mTag);
Log.e("MobclickAgent", "MobclickAgent:_onResume_" + this.mTag);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPageEnd(this.mTag);
Log.e("MobclickAgent","MobclickAgent:_onPause_"+this.mTag);
Log.e("MobclickAgent", "MobclickAgent:_onPause_" + this.mTag);
if (mLifeCycleListeners != null) {
for (LifeCycleListener listener : mLifeCycleListeners) {
listener.onPause();
@@ -382,11 +394,12 @@ public abstract class AbsActivity extends AppCompatActivity {
break;
}
}
public boolean isKefu(String url){
if(url.contains("kefu")){
public boolean isKefu(String url) {
if (url.contains("kefu")) {
return true;
}
if(url.contains("https://newkf.yaoulive.com/")){
if (url.contains("https://newkf.yaoulive.com/")) {
return true;
}
return url.startsWith("https://kefu.yaoulive.com");

View File

@@ -29,6 +29,7 @@ import com.lxj.xpopup.XPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.HtmlConfig;
import com.yunbao.common.R;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.event.JavascriptInterfaceEvent;
@@ -100,7 +101,6 @@ public class WebViewActivity extends AbsActivity {
ft_title = (FrameLayout) findViewById(R.id.ft_title);
v_spacing = (View) findViewById(R.id.v_spacing);
mWebView = findViewById(R.id.webView);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.topMargin = DpUtil.dp2px(1);
// mWebView.setLayoutParams(params);
@@ -136,11 +136,17 @@ public class WebViewActivity extends AbsActivity {
if (url.contains("for")) {
mWebView.loadUrl("javascript:goAnchorTab()");
}
if(url.startsWith(HtmlConfig.SHOP)){
//商店页不做动态变换
return;
}
//真实屏幕高度-(ft_title的高度+导航栏高度)
//屏蔽掉是因为在线客服页面 AndroidBug5497Workaround会失效
int height = DeviceUtils.getScreenRealHeight(mContext) - DpUtil.dp2px(72) - getCurrentNavigationBarHeight(mContext);
if (!navigationGestureEnabled(mContext)) {
view.loadUrl("javascript:window.androidObject.setHeight(" + height + ",0,false)");
// view.loadUrl("javascript:window.androidObject.setHeight(" + height + ",0,false)");
}
}
@@ -194,6 +200,8 @@ public class WebViewActivity extends AbsActivity {
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setUseWideViewPort(true); // 关键点
mWebView.getSettings().setAllowFileAccess(true); // 允许访问文件
mWebView.setHorizontalScrollBarEnabled(false);
mWebView.setVerticalScrollBarEnabled(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
@@ -213,6 +221,9 @@ public class WebViewActivity extends AbsActivity {
ft_title.setVisibility(View.VISIBLE);
v_spacing.setVisibility(View.GONE);
}
if(!StringUtil.isEmpty(url)&&url.startsWith(HtmlConfig.SHOP)){
ft_title.setVisibility(View.GONE);
}
}

View File

@@ -0,0 +1,62 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
public class DebugDialogAdapter extends RecyclerView.Adapter<DebugDialogAdapter.DebugViewHolder> {
TreeMap<String, String> paramMap = new TreeMap<>();
private Context mContext;
public DebugDialogAdapter(Context mContext) {
this.mContext = mContext;
}
public void setParamMap(TreeMap<String, String> paramMap) {
Log.i("debug弹窗", "setParamMap: 添加值到view " + paramMap.size());
this.paramMap = paramMap;
notifyDataSetChanged();
}
@NonNull
@Override
public DebugViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new DebugViewHolder(new TextView(mContext));
}
@Override
public void onBindViewHolder(@NonNull DebugViewHolder holder, int position) {
List<String> list = new ArrayList<>(paramMap.keySet());
Log.i("debug弹窗", "onBindViewHolder: 添加值到view " + list.size() + "|" + paramMap.size());
holder.setData(list.get(position), paramMap.get(list.get(position)));
}
@Override
public int getItemCount() {
Log.i("debug弹窗", "getItemCount: " + paramMap.size());
return paramMap.size();
}
public class DebugViewHolder extends RecyclerView.ViewHolder {
public DebugViewHolder(@NonNull View itemView) {
super(itemView);
}
public void setData(String tag, String msg) {
Log.i("debug弹窗", "setData: 添加值到view " + tag + "|" + msg);
((TextView) itemView).setText(tag + ":" + msg);
((TextView) itemView).setTextColor(Color.BLACK);
}
}
}

View File

@@ -0,0 +1,112 @@
package com.yunbao.common.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
/**
* Created by cxf on 2018/11/28.
*/
public class ImagePreviewAdapter extends RecyclerView.Adapter<ImagePreviewAdapter.Vh> {
private LayoutInflater mInflater;
private ActionListener mActionListener;
private int mPageCount;
private LinearLayoutManager mLayoutManager;
private int mCurPosition;
public ImagePreviewAdapter(Context context, int pageCount) {
mPageCount = pageCount;
mInflater = LayoutInflater.from(context);
}
@NonNull
@Override
public Vh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new Vh(mInflater.inflate(R.layout.item_preview_img, parent, false));
}
@Override
public void onBindViewHolder(@NonNull Vh vh, int position) {
vh.setData(position);
}
@Override
public int getItemCount() {
return mPageCount;
}
class Vh extends RecyclerView.ViewHolder {
ImageView mImg;
public Vh(View itemView) {
super(itemView);
mImg = (ImageView) itemView;
}
void setData(int position) {
if (mActionListener != null) {
mActionListener.loadImage(mImg, position);
}
}
}
public void setActionListener(ActionListener actionListener) {
mActionListener = actionListener;
}
public void setCurPosition(int curPosition) {
mCurPosition = curPosition;
if (mActionListener != null) {
mActionListener.onPageChanged(curPosition);
}
}
public int getCurPosition(){
return mCurPosition;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();
pagerSnapHelper.attachToRecyclerView(recyclerView);
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int position = mLayoutManager.findFirstCompletelyVisibleItemPosition();
if (position >= 0 && mCurPosition != position) {
mCurPosition = position;
if (mActionListener != null) {
mActionListener.onPageChanged(position);
}
}
}
});
}
public interface ActionListener {
void onPageChanged(int position);
void loadImage(ImageView imageView, int position);
}
}

View File

@@ -18,10 +18,14 @@ import com.yunbao.common.views.InteractionGamesChildViewHolder;
import java.util.ArrayList;
import java.util.List;
/**
* 侧边栏游戏列表适配器,改游戏列表数量在这里改
*/
public class InteractionGamesAdapter extends RecyclerView.Adapter {
private Context mContext;
private boolean rigts;
private List<CustomSidebarChildModel> child = new ArrayList<>();
private List<CustomSidebarChildModel> srcChild = new ArrayList<>();
public InteractionGamesAdapter(Context mContext, boolean rigts) {
this.mContext = mContext;
@@ -46,7 +50,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
long activityID = TextUtils.isEmpty(model.getSrc()) ? 0 : Long.parseLong(model.getSrc());
if (activityID != 0) {
Bus.get().post(new CustomDrawerPopupEvent()
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(child));
.setDisMiss(true).setInteractionID(activityID).setInteraction(true).setChild(srcChild));
}
@@ -61,6 +65,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
srcChild.clear();
if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
@@ -68,6 +73,7 @@ public class InteractionGamesAdapter extends RecyclerView.Adapter {
} else {
child.addAll(mChild);
}
srcChild.addAll(mChild);
notifyDataSetChanged();
}

View File

@@ -67,13 +67,14 @@ public class LiveNewRoleInteractionGamesAdapter extends RecyclerView.Adapter {
public void updateData(List<CustomSidebarChildModel> mChild) {
child.clear();
if (mChild.size() > 8) {
/* if (mChild.size() > 8) {
for (int i = 0; i < 8; i++) {
child.add(mChild.get(i));
}
} else {
child.addAll(mChild);
}
}*/
child.addAll(mChild);
notifyDataSetChanged();
}

View File

@@ -1,6 +1,9 @@
package com.yunbao.common.bean;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
/**
* 机器人助手IM消息
@@ -21,6 +24,9 @@ public class AiAutomaticSpeechModel extends BaseModel {
//标签图片
@SerializedName("icon")
private String icon;
@SerializedName("icon_en")
@JSONField(name = "icon_en")
private String iconEn;
//气泡背景
@SerializedName("system_bubble")
private String systemBubble;
@@ -35,7 +41,7 @@ public class AiAutomaticSpeechModel extends BaseModel {
}
public String getAiName() {
return aiName+":";
return aiName + ":";
}
public AiAutomaticSpeechModel setAiName(String aiName) {
@@ -43,6 +49,15 @@ public class AiAutomaticSpeechModel extends BaseModel {
return this;
}
public String getIconEn() {
return iconEn;
}
public AiAutomaticSpeechModel setIconEn(String iconEn) {
this.iconEn = iconEn;
return this;
}
public String getContent() {
return content;
}
@@ -62,6 +77,9 @@ public class AiAutomaticSpeechModel extends BaseModel {
}
public String getIcon() {
if (!WordUtil.isNewZh() && !StringUtil.isEmpty(iconEn)) {
return iconEn;
}
return icon;
}

View File

@@ -0,0 +1,25 @@
package com.yunbao.common.bean;
public class AvatarBean extends BaseModel {
private String avatar;
private String avatarThumb;
public AvatarBean() {
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getAvatarThumb() {
return avatarThumb;
}
public void setAvatarThumb(String avatarThumb) {
this.avatarThumb = avatarThumb;
}
}

View File

@@ -7,12 +7,21 @@ import java.util.Map;
public class LiveBattlePassRewardsBean extends BaseModel{
private int level;
private int is_received;
private List<BattlePassType> live_battle_pass_type;
private Map<Integer,Map<Integer,LiveBattlePassReward>> live_battle_pass_rewards;
public LiveBattlePassRewardsBean() {
}
public int getIs_received() {
return is_received;
}
public void setIs_received(int is_received) {
this.is_received = is_received;
}
public int getLevel() {
return level;
}

View File

@@ -49,6 +49,16 @@ public class RedPacketInfoModel extends BaseModel {
//超级红包ID
@SerializedName("super_jackpot_id")
private String superJackpotId;
@SerializedName("red_packet_type")
private int redPacketType;// 1.普通红包 2.特殊红包
public int getRedPacketType() {
return redPacketType;
}
public void setRedPacketType(int redPacketType) {
this.redPacketType = redPacketType;
}
public String getSuperJackpotId() {
return superJackpotId;

View File

@@ -67,7 +67,6 @@ public class UserBean implements Parcelable {
//随机天梯排位赛PK img仅在主播PK时使用
private String mRankPkImgUrl;
//是否填写完整资料
@SerializedName("user_info_complete")
private int user_info_complete;
//粉丝团等级
private int fansLevel;
@@ -110,14 +109,6 @@ public class UserBean implements Parcelable {
return user_info_complete;
}
public int getUser_info_complete() {
return user_info_complete;
}
public void setUser_info_complete(int user_info_complete) {
this.user_info_complete = user_info_complete;
}
public UserBean seUserInfoComplete(int userInfoComplete) {
this.user_info_complete = userInfoComplete;
return this;
@@ -874,11 +865,20 @@ public class UserBean implements Parcelable {
private String medal;
private String bubble;
private String medal_new;
private String medal_new_en;
public String getMedal_new() {
return medal_new;
}
public String getMedal_new_en() {
return medal_new_en;
}
public void setMedal_new_en(String medal_new_en) {
this.medal_new_en = medal_new_en;
}
public void setMedal_new(String medal_new) {
this.medal_new = medal_new;
}

View File

@@ -14,7 +14,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.R;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.http.base.HttpCallback;

View File

@@ -45,6 +45,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Random;
/**
* 半屏创建游戏房间
*/
public class CreateSudGamePopup extends BottomPopupView {
private List<CustomSidebarChildModel> customSidebarChildModels = new ArrayList<>();
private TextView createGameType, selectCurrencyType;
@@ -312,20 +315,50 @@ public class CreateSudGamePopup extends BottomPopupView {
animator.setDuration(animDuration);
animator.setInterpolator(new LinearInterpolator());
animator.start();
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
if (hasMoveUp) {
InputMethodManager imm = getSystemService(getContext(), InputMethodManager.class);
if (imm != null) {
imm.hideSoftInputFromWindow(roomName.getWindowToken(), 0);
imm.hideSoftInputFromWindow(gameSill.getWindowToken(), 0);
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
}
}, 500);
}else {
XPopup.Builder builder = new XPopup.Builder(getContext()).atView(findViewById(R.id.currency_type));
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameListSelectPopup(getContext(), 5, currencyTypeName,isYuanbao)
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
closeAnimSudGameListEvent();
}
})
)
.show();
}
}
});
}

View File

@@ -0,0 +1,119 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lzf.easyfloat.EasyFloat;
import com.lzf.easyfloat.enums.ShowPattern;
import com.lzf.easyfloat.interfaces.OnPermissionResult;
import com.lzf.easyfloat.permission.PermissionUtils;
import com.yunbao.common.adapter.DebugDialogAdapter;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.ToastUtil;
import java.util.Timer;
import java.util.TimerTask;
import java.util.TreeMap;
public class DebugDialog {
RecyclerView recyclerView;
TreeMap<String, String> params;
DebugDialogAdapter adapter;
private static DebugDialog debugDialog;
Context mContext;
public static DebugDialog getInstance() {
if (debugDialog == null) {
debugDialog = new DebugDialog();
}
return debugDialog;
}
public DebugDialog clear() {
params.clear();
return this;
}
public void setParams(String tag, String msg) {
Log.i("debug弹窗", "setParams: "+tag+"|"+msg);
params.put(tag, msg);
if (adapter != null)
adapter.setParamMap(params);
}
private DebugDialog() {
if(params==null) {
Log.i("debug弹窗", "DebugDialog: 初始化参数");
params = new TreeMap<>();
}
init();
}
private void init(){
this.mContext = AppManager.getInstance().getMainActivity();
if (mContext == null) {
startWaitMainActivity();
return;
}
if (PermissionUtils.checkPermission(mContext)) {
createView();
} else {
PermissionUtils.requestPermission((Activity) mContext, new OnPermissionResult() {
@Override
public void permissionResult(boolean b) {
ToastUtil.show("悬浮权限" + b);
if (b) {
createView();
}
}
});
}
// 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() {
recyclerView = new RecyclerView(mContext);
adapter = new DebugDialogAdapter(mContext);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
recyclerView.setAdapter(adapter);
recyclerView.setBackgroundColor(Color.WHITE);
EasyFloat.with(mContext)
.setTag("debug")
.setShowPattern(ShowPattern.FOREGROUND)
.setLayout(recyclerView)
.show();
if(!params.isEmpty()){
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
adapter.setParamMap(params);
}
},1000);
Log.i("debug弹窗", "createView: 有值");
}
Log.i("debug弹窗", "createView: 创建");
}
}

View File

@@ -0,0 +1,160 @@
package com.yunbao.common.dialog;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.ImagePreviewAdapter;
import com.yunbao.common.utils.StringUtil;
/**
* Created by Martin on 2024/3/15.
* 图片预览弹窗
*/
public class ImagePreviewDialog extends AbsDialogFragment implements View.OnClickListener {
private View mBg;
private RecyclerView mRecyclerView;
private ValueAnimator mAnimator;
private int mPosition;
private int mPageCount;
private ActionListener mActionListener;
private TextView mCount;
private ImagePreviewAdapter mAdapter;
private boolean mNeedDelete;
@Override
protected int getLayoutId() {
return R.layout.view_preview_image;
}
@Override
protected int getDialogStyle() {
return R.style.dialog2;
}
@Override
protected boolean canCancel() {
return true;
}
@Override
protected void setWindowAttributes(Window window) {
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(params);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mBg = mRootView.findViewById(R.id.bg);
mCount = (TextView) findViewById(R.id.count);
findViewById(R.id.btn_close).setOnClickListener(this);
if (mNeedDelete) {
View btnDelete = findViewById(R.id.btn_delete);
btnDelete.setVisibility(View.VISIBLE);
btnDelete.setOnClickListener(this);
}
mRecyclerView = mRootView.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
mAnimator = ValueAnimator.ofFloat(0, 1);
mAnimator.setDuration(150);
mAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float v = (float) animation.getAnimatedValue();
mBg.setAlpha(v);
}
});
mAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (mRecyclerView != null && mPageCount > 0) {
ImagePreviewAdapter adapter = new ImagePreviewAdapter(mContext, mPageCount);
mAdapter = adapter;
adapter.setActionListener(new ImagePreviewAdapter.ActionListener() {
@Override
public void onPageChanged(int position) {
if (mCount != null) {
mCount.setText(StringUtil.contact(String.valueOf(position + 1), "/", String.valueOf(mPageCount)));
}
}
@Override
public void loadImage(ImageView imageView, int position) {
if (mActionListener != null) {
mActionListener.loadImage(imageView, position);
}
}
});
mRecyclerView.setAdapter(adapter);
if (mPosition >= 0 && mPosition < mPageCount) {
adapter.setCurPosition(mPosition);
mRecyclerView.scrollToPosition(mPosition);
}
}
}
});
mAnimator.start();
}
public void setImageInfo(int pageCount, int position, boolean needDelete, ActionListener actionListener) {
mActionListener = actionListener;
mPageCount = pageCount;
mPosition = position;
mNeedDelete = needDelete;
}
@Override
public void onDestroy() {
if (mAnimator != null) {
mAnimator.cancel();
}
mContext = null;
mActionListener = null;
super.onDestroy();
}
@Override
public void onClick(View v) {
int i = v.getId();
if (i == R.id.btn_close) {
dismiss();
} else if (i == R.id.btn_delete) {
delete();
}
}
private void delete() {
if (mAdapter != null && mActionListener != null) {
mActionListener.onDeleteClick(mAdapter.getCurPosition());
}
dismiss();
}
public interface ActionListener {
void loadImage(ImageView imageView, int position);
void onDeleteClick(int position);
}
}

View File

@@ -21,6 +21,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
//游戏弹窗
public class LiveNewRolePopup extends BottomPopupView {
private boolean showRed = false;

View File

@@ -19,6 +19,7 @@ import com.yunbao.common.event.LiveSudGameHistoryEvent;
import com.yunbao.common.event.RoomHolderTypeEvent;
import com.yunbao.common.event.SudGameListEvent;
import com.yunbao.common.event.SudGameListSillEvent;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
@@ -87,6 +88,11 @@ public class SudGameListSelectPopup extends AttachPopupView {
if (mType == 0 || mType == 4) {
topSelect.setText(getContext().getString(R.string.interactive_game_room_all));
for (int i = 0; i < customSidebarChildModels.size(); i++) {
/* if (!IMLoginManager.get(getContext()).getUserInfo().anchorUserType()) {
if ("1490944230389182466".equals(customSidebarChildModels.get(i).getSrc())) {//友尽闯关
continue;
}
}*/
selectString.add(customSidebarChildModels.get(i).getTitle());
if (TextUtils.equals(String.valueOf(interactionID), customSidebarChildModels.get(i).getSrc())) {
index = i;

View File

@@ -115,6 +115,36 @@ public class SendBlindGiftEvent extends BaseModel {
private String liveGiftNotify;
@SerializedName("userNiceName")
private String userNiceName;
@SerializedName("special_gift")
private int specialGift;
@SerializedName("special_gift_name")
private String specialGiftName;
@SerializedName("special_gift_name_en")
private String specialGiftNameEn;
public int getSpecialGift() {
return specialGift;
}
public void setSpecialGift(int specialGift) {
this.specialGift = specialGift;
}
public String getSpecialGiftName() {
return specialGiftName;
}
public void setSpecialGiftName(String specialGiftName) {
this.specialGiftName = specialGiftName;
}
public String getSpecialGiftNameEn() {
return specialGiftNameEn;
}
public void setSpecialGiftNameEn(String specialGiftNameEn) {
this.specialGiftNameEn = specialGiftNameEn;
}
public String getUserNiceName() {
return userNiceName;

View File

@@ -0,0 +1,44 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.HttpCallbackModel;
public class SubGameEvent {
int type;
HttpCallbackModel model;
String dataJson;
public SubGameEvent(int type, HttpCallbackModel model, String dataJson) {
this.type = type;
this.model = model;
this.dataJson = dataJson;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public HttpCallbackModel getModel() {
return model;
}
public void setModel(HttpCallbackModel model) {
this.model = model;
}
public String getDataJson() {
return dataJson;
}
@Override
public String toString() {
return "SubGameEvent{" +
"type=" + type +
", model=" + model +
", dataJson='" + dataJson + '\'' +
'}';
}
}

View File

@@ -42,7 +42,7 @@ import java.util.Locale;
*/
public class CommonHttpUtil {
public static final String GET_UPLOAD_QI_NIU_TOKEN = "getUploadQiNiuToken";
/**
* 初始化
@@ -450,6 +450,16 @@ public class CommonHttpUtil {
public static void getUserBaseinfo(String touid, HttpCallback callback) {
HttpClient.getInstance().get("User.getUserBaseinfo", CommonHttpConsts.GET_USER_BASEINFO).params("touid", touid).execute(callback);
}
/**
* 上传文件 获取七牛云token的接口
*/
public static void getUploadQiNiuToken(HttpCallback callback, boolean isImg) {
HttpClient.getInstance().get("Pdluserhome.getQiNiuToken2", "Pdluserhome.getQiNiuToken2")
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("ext", isImg ? ".jpeg" : ".mp4")
.execute(callback);
}
//
// //埋点唯一性
// public static void setAdvertisingChannels(String operation, HttpCallback callback) {

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
@@ -82,10 +83,13 @@ import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
@@ -111,7 +115,7 @@ public interface PDLiveApi {
@Field("uuid_Device") String uuidDevice,
@Field("pushid") String pushid,
@Field("lastlogindevice") String lastlogindevice,
@Field("langue")String langue
@Field("langue") String langue
);
/**
@@ -1186,10 +1190,46 @@ public interface PDLiveApi {
@GET("/api/public/?service=Guard.participateMoneyLong")
Observable<ResponseModel<String>> participateMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.endSendMoneyLong")
Observable<ResponseModel<SendMoneyLongModel>> endSendMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.checkUpgrades")
Observable<ResponseModel<CheckUpgradesModel>> checkUpgrades(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.getRewards")
Observable<ResponseModel<Object>> guardGetRewards(@Query("guard_level") String guardLevel,@Query("liveuid") String liveUid);
Observable<ResponseModel<Object>> guardGetRewards(@Query("guard_level") String guardLevel, @Query("liveuid") String liveUid);
@Multipart
@POST("/api/public/?service=Pdlinfos.updateAvatar")
Observable<ResponseModel<AvatarBean>> updateFile(@Part MultipartBody.Part file, @Query("uid") String uid, @Query("token") String token);
@GET("/api/public/?service=User.userFeedback")
Observable<ResponseModel<List<BaseModel>>> feedback(@Query("problem_description") String content, @Query("problem_image") String images, @Query("contact_information") String ci);
@GET("/api/public/?service=User.userFeedbackRestrict")
Observable<ResponseModel<List<BaseModel>>> checkFeedback();
/**
*
* @param roomId 房间ID
* @param cmd 事件名称 生命值:addHeart 自动跳:hit
* @param value 价格
* @param gameId 游戏ID
* @param fromUid 付费用户uid
* @param toUid 目标用户uid
* @param payload 附加值
* @return
*/
@GET("/api/public/?service=Sudgameserver.createOrder")
Observable<ResponseModel<List<BaseModel>>> createGameOrder(
@Query("room_id")String roomId,
@Query("cmd")String cmd,
@Query("value")String value,
@Query("mg_id")String gameId,
@Query("from_uid")String fromUid,
@Query("to_uid")String toUid,
@Query("payload")String payload
);
}

View File

@@ -4,9 +4,12 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.fastjson.JSONArray;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
@@ -79,6 +82,7 @@ import com.yunbao.common.http.base.CheckLiveCallBack;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.WordUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -88,6 +92,10 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Query;
/**
@@ -3160,6 +3168,123 @@ public class LiveNetManager {
}
public void updateFile(File file, HttpCallback<AvatarBean> callback) {
MultipartBody.Part uploadFile = createUploadFile(file);
API.get().pdLiveApi(mContext)
.updateFile(uploadFile, CommonAppConfig.getInstance().getUid(), CommonAppConfig.getInstance().getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<AvatarBean>>() {
@Override
public void accept(ResponseModel<AvatarBean> model) throws Exception {
if (callback != null) {
callback.onSuccess(model.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void feedback(
String content,
JSONArray images,
String ci
, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.feedback(content, images.toString(), ci)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void checkFeedback(
HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.checkFeedback()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
public void createGameOrder(
String roomId,
String cmd,
String value,
String gameId,
String fromUid,
String toUid,
String roundId,
String payload
, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.createGameOrder(roomId, cmd, value, gameId, fromUid, toUid,payload)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<BaseModel>>>() {
@Override
public void accept(ResponseModel<List<BaseModel>> responseModel) {
if (callback != null) {
HttpCallbackModel model = new HttpCallbackModel();
model.setCode(responseModel.getData().getCode());
model.setMsg(responseModel.getData().getMsg());
callback.onSuccess(model);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(com.yunbao.common.R.string.net_error));
}
}
}).isDisposed();
}
private MultipartBody.Part createUploadFile(File file) {
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
return MultipartBody.Part.createFormData("file", file.getName(), requestBody);
}
/**
* 直播间取消网络请求
*/

View File

@@ -1,16 +1,62 @@
package com.yunbao.common.interfaces;
import android.content.Context;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.AvatarBean;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.upload.UploadBean;
import com.yunbao.common.upload.UploadCallback;
import com.yunbao.common.upload.UploadQnImpl;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by cxf on 2018/9/29.
*/
public interface ImageResultCallback {
public abstract class ImageResultCallback {
//跳转相机前执行
void beforeCamera();
public void beforeCamera() {
}
void onSuccess(File file);
public void onSuccess(File file) {
}
void onFailure();
}
public void onFailure() {
}
public void onSuccessToUrl(File file, OnItemClickListener<String> listener) {
LiveNetManager.get(CommonAppContext.getTopActivity())
.updateFile(file, new com.yunbao.common.http.base.HttpCallback<AvatarBean>() {
@Override
public void onSuccess(AvatarBean data) {
listener.onItemClick(data.getAvatar(), 0);
}
@Override
public void onError(String error) {
listener.onItemClick(error, -1);
}
});
}
public void onSuccessToQiNiuUrl(Context mContext, File file, OnItemClickListener<String> listener) {
UploadQnImpl mUploadStrategy = new UploadQnImpl(mContext);
List<UploadBean> beans = new ArrayList<>();
beans.add(new UploadBean(file, UploadBean.IMG));
mUploadStrategy.upload(beans, true, new UploadCallback() {
@Override
public void onFinish(List<UploadBean> list, boolean success) {
if (success) {
listener.onItemClick("https://downs.yaoulive.com/" + list.get(0).getRemoteAccessUrl(), 0);
} else {
listener.onItemClick(null, -1);
}
}
}, true);
}
}

View File

@@ -8,18 +8,15 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.lzf.easyfloat.EasyFloat;
import com.lzy.okgo.model.Response;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.event.DataUserInfoEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.http.JsonBean;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.base.BaseCacheManager;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
@@ -468,11 +465,6 @@ public class IMLoginManager extends BaseCacheManager {
//兼容老模块(之后要把用户维护的类更换掉)
SpUtil.getInstance().setStringValue(SpUtil.USER_INFO, new Gson().toJson(userInfo));
}
@Override
public void onError(Response<JsonBean> response) {
super.onError(response);
}
});
}

View File

@@ -3,7 +3,7 @@ package com.yunbao.common.pay.samsung;
import android.content.Context;
import com.google.gson.Gson;
import com.samsung.android.sdk.iap.lib.constants.HelperDefine;
import com.samsung.android.sdk.iap.lib.helper.HelperDefine;
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.OnGetOwnedListListener;
@@ -11,8 +11,6 @@ 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.ErrorVo;
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 java.util.ArrayList;
@@ -59,27 +57,9 @@ public class SamsungUtil {
*/
public void buy(String skuId, OnPaymentListener 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());
}
}
});
iapHelper.startPayment(skuId, "", onPaymentListener);
}
public interface OnPaymentListener {
void onPaymentSuccess(String purchaseVo);
void onPaymentFailed(String errorVo);
}
/**
* 消耗指定商品
*

View File

@@ -9,6 +9,7 @@ import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Toast;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.sud.decorator.SudFSMMGCache;
import com.yunbao.common.sud.decorator.SudFSMMGDecorator;
import com.yunbao.common.sud.decorator.SudFSMMGListener;
@@ -16,7 +17,10 @@ import com.yunbao.common.sud.decorator.SudFSTAPPDecorator;
import com.yunbao.common.sud.model.GameConfigModel;
import com.yunbao.common.sud.model.GameViewInfoModel;
import com.yunbao.common.sud.state.MGStateResponse;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.SudJsonUtils;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import tech.sud.mgp.core.ISudFSMStateHandle;
import tech.sud.mgp.core.ISudFSTAPP;
@@ -142,7 +146,10 @@ public abstract class BaseGameViewModel implements SudFSMMGListener {
// 给装饰类设置回调
sudFSMMGDecorator.setSudFSMMGListener(this);
sudFSMMGDecorator.setGameId(gameId);
sudFSMMGDecorator.setRoomId(gameRoomId);
sudFSMMGDecorator.setUserId(getUserId());
Log.i("游戏回调", code + " " + gameId + " " + gameRoomId + " ");
// 调用游戏sdk加载游戏
ISudFSTAPP iSudFSTAPP = SudMGP.loadMG(activity, getUserId(), gameRoomId, code, gameId, getLanguageCode(), sudFSMMGDecorator);
@@ -282,6 +289,28 @@ public abstract class BaseGameViewModel implements SudFSMMGListener {
public void onGameLog(String str) {
SudFSMMGListener.super.onGameLog(str);
Log.e("onGameStarted", "游戏日志:" + str);
if (!StringUtil.isEmpty()) {
try {
JSONObject json = JSONObject.parseObject(str);
if ("error".equals(json.getString("level"))) {
String msg = json.getString("msg");
JSONObject error = JSONObject.parseObject(msg);
if (error.containsKey("msg")) {
int resultCode = error.getInteger("resultCode");
switch (resultCode) {
case 100503:
ToastUtil.show(WordUtil.isNewZh()?"有玩家未点击准备":"There are players who haven't clicked \"Ready\" yet.");
break;
case 100504:
ToastUtil.show(WordUtil.isNewZh()?"小于游戏最小开始人数":"The number of players is less than the minimum required to start the game.");
break;
}
}
}
} catch (Exception ignore) {
}
}
}
/**

View File

@@ -59,7 +59,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
/**
* 游戏的语言代码
*/
public String languageCode = "zh-CN";
public String languageCode = "zh-TW";
public final MutableLiveData<View> gameViewLiveData = new MutableLiveData<>(); // 游戏View回调
@@ -69,7 +69,7 @@ public class QuickStartGameViewModel extends BaseGameViewModel {
@Override
protected void getCode(Activity activity, String userId, String appId, GameGetCodeListener listener) {
if (IMLoginManager.get(activity).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) {
languageCode = "zh-CN";
languageCode = "zh-TW";
}else {
languageCode = "en-US";
}

View File

@@ -23,6 +23,10 @@ import tech.sud.mgp.core.ISudFSMStateHandle;
*/
public class SudFSMMGDecorator implements ISudFSMMG {
private static final String TAG = "游戏回调";
private long gameId;
private String gameRoomId;
private String userId;
// 回调
private SudFSMMGListener sudFSMMGListener;
@@ -227,10 +231,10 @@ public class SudFSMMGDecorator implements ISudFSMMG {
}
break;
case SudMGPMGState.MG_COMMON_GAME_STATE: // 10. 游戏状态
Log.e("onGameStateChange", "mg_common_game_state:::::" + "dataJson:::::"+dataJson);
Log.e("onGameStateChange", "mg_common_game_state:::::" + "dataJson:::::" + dataJson);
SudMGPMGState.MGCommonGameState mgCommonGameState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameState.class);
sudFSMMGCache.onGameMGCommonGameState(mgCommonGameState);
if (mgCommonGameState.gameState==2){
if (mgCommonGameState.gameState == 2) {
Bus.get().post(new CheckRemainingBalanceEvent().setSudMGPMGState(SudMGPMGState.MG_COMMON_GAME_STATE));
}
if (listener == null) {
@@ -354,6 +358,14 @@ public class SudFSMMGDecorator implements ISudFSMMG {
break;
case SudMGPMGState.MG_COMMON_GAME_CREATE_ORDER: // 25. 创建订单
SudMGPMGState.MGCommonGameCreateOrder mgCommonGameCreateOrder = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameCreateOrder.class);
if (mgCommonGameCreateOrder != null) {
mgCommonGameCreateOrder.gameId = gameId;
mgCommonGameCreateOrder.gameRoomId = gameRoomId;
mgCommonGameCreateOrder.userId = userId;
mgCommonGameCreateOrder.dataJson = dataJson;
}
Log.i(TAG, "onGameStateChange: " + dataJson);
if (listener == null) {
ISudFSMStateHandleUtils.handleSuccess(handle);
} else {
@@ -1021,4 +1033,15 @@ public class SudFSMMGDecorator implements ISudFSMMG {
return sudFSMMGCache;
}
public void setGameId(long gameId) {
this.gameId = gameId;
}
public void setRoomId(String gameRoomId) {
this.gameRoomId = gameRoomId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@@ -5,6 +5,7 @@
package com.yunbao.common.sud.decorator;
import com.yunbao.common.sud.decorator.game.JumpEvent;
import com.yunbao.common.sud.state.SudMGPMGState;
import com.yunbao.common.utils.ISudFSMStateHandleUtils;
@@ -271,7 +272,13 @@ public interface SudFSMMGListener {
* mg_common_game_create_order
*/
default void onGameMGCommonGameCreateOrder(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameCreateOrder model) {
ISudFSMStateHandleUtils.handleSuccess(handle);
if ("addHeart".equals(model.cmd)) {
JumpEvent.addHeart(model);
} else if ("hit".equals(model.cmd)) {
JumpEvent.hit(model);
} else {
ISudFSMStateHandleUtils.handleSuccess(handle);
}
}
/**

View File

@@ -0,0 +1,55 @@
package com.yunbao.common.sud.decorator.game;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.event.SubGameEvent;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.sud.state.SudMGPMGState;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.ToastUtil;
public class JumpEvent {
private static long clickTimer = 0;
public static void addHeart(SudMGPMGState.MGCommonGameCreateOrder order) {
createOrder(order);
}
public static void hit(SudMGPMGState.MGCommonGameCreateOrder order) {
createOrder(order);
}
private synchronized static void createOrder(SudMGPMGState.MGCommonGameCreateOrder order) {
if (System.currentTimeMillis() - clickTimer < 500) {
//TODO 防止重复点击
HttpCallbackModel _data=new HttpCallbackModel(1001,"");
Bus.get().post(new SubGameEvent(0, _data,order.dataJson));
return;
}
clickTimer = System.currentTimeMillis();
LiveNetManager.get(AppManager.getInstance().getLastActivity())
.createGameOrder(order.gameRoomId,
order.cmd,
order.value + "",
order.gameId + "",
order.fromUid,
order.toUid,
order.gameRoomId,
order.payload,
new HttpCallback<HttpCallbackModel>() {
@Override
public void onSuccess(HttpCallbackModel data) {
if (data.getCode() != 0) {
ToastUtil.show(data.getMsg());
Bus.get().post(new SubGameEvent(0, data,order.dataJson));
}
}
@Override
public void onError(String error) {
}
});
}
}

View File

@@ -496,6 +496,11 @@ public class SudMGPMGState implements Serializable {
public String toUid; // 目标用户uid
public long value; // 所属的游戏价值
public String payload; // 扩展数据 json 字符串, 特殊可选
public long gameId;
public String gameRoomId;
public String userId;
public String dataJson;
}
/**

View File

@@ -0,0 +1,105 @@
package com.yunbao.common.upload;
import java.io.File;
/**
* Created by cxf on 2019/4/16.
*/
public class UploadBean {
public static final int IMG = 0;
public static final int VIDEO = 1;
public static final int VOICE = 2;
private File mOriginFile;//要被上传的源文件
private File mCompressFile;//压缩后的图片文件
private String mRemoteFileName;//上传成功后在云存储上的文件名字
private String mRemoteAccessUrl;//上传成功后在云存储上的访问地址
private boolean mSuccess;//是否上传成功了
private int mType;
private Object mTag;
public UploadBean() {
}
public UploadBean(File originFile, int type) {
mOriginFile = originFile;
mType = type;
}
public File getOriginFile() {
return mOriginFile;
}
public void setOriginFile(File originFile) {
mOriginFile = originFile;
}
public String getRemoteFileName() {
return mRemoteFileName;
}
public void setRemoteFileName(String remoteFileName) {
mRemoteFileName = remoteFileName;
}
public String getRemoteAccessUrl() {
return mRemoteAccessUrl;
}
public void setRemoteAccessUrl(String remoteAccessUrl) {
mRemoteAccessUrl = remoteAccessUrl;
}
public File getCompressFile() {
return mCompressFile;
}
public void setCompressFile(File compressFile) {
mCompressFile = compressFile;
}
public boolean isSuccess() {
return mSuccess;
}
public void setSuccess(boolean success) {
mSuccess = success;
}
public void setEmpty() {
mOriginFile = null;
mRemoteFileName = null;
mRemoteAccessUrl = null;
}
public boolean isEmpty() {
return mOriginFile == null && mRemoteFileName == null && mRemoteAccessUrl == null;
}
public int getType() {
return mType;
}
public Object getTag() {
return mTag;
}
public void setTag(Object tag) {
mTag = tag;
}
@Override
public String toString() {
return "UploadBean{" +
"mOriginFile=" + mOriginFile +
", mCompressFile=" + mCompressFile +
", mRemoteFileName='" + mRemoteFileName + '\'' +
", mRemoteAccessUrl='" + mRemoteAccessUrl + '\'' +
", mSuccess=" + mSuccess +
", mType=" + mType +
", mTag=" + mTag +
'}';
}
}

View File

@@ -0,0 +1,11 @@
package com.yunbao.common.upload;
import java.util.List;
/**
* Created by cxf on 2019/4/16.
*/
public interface UploadCallback {
void onFinish(List<UploadBean> list, boolean success);
}

View File

@@ -0,0 +1,224 @@
package com.yunbao.common.upload;
import android.content.Context;
import android.text.TextUtils;
import com.qiniu.android.common.ServiceAddress;
import com.qiniu.android.common.Zone;
import com.qiniu.android.http.ResponseInfo;
import com.qiniu.android.storage.Configuration;
import com.qiniu.android.storage.UpCompletionHandler;
import com.qiniu.android.storage.UploadManager;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.StringUtil;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.util.List;
import top.zibin.luban.Luban;
/**
* Created by cxf on 2019/4/16.
* 七牛上传文件
*/
public class UploadQnImpl implements UploadStrategy {
private static final String TAG = "UploadQnImpl";
private Context mContext;
private List<UploadBean> mList;
private int mIndex;
private boolean mNeedCompress;
private UploadCallback mUploadCallback;
private HttpCallback mGetUploadTokenCallback;
private String mToken;
private UploadManager mUploadManager;
private UpCompletionHandler mCompletionHandler;//上传回调
private Luban.Builder mLubanBuilder;
public UploadQnImpl(Context context) {
mContext = context;
mCompletionHandler = new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
System.out.println("UploadQnImpl 上传-----ok----> " + info.isOK() + "--key---> " + "---response---> " + (response != null ? response.toString() : null));
//L.e("UploadQnImpl 上传-----ok----> " + info.isOK() + "--key---> " + "---response---> " + (response != null ? response.toString() : null));
try {
assert response != null;
mList.get(mIndex).setRemoteAccessUrl(response.getString("key"));
} catch (JSONException e) {
throw new RuntimeException(e);
}
if (mList == null || mList.size() == 0) {
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, false);
}
return;
}
UploadBean uploadBean = mList.get(mIndex);
if (info.isOK()) {
uploadBean.setSuccess(true);
if (uploadBean.getType() == UploadBean.IMG && mNeedCompress) {
//上传完成后把 压缩后的图片 删掉
File compressedFile = uploadBean.getCompressFile();
if (compressedFile != null && compressedFile.exists()) {
File originFile = uploadBean.getOriginFile();
if (originFile != null && !compressedFile.getAbsolutePath().equals(originFile.getAbsolutePath())) {
compressedFile.delete();
}
}
}
mIndex++;
if (mIndex < mList.size()) {
uploadNext();
} else {
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, true);
}
}
} else {
upload(mList.get(mIndex));//上传失败后 重新上传
}
}
};
}
@Override
public void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback, boolean isImg) {
System.err.println("-------upload------>" + list.size());
if (callback == null) {
return;
}
if (list == null || list.size() == 0) {
callback.onFinish(list, false);
return;
}
boolean hasFile = false;
for (UploadBean bean : list) {
if (bean.getOriginFile() != null) {
hasFile = true;
break;
}
}
if (!hasFile) {
callback.onFinish(list, true);
return;
}
mList = list;
mNeedCompress = needCompress;
mUploadCallback = callback;
mIndex = 0;
if (mGetUploadTokenCallback == null) {
mGetUploadTokenCallback = new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
mToken = info[0];
System.err.println("-------上传的token------>" + mToken);
L.e(TAG, "-------上传的token------>" + mToken);
uploadNext();
}
}
};
}
CommonHttpUtil.getUploadQiNiuToken(mGetUploadTokenCallback, isImg);
}
@Override
public void cancelUpload() {
CommonHttpUtil.cancel(CommonHttpUtil.GET_UPLOAD_QI_NIU_TOKEN);
if (mList != null) {
mList.clear();
}
mUploadCallback = null;
}
private void uploadNext() {
UploadBean bean = null;
while (mIndex < mList.size() && (bean = mList.get(mIndex)).getOriginFile() == null) {
mIndex++;
}
System.err.println("-------mIndex >= mList.size() mIndex------>" + mIndex);
if (mIndex >= mList.size()) {
System.err.println("-------mIndex >= mList.size()------>" + mList.size());
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, true);
}
System.err.println("-------mIndex >= mList.returnreturnreturnreturn------>" + mList.size());
return;
}
if (bean.getType() == UploadBean.IMG) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".jpg"));
} else if (bean.getType() == UploadBean.VIDEO) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".mp4"));
} else if (bean.getType() == UploadBean.VOICE) {
bean.setRemoteFileName(StringUtil.contact(StringUtil.generateFileName(), ".m4a"));
}
System.err.println("-------mIndex >= bean.getType() == UploadBean.IMG------>" + bean);
upload(bean);
/*if (bean.getType() == UploadBean.IMG && mNeedCompress) {
System.err.println("-------UploadBean.IMG && mNeedCompress------>" + bean + "UploadBean.IMG:" + UploadBean.IMG + "__mNeedCompress" + mNeedCompress);
if (mLubanBuilder == null) {
mLubanBuilder = Luban.with(mContext).ignoreBy(8)//8k以下不压缩
.setTargetDir(CommonAppConfig.INNER_PATH).setRenameListener(new OnRenameListener() {
@Override
public String rename(String filePath) {
return mList.get(mIndex).getRemoteFileName();
}
}).setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
UploadBean uploadBean = mList.get(mIndex);
uploadBean.setCompressFile(file);
upload(uploadBean);
}
@Override
public void onError(Throwable e) {
upload(mList.get(mIndex));
}
});
}
mLubanBuilder.load(bean.getOriginFile()).launch();
} else {
System.err.println("-------bean.getType() == UploadBean.IMG && mNeedCompress else");
upload(bean);
}*/
}
private void upload(UploadBean bean) {
System.err.println("-------upload(UploadBean bean)------>" + bean);
if (bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null) {
System.err.println("bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null");
if (mUploadManager == null) {
Zone zone = new Zone(new ServiceAddress("http://upload-z0.qiniup.com"), new ServiceAddress("http://up-z0.qiniup.com"));
Configuration configuration = new Configuration.Builder().zone(zone).build();
mUploadManager = new UploadManager(configuration);
}
File uploadFile = bean.getOriginFile();
if (bean.getType() == UploadBean.IMG && mNeedCompress) {
File compressedFile = bean.getCompressFile();
if (compressedFile != null && compressedFile.exists()) {
uploadFile = compressedFile;
}
}
mUploadManager.put(uploadFile, bean.getRemoteFileName(), mToken, mCompletionHandler, null);
} else {
System.err.println("else bean != null && !TextUtils.isEmpty(mToken) && mCompletionHandler != null");
if (mUploadCallback != null) {
mUploadCallback.onFinish(mList, false);
}
}
}
}

View File

@@ -0,0 +1,24 @@
package com.yunbao.common.upload;
import java.util.List;
/**
* Created by cxf on 2019/4/16.
*/
public interface UploadStrategy {
/**
* 执行上传
*
* @param list 被上传的文件列表
* @param needCompress 是否需要压缩
* @param callback 上传回调
*/
void upload(List<UploadBean> list, boolean needCompress, UploadCallback callback,boolean isImg);
/**
* 取消上传
*/
void cancelUpload();
}

View File

@@ -11,6 +11,7 @@ public class AppManager {
private static Stack<Activity> activityStack;
public AppManager() {
activityStack=new Stack<>();
}
/**
@@ -20,6 +21,33 @@ public class AppManager {
return SingleApp.INSTANCE;
}
public static Activity getActivity(String activityName) {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains(activityName)) {
return activity;
}
}
return null;
}
public Activity getMainActivity() {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains("MainActivity")) {
return activity;
}
}
return null;
}
public Activity getLiveActivity() {
for (Activity activity : activityStack) {
if (activity.getClass().getSimpleName().contains("LiveAudienceActivity")) {
return activity;
}
}
return null;
}
public static class SingleApp {
public static AppManager INSTANCE = new AppManager();
}
@@ -58,7 +86,14 @@ public class AppManager {
* 获取当前显示Activity堆栈中最后一个传入的activity
*/
public Activity getLastActivity() {
if (activityStack.isEmpty()) {
return null;
}
Activity activity = activityStack.lastElement();
if (activity == null || activity.isFinishing()) {
activityStack.remove(activity);
return getLastActivity();
}
return activity;
}
@@ -117,7 +152,7 @@ public class AppManager {
}
/**
*仅在debug下运行的代码
* 仅在debug下运行的代码
*/
public static void runDebugCode(Runnable runnable) {
if (BuildConfig.DEBUG) {

View File

@@ -358,6 +358,8 @@ public class DialogUitl {
private boolean mCancelable;
private boolean mBackgroundDimEnabled;//显示区域以外是否使用黑色半透明背景
private boolean mInput;//是否是输入框的
private boolean isShowCancelButton=true;
private boolean isSHowConfirmButton=true;
private String mHint;
private int mInputType;
private int mLength;
@@ -454,6 +456,16 @@ public class DialogUitl {
return this;
}
public Builder setShowCancelButton(boolean showCancelButton) {
isShowCancelButton = showCancelButton;
return this;
}
public Builder setShowConfirmButton(boolean showConfirmButton) {
isSHowConfirmButton = showConfirmButton;
return this;
}
public Dialog build() {
final Dialog dialog = new Dialog(mContext, mBackgroundDimEnabled ? R.style.dialog : R.style.dialog2);
if (mView != 0) {
@@ -493,10 +505,22 @@ public class DialogUitl {
TextView btnConfirm = (TextView) dialog.findViewById(R.id.btn_confirm);
if (!TextUtils.isEmpty(mConfirmString)) {
btnConfirm.setText(mConfirmString);
btnConfirm.setVisibility(View.VISIBLE);
}else if(mConfirmString==null){
// btnConfirm.setVisibility(View.GONE);
}
TextView btnCancel = (TextView) dialog.findViewById(R.id.btn_cancel);
if (!TextUtils.isEmpty(mCancelString)) {
btnCancel.setText(mCancelString);
btnCancel.setVisibility(View.VISIBLE);
}else if(mCancelString==null){
//btnCancel.setVisibility(View.GONE);
}
if(!isSHowConfirmButton){
btnConfirm.setVisibility(View.GONE);
}
if(!isShowCancelButton){
btnCancel.setVisibility(View.GONE);
}
View.OnClickListener listener = new View.OnClickListener() {
@Override

View File

@@ -0,0 +1,31 @@
package com.yunbao.common.utils;
import android.content.Context;
public class MobclickAgent {
public static void onEvent(Context content, String key, Object value){
}
public static void setCatchUncaughtExceptions(boolean b) {
}
public static void setPageCollectionMode(int type){
}
public static void onPageStart(String mTag) {
}
public static void onPageEnd(String mTag) {
}
public static void onProfileSignOff() {
}
public static void onProfileSignIn(String s) {
}
}

View File

@@ -6,10 +6,12 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import androidx.fragment.app.FragmentActivity;
import androidx.core.content.FileProvider;
import com.yalantis.ucrop.UCrop;
import com.yalantis.ucrop.util.FileUtils;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.R;
import com.yunbao.common.interfaces.ActivityResultCallback;
@@ -36,6 +38,11 @@ public class ProcessImageUtil extends ProcessResultUtil {
private File mCorpResult;//裁剪后得到的图片
private ImageResultCallback mResultCallback;
private boolean mNeedCrop;//是否需要裁剪
private boolean mNeedGif;//允许gif图
public void setNeedGif(boolean mNeedGif) {
this.mNeedGif = mNeedGif;
}
public ProcessImageUtil(FragmentActivity activity) {
super(activity);
@@ -93,17 +100,41 @@ public class ProcessImageUtil extends ProcessResultUtil {
@Override
public void onFailure() {
ToastUtil.show(mContext.getString(R.string.img_camera_cancel));
if (mResultCallback != null) {
mResultCallback.onFailure();
}
}
};
mAlumbResultCallback = new ActivityResultCallback() {
@Override
public void onSuccess(Intent intent) {
if (!mNeedCrop) {
if (mResultCallback != null) {
if (intent.getData() == null) {
if (mResultCallback != null) {
mResultCallback.onFailure();
}
return;
}
String path = FileUtils.getPath(mContext, intent.getData());
File file = new File(path);
if (file.exists()) {
mResultCallback.onSuccess(file);
} else {
mResultCallback.onFailure();
}
}
return;
}
crop(intent.getData());
}
@Override
public void onFailure() {
ToastUtil.show(mContext.getString(R.string.img_alumb_cancel));
if (mResultCallback != null) {
mResultCallback.onFailure();
}
}
};
mCropResultCallback = new ActivityResultCallback() {
@@ -117,6 +148,9 @@ public class ProcessImageUtil extends ProcessResultUtil {
@Override
public void onFailure() {
ToastUtil.show(mContext.getString(R.string.img_crop_cancel));
if (mResultCallback != null) {
mResultCallback.onFailure();
}
}
};
}
@@ -143,6 +177,11 @@ public class ProcessImageUtil extends ProcessResultUtil {
requestPermissions(mAlumbPermissions, mAlumbPermissionCallback);
}
public void getImageByAlumb(boolean needCrop) {
this.mNeedCrop = needCrop;
requestPermissions(mAlumbPermissions, mAlumbPermissionCallback);
}
/**
* 开启摄像头,执行照相
@@ -163,7 +202,9 @@ public class ProcessImageUtil extends ProcessResultUtil {
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, mCameraResultCallback);
}catch (Exception e){e.printStackTrace();}
} catch (Exception e) {
e.printStackTrace();
}
}
private File getNewFile() {
@@ -180,9 +221,14 @@ public class ProcessImageUtil extends ProcessResultUtil {
* 打开相册,选择文件
*/
private void chooseFile() {
String[] mimeTypes = {"image/png", "image/jpg", "image/jpeg"};
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
intent.setType("*/*");
if (mNeedGif) {
mimeTypes = new String[]{"image/png", "image/jpg", "image/jpeg", "image/gif"};
}
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
if (Build.VERSION.SDK_INT < 19) {
intent.setAction(Intent.ACTION_GET_CONTENT);
} else {

View File

@@ -50,6 +50,9 @@ public class RouteUtil {
public static final String PATH_BattlePassActivity="/main/BattlePassActivity";
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_ACTIVITY = "/main/FeedbackActivity";
public static final String PATH_FEEDBACK_EDIT_ACTIVITY = "/main/FeedbackEditActivity";
public static void forwardCommunityActivity() {
@@ -355,4 +358,8 @@ public class RouteUtil {
ARouter.getInstance().build(PATH_BattlePassActivity)
.navigation();
}
public static void forwardActivity(String path){
ARouter.getInstance().build(path)
.navigation();
}
}

View File

@@ -6,6 +6,7 @@ import java.io.File;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.UUID;
import java.util.regex.Pattern;
/**
@@ -160,4 +161,15 @@ public class StringUtil {
}
return false;
}
/**
* 获取随机文件名
*/
public static String generateFileName() {
return contact("android_",
CommonAppConfig.getInstance().getUid(),
"_",
DateFormatUtil.getVideoCurTimeString(),
UUID.randomUUID().toString());
}
}

View File

@@ -9,7 +9,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.R;
import com.yunbao.common.adapter.FunGamesAdapter;

View File

@@ -9,7 +9,6 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.InteractionGamesAdapter;
import com.yunbao.common.adapter.LiveNewRoleInteractionGamesAdapter;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;

Some files were not shown because too many files have changed in this diff Show More