diff --git a/app/build.gradle b/app/build.gradle index 5864754..a0890c6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,11 +25,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true } - sourceSets { - main { - jniLibs.srcDir 'libs' - } - } buildTypes { release { minifyEnabled false diff --git a/app/src/main/java/com/tengshisoft/citygovernance/BaseMyApplication.java b/app/src/main/java/com/tengshisoft/citygovernance/BaseMyApplication.java index 386c4a5..c4d7f3d 100644 --- a/app/src/main/java/com/tengshisoft/citygovernance/BaseMyApplication.java +++ b/app/src/main/java/com/tengshisoft/citygovernance/BaseMyApplication.java @@ -1,30 +1,39 @@ package com.tengshisoft.citygovernance; -import android.view.Gravity; +import android.os.Build; import com.alibaba.android.arouter.launcher.ARouter; import com.baidu.location.BDLocation; import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; -import com.github.promeg.pinyinhelper.Pinyin; -import com.hjq.toast.ToastUtils; -import com.scwang.smart.refresh.footer.ClassicsFooter; -import com.scwang.smart.refresh.layout.SmartRefreshLayout; +import com.huawei.ecterminalsdk.base.TsdkLocalAddress; +import com.huawei.ecterminalsdk.models.TsdkManager; import com.tencent.bugly.crashreport.CrashReport; +import com.tengshisoft.chatmodule.beans.ServiceSettingBeanV2; +import com.tengshisoft.chatmodule.hwclud.manager.CallMgrV2; +import com.tengshisoft.chatmodule.hwclud.manager.LoginMangerV2; +import com.tengshisoft.chatmodule.hwclud.manager.MeetingMgrV2; +import com.tengshisoft.chatmodule.hwclud.notification.CallFunc; +import com.tengshisoft.chatmodule.hwclud.notification.ConfFunc; +import com.tengshisoft.chatmodule.hwclud.receiver.LoginReceiver; +import com.tengshisoft.chatmodule.hwclud.serivce.ServiceManger; +import com.tengshisoft.chatmodule.hwclud.utils.Constant; +import com.tengshisoft.chatmodule.hwclud.utils.DeviceManager; +import com.tengshisoft.chatmodule.hwclud.utils.GMUtil; +import com.tengshisoft.chatmodule.hwclud.utils.LogUtil; +import com.tengshisoft.chatmodule.hwclud.utils.UIUtil; import com.tenlionsoft.baselib.app.BaseAppContext; -import com.tenlionsoft.baselib.core.db.AppDatabase; -import com.tenlionsoft.baselib.core.widget.refresh.BezierCircleHeader; +import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; +import com.tenlionsoft.baselib.utils.AppUtils; +import com.tenlionsoft.baselib.utils.EncryptedSPTool; +import com.tenlionsoft.baselib.utils.FileUtils; +import com.tenlionsoft.baselib.utils.LogUtils; -import androidx.multidex.MultiDex; -import androidx.multidex.MultiDexApplication; +import java.io.IOException; + +import androidx.annotation.RequiresApi; import cn.leo.magic.screen.MagicScreenAdapter; -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.core.ObservableEmitter; -import io.reactivex.rxjava3.core.ObservableOnSubscribe; -import io.reactivex.rxjava3.functions.Function; -import io.reactivex.rxjava3.schedulers.Schedulers; /** * 作者: adam @@ -41,8 +50,75 @@ public class BaseMyApplication extends BaseAppContext { super.onCreate(); MagicScreenAdapter.initDesignWidthInDp(1024, true); ARouter.init(BaseMyApplication.this); - initBaiduMap();//初始化百度地图 CrashReport.initCrashReport(getApplicationContext()); + initBaiduMap();//初始化百度地图 + if (AppUtils.isSupportCall()) { + //判断是否可以视频通话 + initCertificate(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + initHWClound();//初始化华为融合通信 + } + } + } + + // 初始化国密证书 + private void initCertificate() { + + try { + String[] list_inDir = getAssets().list(inDir); + assert list_inDir != null; + for (String fileName : + list_inDir) { + FileUtils.copyAssetToFiles(inDir, fileName); + } + + String[] list_smDir = getAssets().list(smDir); + assert list_smDir != null; + for (String fileName : + list_smDir) { + FileUtils.copyAssetToFiles(smDir, fileName); + } + + String[] list_root = getAssets().list(root); + assert list_root != null; + for (String fileName : + list_root) { + FileUtils.copyAssetToFiles(root, fileName); + } + + String[] list_smRoot = getAssets().list(smRoot); + assert list_smRoot != null; + for (String fileName : + list_smRoot) { + FileUtils.copyAssetToFiles(smRoot, fileName); + } + } catch (IOException e) { + LogUtils.e("初始化国密证书失败", ""); + e.printStackTrace(); + } + LogUtils.e("初始化国密证书成功", ""); + } + + /** + * 初始化华为融合通信 + */ + @RequiresApi(api = Build.VERSION_CODES.M) + private void initHWClound() { + String appPath = this.getApplicationInfo().dataDir + "/lib"; + ServiceManger.getServiceMgr().startService(this, appPath, 0); + LoginMangerV2.getInstance().regLoginEventNotification(LoginReceiver.getInstance());//注册登录时的各种广播 + CallMgrV2.getInstance().regCallServiceNotification(CallFunc.getInstance());// + MeetingMgrV2.getInstance().regConfServiceNotification(ConfFunc.getInstance()); + int port = BaseUrlApi.HW_CLOUD_PORT; + int transport = 1; + String ipAddr = BaseUrlApi.HW_CLOUD_URL; + ServiceManger.getServiceMgr().networkParam(port + "", ipAddr, transport); + String localIpAddress = DeviceManager.getLocalIpAddress(false); + TsdkLocalAddress localAddress = new TsdkLocalAddress(localIpAddress); +// //设置本地ip前必须先设置sip + TsdkManager.getInstance().setConfigParam(localAddress); + ServiceManger.getServiceMgr().securityParam(ServiceSettingBeanV2.getInstance().getRtpMode(), ServiceSettingBeanV2.getInstance().getBfpTransportMode()); + GMUtil.setSecretCertificate(this, ServiceSettingBeanV2.getInstance().getIsOpenGm()); } /** diff --git a/baselib/build.gradle b/baselib/build.gradle index c04dd4f..a11cb72 100755 --- a/baselib/build.gradle +++ b/baselib/build.gradle @@ -28,10 +28,15 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + } + } } dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') + api fileTree(include: ['*.jar'], dir: 'libs') //noinspection GradleCompatible implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' @@ -45,8 +50,6 @@ dependencies { //SmartRefreshLayout api "com.scwang.smart:refresh-layout-kernel:$rootProject.ext.gSmartRefreshLayoutVersion" api "com.scwang.smart:refresh-footer-classics:$rootProject.ext.gSmartRefreshLayoutVersion" - //经典加载 - //okhttp3 api "com.squareup.okhttp3:okhttp:$rootProject.ext.gOkHttp3Version" //Gson @@ -75,9 +78,9 @@ dependencies { api 'androidx.recyclerview:recyclerview:1.2.1' //选择器 api "com.nightonke:boommenu:$rootProject.ext.gBoomMenu" - // 基础依赖包,必须要依赖 + // 状态栏 基础依赖包,必须要依赖 api 'com.gyf.immersionbar:immersionbar:3.0.0' - // fragment快速实现(可选) + // 状态栏 fragment快速实现(可选) api 'com.gyf.immersionbar:immersionbar-components:3.0.0' //room api "androidx.room:room-runtime:$rootProject.room_version" @@ -86,7 +89,7 @@ dependencies { api "androidx.room:room-guava:$rootProject.room_version" //base popup window api "io.github.razerdp:BasePopup:$rootProject.popup_version" - // 选择器 + //选择器 api 'io.github.lucksiege:pictureselector:v2.7.3-rc08' api 'me.rosuh:AndroidFilePicker:0.7.0-x' @@ -102,5 +105,9 @@ dependencies { api 'com.google.android:flexbox:1.0.0'//flexbox 布局 //通知提示弹出库 api 'com.tapadoo.android:alerter:6.2.1' + //图表 + api "com.github.PhilJay:MPAndroidChart:${rootProject.ext.mpAndroidChart}" + //SharedPreferences加密 + api 'com.pddstudio:encrypted-preferences:1.3.0' } diff --git a/chatmodule/libs/HME-Audio.jar b/baselib/libs/HME-Audio.jar similarity index 100% rename from chatmodule/libs/HME-Audio.jar rename to baselib/libs/HME-Audio.jar diff --git a/chatmodule/libs/HME-Video.jar b/baselib/libs/HME-Video.jar similarity index 100% rename from chatmodule/libs/HME-Video.jar rename to baselib/libs/HME-Video.jar diff --git a/chatmodule/libs/TsdkService.jar b/baselib/libs/TsdkService.jar similarity index 100% rename from chatmodule/libs/TsdkService.jar rename to baselib/libs/TsdkService.jar diff --git a/chatmodule/libs/TsdkServiceBase.jar b/baselib/libs/TsdkServiceBase.jar similarity index 100% rename from chatmodule/libs/TsdkServiceBase.jar rename to baselib/libs/TsdkServiceBase.jar diff --git a/chatmodule/libs/TupCall.jar b/baselib/libs/TupCall.jar similarity index 100% rename from chatmodule/libs/TupCall.jar rename to baselib/libs/TupCall.jar diff --git a/chatmodule/libs/TupCmptService.jar b/baselib/libs/TupCmptService.jar similarity index 100% rename from chatmodule/libs/TupCmptService.jar rename to baselib/libs/TupCmptService.jar diff --git a/chatmodule/libs/TupConfCtrl.jar b/baselib/libs/TupConfCtrl.jar similarity index 100% rename from chatmodule/libs/TupConfCtrl.jar rename to baselib/libs/TupConfCtrl.jar diff --git a/chatmodule/libs/TupDns.jar b/baselib/libs/TupDns.jar similarity index 100% rename from chatmodule/libs/TupDns.jar rename to baselib/libs/TupDns.jar diff --git a/chatmodule/libs/TupHttpTrans.jar b/baselib/libs/TupHttpTrans.jar similarity index 100% rename from chatmodule/libs/TupHttpTrans.jar rename to baselib/libs/TupHttpTrans.jar diff --git a/chatmodule/libs/TupSocket.jar b/baselib/libs/TupSocket.jar similarity index 100% rename from chatmodule/libs/TupSocket.jar rename to baselib/libs/TupSocket.jar diff --git a/chatmodule/libs/arm64-v8a/libHME-Audio.so b/baselib/libs/arm64-v8a/libHME-Audio.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libHME-Audio.so rename to baselib/libs/arm64-v8a/libHME-Audio.so diff --git a/chatmodule/libs/arm64-v8a/libHME-Video.so b/baselib/libs/arm64-v8a/libHME-Video.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libHME-Video.so rename to baselib/libs/arm64-v8a/libHME-Video.so diff --git a/chatmodule/libs/arm64-v8a/libcrypto_ossl.so b/baselib/libs/arm64-v8a/libcrypto_ossl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libcrypto_ossl.so rename to baselib/libs/arm64-v8a/libcrypto_ossl.so diff --git a/chatmodule/libs/arm64-v8a/libgmcrypto.so b/baselib/libs/arm64-v8a/libgmcrypto.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libgmcrypto.so rename to baselib/libs/arm64-v8a/libgmcrypto.so diff --git a/chatmodule/libs/arm64-v8a/libgmssl.so b/baselib/libs/arm64-v8a/libgmssl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libgmssl.so rename to baselib/libs/arm64-v8a/libgmssl.so diff --git a/chatmodule/libs/arm64-v8a/libipsi_crypto.so b/baselib/libs/arm64-v8a/libipsi_crypto.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libipsi_crypto.so rename to baselib/libs/arm64-v8a/libipsi_crypto.so diff --git a/chatmodule/libs/arm64-v8a/libipsi_osal.so b/baselib/libs/arm64-v8a/libipsi_osal.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libipsi_osal.so rename to baselib/libs/arm64-v8a/libipsi_osal.so diff --git a/chatmodule/libs/arm64-v8a/libipsi_pse.so b/baselib/libs/arm64-v8a/libipsi_pse.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libipsi_pse.so rename to baselib/libs/arm64-v8a/libipsi_pse.so diff --git a/chatmodule/libs/arm64-v8a/librtp.so b/baselib/libs/arm64-v8a/librtp.so similarity index 100% rename from chatmodule/libs/arm64-v8a/librtp.so rename to baselib/libs/arm64-v8a/librtp.so diff --git a/chatmodule/libs/arm64-v8a/libsecurec.so b/baselib/libs/arm64-v8a/libsecurec.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libsecurec.so rename to baselib/libs/arm64-v8a/libsecurec.so diff --git a/chatmodule/libs/arm64-v8a/libssl_ossl.so b/baselib/libs/arm64-v8a/libssl_ossl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libssl_ossl.so rename to baselib/libs/arm64-v8a/libssl_ossl.so diff --git a/chatmodule/libs/arm64-v8a/libsys.so b/baselib/libs/arm64-v8a/libsys.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libsys.so rename to baselib/libs/arm64-v8a/libsys.so diff --git a/chatmodule/libs/arm64-v8a/libtensorflowlite_c.so b/baselib/libs/arm64-v8a/libtensorflowlite_c.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtensorflowlite_c.so rename to baselib/libs/arm64-v8a/libtensorflowlite_c.so diff --git a/chatmodule/libs/arm64-v8a/libtsdk_android.so b/baselib/libs/arm64-v8a/libtsdk_android.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtsdk_android.so rename to baselib/libs/arm64-v8a/libtsdk_android.so diff --git a/chatmodule/libs/arm64-v8a/libtsdk_service.so b/baselib/libs/arm64-v8a/libtsdk_service.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtsdk_service.so rename to baselib/libs/arm64-v8a/libtsdk_service.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_audio.so b/baselib/libs/arm64-v8a/libtup_call_audio.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_audio.so rename to baselib/libs/arm64-v8a/libtup_call_audio.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_bfcp.so b/baselib/libs/arm64-v8a/libtup_call_bfcp.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_bfcp.so rename to baselib/libs/arm64-v8a/libtup_call_bfcp.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_mediaservice.so b/baselib/libs/arm64-v8a/libtup_call_mediaservice.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_mediaservice.so rename to baselib/libs/arm64-v8a/libtup_call_mediaservice.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_service.so b/baselib/libs/arm64-v8a/libtup_call_service.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_service.so rename to baselib/libs/arm64-v8a/libtup_call_service.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_sip.so b/baselib/libs/arm64-v8a/libtup_call_sip.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_sip.so rename to baselib/libs/arm64-v8a/libtup_call_sip.so diff --git a/chatmodule/libs/arm64-v8a/libtup_call_video.so b/baselib/libs/arm64-v8a/libtup_call_video.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_call_video.so rename to baselib/libs/arm64-v8a/libtup_call_video.so diff --git a/chatmodule/libs/arm64-v8a/libtup_cmpt_service.so b/baselib/libs/arm64-v8a/libtup_cmpt_service.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_cmpt_service.so rename to baselib/libs/arm64-v8a/libtup_cmpt_service.so diff --git a/chatmodule/libs/arm64-v8a/libtup_commonlib.so b/baselib/libs/arm64-v8a/libtup_commonlib.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_commonlib.so rename to baselib/libs/arm64-v8a/libtup_commonlib.so diff --git a/chatmodule/libs/arm64-v8a/libtup_confctrl.so b/baselib/libs/arm64-v8a/libtup_confctrl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_confctrl.so rename to baselib/libs/arm64-v8a/libtup_confctrl.so diff --git a/chatmodule/libs/arm64-v8a/libtup_dns.so b/baselib/libs/arm64-v8a/libtup_dns.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_dns.so rename to baselib/libs/arm64-v8a/libtup_dns.so diff --git a/chatmodule/libs/arm64-v8a/libtup_https_clt.so b/baselib/libs/arm64-v8a/libtup_https_clt.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_https_clt.so rename to baselib/libs/arm64-v8a/libtup_https_clt.so diff --git a/chatmodule/libs/arm64-v8a/libtup_httptrans.so b/baselib/libs/arm64-v8a/libtup_httptrans.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_httptrans.so rename to baselib/libs/arm64-v8a/libtup_httptrans.so diff --git a/chatmodule/libs/arm64-v8a/libtup_ipdetect.so b/baselib/libs/arm64-v8a/libtup_ipdetect.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_ipdetect.so rename to baselib/libs/arm64-v8a/libtup_ipdetect.so diff --git a/chatmodule/libs/arm64-v8a/libtup_ldapfrontstage.so b/baselib/libs/arm64-v8a/libtup_ldapfrontstage.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_ldapfrontstage.so rename to baselib/libs/arm64-v8a/libtup_ldapfrontstage.so diff --git a/chatmodule/libs/arm64-v8a/libtup_login.so b/baselib/libs/arm64-v8a/libtup_login.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_login.so rename to baselib/libs/arm64-v8a/libtup_login.so diff --git a/chatmodule/libs/arm64-v8a/libtup_logone.so b/baselib/libs/arm64-v8a/libtup_logone.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_logone.so rename to baselib/libs/arm64-v8a/libtup_logone.so diff --git a/chatmodule/libs/arm64-v8a/libtup_minidopra.so b/baselib/libs/arm64-v8a/libtup_minidopra.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_minidopra.so rename to baselib/libs/arm64-v8a/libtup_minidopra.so diff --git a/chatmodule/libs/arm64-v8a/libtup_msg.so b/baselib/libs/arm64-v8a/libtup_msg.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_msg.so rename to baselib/libs/arm64-v8a/libtup_msg.so diff --git a/chatmodule/libs/arm64-v8a/libtup_os_adapter.so b/baselib/libs/arm64-v8a/libtup_os_adapter.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_os_adapter.so rename to baselib/libs/arm64-v8a/libtup_os_adapter.so diff --git a/chatmodule/libs/arm64-v8a/libtup_publiclib.so b/baselib/libs/arm64-v8a/libtup_publiclib.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_publiclib.so rename to baselib/libs/arm64-v8a/libtup_publiclib.so diff --git a/chatmodule/libs/arm64-v8a/libtup_socket.so b/baselib/libs/arm64-v8a/libtup_socket.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_socket.so rename to baselib/libs/arm64-v8a/libtup_socket.so diff --git a/chatmodule/libs/arm64-v8a/libtup_sslex.so b/baselib/libs/arm64-v8a/libtup_sslex.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_sslex.so rename to baselib/libs/arm64-v8a/libtup_sslex.so diff --git a/chatmodule/libs/arm64-v8a/libtup_sslex_gm.so b/baselib/libs/arm64-v8a/libtup_sslex_gm.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_sslex_gm.so rename to baselib/libs/arm64-v8a/libtup_sslex_gm.so diff --git a/chatmodule/libs/arm64-v8a/libtup_vcomgmssl.so b/baselib/libs/arm64-v8a/libtup_vcomgmssl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_vcomgmssl.so rename to baselib/libs/arm64-v8a/libtup_vcomgmssl.so diff --git a/chatmodule/libs/arm64-v8a/libtup_vcomopenssl.so b/baselib/libs/arm64-v8a/libtup_vcomopenssl.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_vcomopenssl.so rename to baselib/libs/arm64-v8a/libtup_vcomopenssl.so diff --git a/chatmodule/libs/arm64-v8a/libtup_xml.so b/baselib/libs/arm64-v8a/libtup_xml.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_xml.so rename to baselib/libs/arm64-v8a/libtup_xml.so diff --git a/chatmodule/libs/arm64-v8a/libtup_zip.so b/baselib/libs/arm64-v8a/libtup_zip.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libtup_zip.so rename to baselib/libs/arm64-v8a/libtup_zip.so diff --git a/chatmodule/libs/arm64-v8a/libwebsockets.so b/baselib/libs/arm64-v8a/libwebsockets.so similarity index 100% rename from chatmodule/libs/arm64-v8a/libwebsockets.so rename to baselib/libs/arm64-v8a/libwebsockets.so diff --git a/baselib/src/main/assets/CameraBlack.BMP b/baselib/src/main/assets/CameraBlack.BMP new file mode 100644 index 0000000..ddbd1e0 Binary files /dev/null and b/baselib/src/main/assets/CameraBlack.BMP differ diff --git a/baselib/src/main/assets/CameraBlack2.BMP b/baselib/src/main/assets/CameraBlack2.BMP new file mode 100644 index 0000000..aea502c Binary files /dev/null and b/baselib/src/main/assets/CameraBlack2.BMP differ diff --git a/baselib/src/main/assets/check.bmp b/baselib/src/main/assets/check.bmp new file mode 100644 index 0000000..d8d7f95 Binary files /dev/null and b/baselib/src/main/assets/check.bmp differ diff --git a/baselib/src/main/assets/dpointer.bmp b/baselib/src/main/assets/dpointer.bmp new file mode 100644 index 0000000..365b475 Binary files /dev/null and b/baselib/src/main/assets/dpointer.bmp differ diff --git a/baselib/src/main/assets/inCertificate/equip.pem b/baselib/src/main/assets/inCertificate/equip.pem new file mode 100644 index 0000000..6a6fe96 --- /dev/null +++ b/baselib/src/main/assets/inCertificate/equip.pem @@ -0,0 +1,79 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 0 (0x0) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=CN, ST=shaanxi, L=xian, O=thundersoft_it, OU=IT, CN=thundersoft/emailAddress=thundersoft.com + Validity + Not Before: Oct 23 09:33:12 2020 GMT + Not After : Oct 21 09:33:12 2030 GMT + Subject: C=CN, ST=shaanxi, O=thundersoft_it, OU=IT, CN=thundersoft_STBU5/emailAddress=thundersoft.com + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ba:f3:fa:d4:10:bb:77:08:88:5a:83:b8:25:65: + 2e:fd:2b:98:42:4b:46:39:6e:76:fe:a2:a4:72:90: + 5e:f3:28:a2:72:0e:4f:80:92:85:e6:3e:4d:ed:4c: + 63:f7:45:48:97:f8:08:e5:44:d1:47:f9:35:a3:14: + b7:1c:93:b2:dd:d5:37:e4:fb:93:4c:0f:ab:7d:a5: + 9e:fd:e2:c9:b5:c9:4b:5b:39:e8:2e:01:e4:eb:68: + fa:7e:ce:fa:a0:9c:54:08:08:00:0d:cd:26:19:e9: + 6c:e1:24:f4:50:70:a9:2d:1b:3f:0b:ea:69:36:59: + b7:c6:25:d4:b0:c3:0d:4b:df:bc:39:49:cf:d6:75: + 3b:b6:96:b2:f9:7f:42:1a:a3:90:03:cd:be:06:07: + d0:c8:f0:13:19:2e:bd:b4:03:bd:89:89:49:28:cc: + 36:1e:aa:bf:9e:73:c9:8f:8f:e9:79:07:98:64:cd: + 16:ac:77:4a:77:4d:01:b4:81:87:ab:73:d4:4c:a2: + 04:ae:de:d5:2d:40:cf:83:dd:2b:6b:18:2e:d1:2e: + 30:c9:4a:0c:08:8f:48:7e:52:0c:20:53:4c:95:42: + f2:05:d6:f7:63:38:dd:15:9e:6b:9f:3e:fd:3a:ca: + 89:23:8a:08:21:96:8d:a0:d5:c0:a2:8e:59:fd:f3: + bc:53 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Key Usage: + Digital Signature, Non Repudiation, Key Encipherment + X509v3 Subject Alternative Name: + DNS:thundersoft.com, DNS:*.thundersoft.com + Signature Algorithm: sha256WithRSAEncryption + 50:77:bc:34:1d:4d:cd:80:de:69:c4:db:23:af:e9:8f:ce:fc: + ee:cf:5a:94:a3:51:23:56:c1:4a:eb:d6:03:0c:df:dc:17:d7: + 08:96:2f:c3:a6:31:e8:2e:e0:77:14:7d:b8:3d:cd:a0:e1:e0: + ee:f7:46:25:8a:9d:bd:50:0c:c7:eb:6d:87:dc:c4:99:08:93: + 9b:23:84:21:61:8d:b5:2c:ea:e7:5e:c4:b7:91:4b:17:37:d2: + 62:cb:8c:08:79:09:11:5e:6d:1b:a2:a8:46:06:73:87:eb:8c: + 02:e7:e9:2d:a6:10:80:0a:33:c1:9b:8a:63:21:8d:54:55:1f: + 91:9c:c8:51:41:85:69:01:29:be:b6:d5:84:fb:61:2a:0a:27: + 2e:67:4b:cd:58:49:bb:1d:8f:2b:dc:f5:19:65:9b:54:ee:17: + e9:54:c4:07:69:eb:42:80:aa:3d:29:9e:5b:e6:ec:0a:b2:e5: + c3:b4:1a:2d:c4:cc:eb:88:ec:1c:6e:32:fe:89:0b:aa:68:af: + 74:26:2b:2a:9f:fa:3c:42:1a:30:13:dc:e1:bc:ef:a8:80:21: + aa:39:6d:d1:66:55:db:15:4d:7d:f9:9f:08:85:2b:9d:1e:25: + 92:84:eb:99:80:a3:74:12:d5:6b:f2:a3:fa:9e:8d:e0:56:3f: + 1c:85:c1:3e +-----BEGIN CERTIFICATE----- +MIID0TCCArmgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCQ04x +EDAOBgNVBAgMB3NoYWFueGkxDTALBgNVBAcMBHhpYW4xFzAVBgNVBAoMDnRodW5k +ZXJzb2Z0X2l0MQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLdGh1bmRlcnNvZnQxHjAc +BgkqhkiG9w0BCQEWD3RodW5kZXJzb2Z0LmNvbTAeFw0yMDEwMjMwOTMzMTJaFw0z +MDEwMjEwOTMzMTJaMIGBMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHc2hhYW54aTEX +MBUGA1UECgwOdGh1bmRlcnNvZnRfaXQxCzAJBgNVBAsMAklUMRowGAYDVQQDDBF0 +aHVuZGVyc29mdF9TVEJVNTEeMBwGCSqGSIb3DQEJARYPdGh1bmRlcnNvZnQuY29t +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuvP61BC7dwiIWoO4JWUu +/SuYQktGOW52/qKkcpBe8yiicg5PgJKF5j5N7Uxj90VIl/gI5UTRR/k1oxS3HJOy +3dU35PuTTA+rfaWe/eLJtclLWznoLgHk62j6fs76oJxUCAgADc0mGels4ST0UHCp +LRs/C+ppNlm3xiXUsMMNS9+8OUnP1nU7tpay+X9CGqOQA82+BgfQyPATGS69tAO9 +iYlJKMw2Hqq/nnPJj4/peQeYZM0WrHdKd00BtIGHq3PUTKIErt7VLUDPg90raxgu +0S4wyUoMCI9IflIMIFNMlULyBdb3YzjdFZ5rnz79OsqJI4oIIZaNoNXAoo5Z/fO8 +UwIDAQABo0kwRzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAtBgNVHREEJjAkgg90 +aHVuZGVyc29mdC5jb22CESoudGh1bmRlcnNvZnQuY29tMA0GCSqGSIb3DQEBCwUA +A4IBAQBQd7w0HU3NgN5pxNsjr+mPzvzuz1qUo1EjVsFK69YDDN/cF9cIli/DpjHo +LuB3FH24Pc2g4eDu90Ylip29UAzH622H3MSZCJObI4QhYY21LOrnXsS3kUsXN9Ji +y4wIeQkRXm0boqhGBnOH64wC5+ktphCACjPBm4pjIY1UVR+RnMhRQYVpASm+ttWE ++2EqCicuZ0vNWEm7HY8r3PUZZZtU7hfpVMQHaetCgKo9KZ5b5uwKsuXDtBotxMzr +iOwcbjL+iQuqaK90Jisqn/o8QhowE9zhvO+ogCGqOW3RZlXbFU19+Z8IhSudHiWS +hOuZgKN0EtVr8qP6no3gVj8chcE+ +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/inCertificate/equip_key.pem b/baselib/src/main/assets/inCertificate/equip_key.pem new file mode 100644 index 0000000..f0b9906 --- /dev/null +++ b/baselib/src/main/assets/inCertificate/equip_key.pem @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,A541C0E434C654BAEA57E91F254B13E5 + +l1YwsYMBv7VbSZ8geQyaLs7PA+vdWlM8bJzF8l6MpEEp2040pY+6OJ+ayW9iZMT3 +exTcA6aG4OkfA4Mjyr8N0OF6QpZNaTJfGTPhm2r0ug50Q9JcjqnYrxwmxRADN5xF +F76qAGaXNNIM9wjVymhB42BZ49Knt9Gh4mJ9lImbhXVuOkprc+Hv7PCYYNuXEv0Q +kJ2kzYEmAOsNszZhNvUbjkRRguvnUust40/BH/diUBwVYEiZC9NsEKMI1jmFLivp +unJBuHkF5VUZLOrdWmcIOUvK3tKETRLLKxwZ1YYat1dJPqwFI2pQfCVqSeAAyswZ +0LgO7vj+4daGCfhhhYtaZNYF1jrTA93PH3/jDjR0tHff5urxWuBmD9aS1oa/TBxA +rx4Gi02jBzPeylg9mtkaRiyr1bNEOJvuv5SY1wtMvloF/ydmDH3Eo3OQ5IwEgqBC +A4OMYDB5PxburRNCeXbzv+R6YvH6Rm/J5/53jr7U+6tifSt+9DSz7ibZzqmnViTx +sYYYRRxDjMM3HqqkK9SLZWiDQjTPfZymMLWqEG2PeKHR+mU8CWOq/65KHWf5fefZ +2MJgywXZ/GHGgja5vTQ8Cv94XctrQtcexg9zksC0jaW7sNEzt4Xb/GH4MGa3Ow88 +I9zZiYXL0sJzBlMQ9Db8NHVTCOFpwzzrUWk7mlFJtZDAk+Ub3hF4W/11ou9NEWH2 +vN71ag567vZZLfyW4WLx5x6onvUei9a55ngRxByau0+YmiCBkHFMcqnEBHc/u1Yi +YUd72h7CYIEV47oUD0YxOeuiPCk1YcBs3TGCSLSE7b+0N3gv5FB9A7XmoB5ILdnY +fTaphsJM/0mLcXRWuH8JGam7k09YKIhsMR2M5kDcFvVtm0qO0VV+D6AxAZmkYzVx ++gJJ743m9rOf3jEySUoxxHbNNhWECC99UoBUq/giagFAtz73hLdYtnEL0Fa0zMbt +5z0QMu6oZmQi7oOQMOYi6z1+bDGEVtsdVNsdl5uPQD6IjsCWgk+QMVRQiC9S68pO +SfbP21uIHFSS9EoxhlB51UlUtFfN8iFF5ZV6vc9I39MjeYLTH4iSR3irVAfbxyck +8dEwk5fSXDkoraO5nDItMtRfbxqqBHr+EeveAkoUrWUtR5PzY9TFEM4+LuUegxEl +A8Gk0E3tTu4WigdJ9+xRey/dBaRqRahEovfszt6FFPCbLmNxl00SBhjw9fYxAk4C +JMhkcSHxwyfZQgFnvcUKjjZvs/j2iAwQ1WjnJpMqBaE10Ni/DaXMXMGuSLx1JVDV +QJxCRw63EcgA35M+i70gCTl2CAcFB2ZwX50Q6Gcn4g7hY29OQrlyWy0LhOJ5IO4B +NAjuIoq7KN/tTw9Jyupdw2MnT2UdEYd4ixyVX5/uGYS/UZgaNZJ4CYb6FvXvfTrW +oBcI5jD5mobPWy8lMAQJePjZ05tMAI0Qe8mHKoSkn403AI088WCRK2Tq5Z9NhvdG +HsFD9DJE7myFWWWiQlqjZb8v91hWhIbW1Gmrfoval+r4I0emOZZ3ggYQ+hG9N4NP +OQVJF5MyTnFj8DA0twDgRjZcsKaays2zxvVRaL9j/eczBWFGBLMZfbQM/WxfeYCc +-----END RSA PRIVATE KEY----- diff --git a/baselib/src/main/assets/lp.bmp b/baselib/src/main/assets/lp.bmp new file mode 100644 index 0000000..3e434a8 Binary files /dev/null and b/baselib/src/main/assets/lp.bmp differ diff --git a/baselib/src/main/assets/lpointer.bmp b/baselib/src/main/assets/lpointer.bmp new file mode 100644 index 0000000..5ba3af7 Binary files /dev/null and b/baselib/src/main/assets/lpointer.bmp differ diff --git a/baselib/src/main/assets/privacy.html b/baselib/src/main/assets/privacy.html new file mode 100644 index 0000000..157f600 --- /dev/null +++ b/baselib/src/main/assets/privacy.html @@ -0,0 +1,245 @@ + + + + + + + +
+

HW CloudLink是软通动力信息技术(集团)股份有限公司提供旨在满足客户随时随地通过视频沟通的需求,为用户提供实时、高效、稳定、安全可靠、高清视音频体验、便捷的数据共享的视讯软件(以下称“本应用”) +

+

请您知悉,本应用仅供企业等非个人组织使用,由您所在的组织或授权您使用本应用的其他组织(以下称“您的组织”)向您提供,有关您的信息的收集和使用等,均由您的组织或依照您的组织的授权或指示进行。您的组织将控制和管理您的会议服务用户账户,包括控制隐私相关设置以及尽到个人数据隐私通知的义务。对于本通知所述个人信息,我们仅是个人信息的处理者,您的组织是个人信息的控制者。 +

+

本“隐私声明”是为了帮助您了解使用HW CloudLink的过程中,可能涉及的个人信息,以及HW CloudLink如何保护您的个人信息。本通知仅涵盖您的组织在您使用本应用过程中如何收集和处理个人信息,不包括在使用本应用范围之外您的组织处理您的个人信息。除了本通知之外,您的组织可能还会适用其他政策或行为规范,约束与您使用本应用相关的行为。 +

+

请注意,是否在您的个人设备上安装或使用本应用完全出于您的自愿,通过下载、安装、使用HW CloudLink,表明您已经充分理解并同意本隐私通知的所有条款。否则,请停止任何下载、安装和使用行为。 +

+

声明包括以下内容: +

+

1. 本应用收集和处理哪些信息 +

+

2. 本应用如何使用这些信息 +

+

3. 本应用是否会披露您的个人信息 +

+

4. 本应用如何保护您的个人信息 +

+

5. 本应用如何留存您的个人信息 +

+

6. 如何查看和更新您的个人数据 +

+

7. 关于新版本软件的下载和安装 +

+

8. 本隐私声明的更新 +

+

9. 联系信息 +

+

1 本应用收集和处理哪些信息 +

+

1.1 您或您的组织提交的注册信息 +

+

您或您的组织通过本应用直接提供的信息,例如在您或您的组织添加或修改您的账户时提供的信息,可能包括:帐号,姓名,手机号码,邮箱地址,联系方式等;您与您的组织沟通时提供的信息等。 +

+

1.2 设备信息 +

+

HW CloudLink收集关于您登录的个人设备的信息,包括音视频设备信息、操作系统和版本、浏览器信息、IP地址、系统盘存储空间大小,计算机标识信息,以检测个人设备是否满足使用要求。 +

+

1.3 为使用特定服务而主动提交的数据 +

+

+ 1)        会议具有音视频能力,在使用此功能的过程中,本软件会使用设备本身或者外置的摄像头、麦克风以及扬声器。 +

+

+ 2)        会议具有共享功能,支持桌面共享,您在使用此功能过程中,基于您自己选择的情况下,会截屏获取对应的内容进行共享。 +

+

1.4 日志信息 +

+

当您使用相关服务时,HW CloudLink会收集日志信息,包括设备IP地址(匿名处理)、用户点击行为、事件信息(如错误、崩溃、重启、升级)、音视频质量数据(如音量大小、丢包率)等数据。音视频质量数据不涉及您的通话内容,仅用于分析音视频质量。 如果您不希望由HW CloudLink收集和分析此类信息,可以在“设置”中关闭相应功能。打开该开关能让运维人员更有效的定位问题、为您提供更好的服务。 +

+

1.5 口令信息 +

+

当您使用相关服务时,HW CloudLink会在本地收集口令信息,包括登录帐号、登录密码、会议密码等数据。 +

+

口令信息会被加密传输到服务器进行鉴权认证。用户授权后,该信息会被加密保存到本地数据库。 +

+

2 本应用如何使用这些信息 +

+

为了给您提供安全、流畅、有效的使用体验,HW CloudLink在实现以下目的所必要的范围内使用收集的信息和数据: +

+

1) 为您提供客户支持和故障排查服务 +

+

2) 通知您关于服务更新和故障的信息 +

+

3) 验证您的身份 +

+

4) 解决争议 +

+

5) 遵守所适用的法律、法规要求以及相应相关的法律程序 +

+

3 本应用是否会披露您的个人信息 +

+

3.1 为了使您的组织和您能够使用本应用,您的组织会将以上信息披露给本应用提供者,本应用提供者将仅在您的组织的授权和指示下处理您的个人信息。 +

+

3.2 您的组织还会将您的信息提供给其他协助提供全部或部分服务的第三方服务供应商,包括您通过本应用链接的第三方应用、服务或网站的提供方。 +

+

3.3 您的组织还可能在以下情况下披露您的个人信息: +

+

  (1)根据法律法规的有关规定,或者应行政或司法执法及监管机构的要求,向第三方或者行政机关、司法机构、执法机构或监管机构等有权机构披露。 +

+

  (2)如您出现违反所适用的法律、法规或相关政策的情况,根据需要向第三方披露; +

+

  (3)为了向您提供或因您使用所要求的产品或服务,根据需要向第三方披露; +

+

  (4)其他您的组织根据法律、法规或网站政策认为合适的披露,例如处于执行服务条款或为了组织人身、财产损失或非法行为的目的。 +

+

4 本应用如何保护您的个人信息 +

+

4.1 本应用提供者重视客户的数据安全,根据您的组织的指示和授权,本应用提供者将采用适当的物理、管理和技术保障措施来保护客户数据和支持数据(包括您的个人信息)不被未经授权访问、披露、使用、修改、损坏或丢失。例如,使用加密技术确保数据的机密性,使用保护机制防止数据遭到恶意攻击,部署访问控制机制,确保只有经您的组织的授权人员才可访问个人信息,以及举办安全和隐私保护培训课程,加强内部人员对于保护个人信息重要性的认识。本应用提供者会根据本声明的约定保护客户数据,但是请注意任何安全措施都无法做到无懈可击。 +

+

4.2 尽管有前述安全措施,但妥善保管您的账户及密码及其他信息的安全是您的责任和义务,请您妥善保管您的信息,否则因此导致的责任由您全部承担。 +

+

4.3 如果发现您帐号或密码被他人非法使用或有使用异常的情况的,应及时通知您的组织的管理员,并可要求您的组织的管理员采取措施,暂停您账户的登录和使用。 +

+

5 本应用如何留存您的个人信息 +

+

HW CloudLink只在必要的时间期限内保留您的信息,用以满足本声明所述的所有目的。我们用于确定存留期的标准包括: +

+

1) 完成该应用目的需要留存个人信息的时间,包括提供产品和服务,应对可能的用户查询或投诉、问题定位; +

+

2) 用户是否同意更长的留存期间; +

+

3) 法律、合同等是否有保留数据的特殊要求等。 +

+

6 如何查看和更新您的个人数据 +

+

您应确保提交的所有个人数据都准确无误。会议服务会尽力维护个人信息的准确和完整,并及时更新这些信息。当适用的法律要求的情况下,您可能有通过您的组织(1)访问本应用提供者持有的关于您的特定的个人信息;(2)要求本应用提供者更新或更正您的不准确的个人信息;(3)拒绝或限制本应用提供者使用您的个人信息;以及(4)要求本应用提供者删除您的个人信息等权利。如果您想行使相关的权利,您可以使用本应用中提供的方法来访问、更正或删除您上传到本应用的信息。如果您无法使用服务内提供的方法来执行这些操作,应直接联系您所在的组织,以访问或修改自己的信息。如果本应用提供者有合理依据认为这些请求存在欺骗性、无法实行或损害他人隐私权,本应用提供者则会拒绝处理请求。 +

+

7 关于新版本软件的下载和安装 +

+

软件更新版本时,系统提供下载更新提醒。用户授权后,软件将正常安装更新。移动端安装场景下, 软件在下载后用户选择安装,完成更新。 +

+

8 本隐私通知的更新 +

+

HW CloudLink可能会不定期修改、更新隐私声明,届时我们会提供显著的通知,尽可能通过可行的渠道和方法,将更新通知您。当您升级版本后,我们鼓励您访问隐私声明来了解最新的变化。 +

+

9 联系信息 +

+

如果您有任何关于本声明的疑问,请联系您的组织。 +

+ + \ No newline at end of file diff --git a/baselib/src/main/assets/privacy_en.html b/baselib/src/main/assets/privacy_en.html new file mode 100644 index 0000000..0890de4 --- /dev/null +++ b/baselib/src/main/assets/privacy_en.html @@ -0,0 +1,248 @@ + + + + + + + +
+

HW CloudLink (hereinafter referred to as the Application) is a video conferencing software provided by iSoftStone Information Technology (Group) CO.,Ltd to enable users to communicate anytime and anywhere. It provides users with efficient, stable, and reliable, HD audiovisual experience, and convenient data sharing. +

+

This Application is provided only for non-individual organizations, such as enterprises. It is provided by your organization or other organizations (hereinafter referred to as "your organization") that authorize you to use this Application. Information collection and use shall be performed by your organization or in accordance with your organization's authorization or instructions. Your organization will control and manage your meeting service user accounts, including controlling privacy settings and fulfilling the obligations of personal data privacy notification. We are only the processor of the personal information described in this Statement, and your organization is the controller of such personal information. +

+

This Privacy Statement (hereinafter referred to as the Statement) helps you understand personal information that may be involved in using HW CloudLink and how HW CloudLink protects your personal information. This Statement covers only how your organization collects and processes personal information while you are using this Application. It does not cover your organization's handling, if any, of your personal information outside the scope of this Application. In addition to this Statement, your organization may also apply other policies or behavioral norms regarding your use of this Application. +

+

Please note that it is entirely at your discretion whether to install and use this Application on your personal device. You show your thorough understanding of and consent to all the clauses in this Privacy Statement by downloading, installing, or using HW CloudLink. Otherwise, do not download, install, or use HW CloudLink. +

+

This Statement sets out: +

+

1. What Information Is Collected and Processed by this Application

+

2. How This Application Uses the Collected Information +

+

3. Whether This Application Discloses Your Personal Information +

+

4. How This Application Protects Your Personal Information +

+

5. How This Application Preserves Your Personal Information +

+

6. How to View and Update Your Personal Data +

+

7. How to Download and Install a New Version +

+

8. Updates to This Statement +

+

9. Contact Information +

+

1. What Information Is Collected and Processed by this Application +

+

1.1 Registration Information Submitted by You or Your Organization +

+

Information provided by you or your organization through this Application, for example, information provided when you or your organization adds or modifies your account. The information may include the account, name, mobile phone number, email address, and other contact information; and information provided when you communicate with your organization. +

+

1.2 Device Information +

+

This Application collects information about your personal device that you log in to, including audiovisual device information, operating system and version, browser information, IP address, system disk storage space, and computer identification information to check whether your personal device meets the usage requirements. +

+

1.3 Data That Is Proactively Submitted for Specific Services +

+

+ (1) This Application features audiovisual functions. When you use these functions, this Application uses your device or external cameras, microphones, and speakers. +

+

+ (2) This Application supports desktop sharing in meetings. During desktop sharing, this Application captures your screen to obtain the corresponding content for sharing based on your selection. +

+

1.4 Log Information +

+

When you use related services, this Application will collect log information, including the device IP address (after being anonymized), user click-through behaviors, event information (such as error, crash, restart, and upgrade), and audiovisual quality data (such as the volume and packet loss rate). Audiovisual quality data does not involve your call content and is used only for analyzing audiovisual quality. If you do not want this Application to collect and analyze such information, you can disable the corresponding function in Settings. Enabling this function helps O&M personnel locate problems more efficiently and serve you better. +

+

1.5 Password Information +

+

While you are using related services, this Application collects password information locally, including the login account, login password, and meeting password. +

+

Password information is encrypted and transmitted to the server for authentication. After user authentication, such information is encrypted and saved to the local database.

+

2 How This Application Uses the Collected Information +

+

To provide secure, smooth, and effective user experience, this Application uses the collected information or data as necessary to: +

+

(1) Provide you with customer support and troubleshooting services. +

+

(2) Notify you of service updates and faults. +

+

(3) Verify your identity. +

+

(4) Resolve disputes. +

+

(5) Comply with applicable laws, regulations, and corresponding legal procedures. +

+

3 Whether This Application Discloses Your Personal Information +

+

3.1 To enable your organization and you to use this Application, your organization will disclose the preceding information to the Application provider. The Application provider will process your personal information only under the authorization and instructions of your organization. +

+

3.2 Your organization will also provide your information to third-party service providers that assist in providing all or part of the services, including third-party applications, services, and websites that are connected to this Application. +

+

3.3 Your organization may disclose your personal information in the following circumstances: +

+

(1) In accordance with relevant laws and regulations or the requirements of government departments, your information may be disclosed to third parties; executive, judicial, and law enforcement authorities; and regulatory agencies. +

+

(2) If you violate relevant laws, regulations, or policies, your information shall be disclosed to third parties. +

+

(3) To provide you with products or services proactively or as you require, your information shall be disclosed to third parties. +

+

(4) Other disclosures are deemed appropriate by your organization based on laws, regulations, or website policies, for example, in terms of execution of service clauses or for the purpose of addressing personal injury, property loss, or illegal behavior. +

+

4 How This Application Protects Your Personal Information +

+

4.1 The Application provider attaches importance to customer data security. According to the instructions and authorization of your organization, the Application provider will use appropriate physical, management, and technical measures to prevent customer data and support data (including your personal information) from unauthorized access, disclosure, use, modification, damage, or loss. For example, the Application provider uses cryptographic technologies for data confidentiality, protection mechanisms to prevent malicious attacks, and access control mechanisms to permit only authorized access to your personal information. The Application provider also provides training on security and privacy protection for employees to strengthen their awareness of personal information protection. The Application provider will protect customer data in accordance with this Statement, but please note that any security measures cannot be impeccable.

+

4.2 Notwithstanding the aforesaid security measures, it is your responsibility and obligation to take good care of your account and password as well as your other information, and you shall assume all the legal liabilities arising from your failure to keep your information secure. +

+

4.3 If you find your account or password is used by others without your permission or abnormal use occurs, notify the administrator of your organization immediately and ask them to suspend any unauthorized use of your account or password. +

+

5 How This Application Preserves Your Personal Information +

+

This Application preserves your personal information only within a necessary time period to fulfill all purposes described in this Statement. The retention period is determined based on the following considerations: +

+

(1) The time required to retain personal information to provide products and services, handle possible user queries or complaints, and locate problems; +

+

(2) Whether the user agrees to a longer retention period;

+

(3) Whether there are specific requirements for data retention in laws and contracts. +

+

6 How to View and Update Your Personal Data +

+

You should ensure that all personal data submitted is accurate. This Application is dedicated to maintaining the accuracy and completeness of your personal information and keeping the information up-to-date. In accordance with relevant laws and regulations, you can exercise the following rights through your organization: (1) access your specific personal information held by the Application provider; (2) request the Application provider to update or correct your inaccurate personal information; (3) reject or restrict the use of your personal information by the Application provider; (4) request the Application provider to delete your personal information. If you want to exercise these rights, you can use the methods provided in this Application to access, correct, or delete information that you have uploaded. If you cannot use the methods provided by this Application to perform these operations, directly contact your organization to access or modify your information. The Application provider may decline the request if it has reasonable grounds to believe that the request is fraudulent or unfeasible, or may jeopardize the privacy of others. +

+

7 How to Download and Install a New Version +

+

When a new software version is available, the system will remind you to download the new version. After user authorization, the software can be updated normally. For installation on mobile devices, you can choose to install the software after it is downloaded.

+

8 Updates to This Statement +

+

This Statement may be revised or updated as needed. We will issue prominent notices or adopt practicable channels or methods to communicate all updates or revisions to you. You are encouraged to read this Statement after a version upgrade to learn about the latest changes. +

+

9 Contact Information +

+

If you have any questions about this Statement, please contact your organization. +

+ + \ No newline at end of file diff --git a/baselib/src/main/assets/ring_back.wav b/baselib/src/main/assets/ring_back.wav new file mode 100644 index 0000000..bebb270 Binary files /dev/null and b/baselib/src/main/assets/ring_back.wav differ diff --git a/baselib/src/main/assets/ringing.wav b/baselib/src/main/assets/ringing.wav new file mode 100644 index 0000000..2a58def Binary files /dev/null and b/baselib/src/main/assets/ringing.wav differ diff --git a/baselib/src/main/assets/root/Actalis_Authentication_Root_CA.pem b/baselib/src/main/assets/root/Actalis_Authentication_Root_CA.pem new file mode 100644 index 0000000..0eeac36 --- /dev/null +++ b/baselib/src/main/assets/root/Actalis_Authentication_Root_CA.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/Actalis_Organization_Validated_Server_CA_G2.pem b/baselib/src/main/assets/root/Actalis_Organization_Validated_Server_CA_G2.pem new file mode 100644 index 0000000..058ea4a --- /dev/null +++ b/baselib/src/main/assets/root/Actalis_Organization_Validated_Server_CA_G2.pem @@ -0,0 +1,37 @@ +-----BEGIN CERTIFICATE----- +MIIGizCCBHOgAwIBAgIQbomLaB2wkfxTPIzWP9gA5zANBgkqhkiG9w0BAQsFADBr +MQswCQYDVQQGEwJJVDEOMAwGA1UEBwwFTWlsYW4xIzAhBgNVBAoMGkFjdGFsaXMg +Uy5wLkEuLzAzMzU4NTIwOTY3MScwJQYDVQQDDB5BY3RhbGlzIEF1dGhlbnRpY2F0 +aW9uIFJvb3QgQ0EwHhcNMTkwMzIxMDgzNTAyWhcNMzAwOTIyMTEyMjAyWjCBlTEL +MAkGA1UEBhMCSVQxEDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNh +biBQaWV0cm8xIzAhBgNVBAoMGkFjdGFsaXMgUy5wLkEuLzAzMzU4NTIwOTY3MTQw +MgYDVQQDDCtBY3RhbGlzIE9yZ2FuaXphdGlvbiBWYWxpZGF0ZWQgU2VydmVyIENB +IEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6mcF+83X8iCGoRie +IICna4RV2or++ojTGxOHsnkw175KWhPepYKBA6044Kq8DWbrfVrrK0rw0Q93nu7p +kn/2hp03fEL44gSrxBPk/MPiwy5qfbXKREO6KgaJoi8fIcj00j2u2gYcX2opry/o +jn9u8SQfR/e5HmFhJmjolBSULJVusW2pQtmDD4da+jFuNr0qAk5xt2G8BLtBgMyf +QHO1KydXR/vAsNh4etXlB4MBW/uu/am8e5TYUbHuFqIgk2K6vwgC2HWDqY3GcDRp +oaPMsiGBVKuu3/z7ziziu34koHz5QMsFwov4VLJQ+0DDfuj159MAmOEcB1CU17UV +3djcqQIDAQABo4IB/jCCAfowQQYIKwYBBQUHAQEENTAzMDEGCCsGAQUFBzABhiVo +dHRwOi8vb2NzcDA1LmFjdGFsaXMuaXQvVkEvQVVUSC1ST09UMB0GA1UdDgQWBBRi +/rsnimRE7WiWWlh5odtaJq3/uzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaA +FFLYiDrIn3hm7YnzezhwlMkCAjbQMEUGA1UdIAQ+MDwwOgYEVR0gADAyMDAGCCsG +AQUFBwIBFiRodHRwczovL3d3dy5hY3RhbGlzLml0L2FyZWEtZG93bmxvYWQwgeMG +A1UdHwSB2zCB2DCBlqCBk6CBkIaBjWxkYXA6Ly9sZGFwMDUuYWN0YWxpcy5pdC9j +biUzZEFjdGFsaXMlMjBBdXRoZW50aWNhdGlvbiUyMFJvb3QlMjBDQSxvJTNkQWN0 +YWxpcyUyMFMucC5BLiUyZjAzMzU4NTIwOTY3LGMlM2RJVD9jZXJ0aWZpY2F0ZVJl +dm9jYXRpb25MaXN0O2JpbmFyeTA9oDugOYY3aHR0cDovL2NybDA1LmFjdGFsaXMu +aXQvUmVwb3NpdG9yeS9BVVRILVJPT1QvZ2V0TGFzdENSTDAOBgNVHQ8BAf8EBAMC +AQYwJwYDVR0lBCAwHgYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDCTANBgkq +hkiG9w0BAQsFAAOCAgEAMOFRpyHyTaEiSAFK9Le6WNzSrwUVVWP4JM/LoK89gRwp +GJUqKDB3+awkEAB84jHgd7Mn5gVxEQWmaBRtQpVgRNIArDGBZwwBWWrbHEwjV+pv +LmN0JmVXUB9tXk7bOUIHHz3OpnI+nrDbOUMPIqKlIyPyhrvFFofs0314d5bjyi+O +skhgqaMqZV+mMrCCoVjkJb+TEqdThVSsGbBCSXdBZaPuKsT6gpkkJJ6wfqvGwEFN +J+QaHClEmIMY/DMLbmiZHWFv+c2W0Ra+0AilzGil0dsw0q4hyd8QT2FXFg2J5BNi +5IDGGGtLL6H3YKzpKodTUCXqSAAy2anexuClTKqambGgu13U18De6tXJzERQRyhN +QBzz2MaUZHdzkGOQN7j+/a1buSmHpixdAztc2wtPCqAgwu4Ef+xaGTRl/NdCC6gX +oPLzQVTdE+SrU7FMZCCjgyoe249JsW2EmNbEFo6uX8J0TxdhmKQMdPjVHXKr13+Y +gcP+/jONTEhd1mH4ZWPUBHT6kXJgyksHXV2qfrDFIOU1AxmNjyxRfXFgdQOXOuOS +5aANc4ZGTntmnisIJVvUl8HzVPeHp49ze7SS8YMJwIuWehIomKsDX6qGYUPoXzZ7 +ytiAdVJjjVfOZ+0WIrNJ6/mfQ2aa1wHGxC9p/VqGPDgnM0qyR2hS2M1sLfqNFsw= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/DigiCert_EV_RSA_CA_G2.pem b/baselib/src/main/assets/root/DigiCert_EV_RSA_CA_G2.pem new file mode 100644 index 0000000..d625535 --- /dev/null +++ b/baselib/src/main/assets/root/DigiCert_EV_RSA_CA_G2.pem @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFPDCCBCSgAwIBAgIQAWePH++IIlXYsKcOa3uyIDANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0yMDA3MDIxMjQyNTBaFw0zMDA3MDIxMjQyNTBaMEQxCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxHjAcBgNVBAMTFURpZ2lDZXJ0IEVWIFJT +QSBDQSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK0eZsx/neTr +f4MXJz0R2fJTIDfN8AwUAu7hy4gI0vp7O8LAAHx2h3bbf8wl+pGMSxaJK9ffDDCD +63FqqFBqE9eTmo3RkgQhlu55a04LsXRLcK6crkBOO0djdonybmhrfGrtBqYvbRat +xenkv0Sg4frhRl4wYh4dnW0LOVRGhbt1G5Q19zm9CqMlq7LlUdAE+6d3a5++ppfG +cnWLmbEVEcLHPAnbl+/iKauQpQlU1Mi+wEBnjE5tK8Q778naXnF+DsedQJ7NEi+b +QoonTHEz9ryeEcUHuQTv7nApa/zCqes5lXn1pMs4LZJ3SVgbkTLj+RbBov/uiwTX +tkBEWawvZH8CAwEAAaOCAgswggIHMB0GA1UdDgQWBBRqTlC/mGidW3sgddRZAXlI +ZpIyBjAfBgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8E +BAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQI +MAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz +cC5kaWdpY2VydC5jb20wewYDVR0fBHQwcjA3oDWgM4YxaHR0cDovL2NybDMuZGln +aWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDA3oDWgM4YxaHR0cDov +L2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDCBzgYD +VR0gBIHGMIHDMIHABgRVHSAAMIG3MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5k +aWdpY2VydC5jb20vQ1BTMIGKBggrBgEFBQcCAjB+DHxBbnkgdXNlIG9mIHRoaXMg +Q2VydGlmaWNhdGUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgUmVseWlu +ZyBQYXJ0eSBBZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL3d3dy5kaWdpY2Vy +dC5jb20vcnBhLXVhMA0GCSqGSIb3DQEBCwUAA4IBAQBSMgrCdY2+O9spnYNvwHiG ++9lCJbyELR0UsoLwpzGpSdkHD7pVDDFJm3//B8Es+17T1o5Hat+HRDsvRr7d3MEy +o9iXkkxLhKEgApA2Ft2eZfPrTolc95PwSWnn3FZ8BhdGO4brTA4+zkPSKoMXi/X+ +WLBNN29Z/nbCS7H/qLGt7gViEvTIdU8x+H4l/XigZMUDaVmJ+B5d7cwSK7yOoQdf +oIBGmA5Mp4LhMzo52rf//kXPfE3wYIZVHqVuxxlnTkFYmffCX9/Lon7SWaGdg6Rc +k4RHhHLWtmz2lTZ5CEo2ljDsGzCFGJP7oT4q6Q8oFC38irvdKIJ95cUxYzj4tnOI +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/DigiCert_Global_Root_G2.pem b/baselib/src/main/assets/root/DigiCert_Global_Root_G2.pem new file mode 100644 index 0000000..3188acc --- /dev/null +++ b/baselib/src/main/assets/root/DigiCert_Global_Root_G2.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/Entrust_Root_Certification_Authority_G2.pem b/baselib/src/main/assets/root/Entrust_Root_Certification_Authority_G2.pem new file mode 100644 index 0000000..34d3ffd --- /dev/null +++ b/baselib/src/main/assets/root/Entrust_Root_Certification_Authority_G2.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/root/Geotrust_PCA_G3_Root.pem b/baselib/src/main/assets/root/Geotrust_PCA_G3_Root.pem new file mode 100644 index 0000000..ad4b563 --- /dev/null +++ b/baselib/src/main/assets/root/Geotrust_PCA_G3_Root.pem @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/root/GlobalSign.pem b/baselib/src/main/assets/root/GlobalSign.pem new file mode 100644 index 0000000..55ddeb0 --- /dev/null +++ b/baselib/src/main/assets/root/GlobalSign.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/GlobalSign_RSA_OV_SSL_CA_2018.pem b/baselib/src/main/assets/root/GlobalSign_RSA_OV_SSL_CA_2018.pem new file mode 100644 index 0000000..a230170 --- /dev/null +++ b/baselib/src/main/assets/root/GlobalSign_RSA_OV_SSL_CA_2018.pem @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIETjCCAzagAwIBAgINAe5fIh38YjvUMzqFVzANBgkqhkiG9w0BAQsFADBMMSAw +HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFs +U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xODExMjEwMDAwMDBaFw0yODEx +MjEwMDAwMDBaMFAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52 +LXNhMSYwJAYDVQQDEx1HbG9iYWxTaWduIFJTQSBPViBTU0wgQ0EgMjAxODCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKdaydUMGCEAI9WXD+uu3Vxoa2uP +UGATeoHLl+6OimGUSyZ59gSnKvuk2la77qCk8HuKf1UfR5NhDW5xUTolJAgvjOH3 +idaSz6+zpz8w7bXfIa7+9UQX/dhj2S/TgVprX9NHsKzyqzskeU8fxy7quRU6fBhM +abO1IFkJXinDY+YuRluqlJBJDrnw9UqhCS98NE3QvADFBlV5Bs6i0BDxSEPouVq1 +lVW9MdIbPYa+oewNEtssmSStR8JvA+Z6cLVwzM0nLKWMjsIYPJLJLnNvBhBWk0Cq +o8VS++XFBdZpaFwGue5RieGKDkFNm5KQConpFmvv73W+eka440eKHRwup08CAwEA +AaOCASkwggElMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G +A1UdDgQWBBT473/yzXhnqN5vjySNiPGHAwKz6zAfBgNVHSMEGDAWgBSP8Et/qC5F +JK5NUPpjmove4t0bvDA+BggrBgEFBQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6 +Ly9vY3NwMi5nbG9iYWxzaWduLmNvbS9yb290cjMwNgYDVR0fBC8wLTAroCmgJ4Yl +aHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIzLmNybDBHBgNVHSAEQDA+ +MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5j +b20vcmVwb3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAJmQyC1fQorUC2bbmANz +EdSIhlIoU4r7rd/9c446ZwTbw1MUcBQJfMPg+NccmBqixD7b6QDjynCy8SIwIVbb +0615XoFYC20UgDX1b10d65pHBf9ZjQCxQNqQmJYaumxtf4z1s4DfjGRzNpZ5eWl0 +6r/4ngGPoJVpjemEuunl1Ig423g7mNA2eymw0lIYkN5SQwCuaifIFJ6GlazhgDEw +fpolu4usBCOmmQDo8dIm7A9+O4orkjgTHY+GzYZSR+Y0fFukAj6KYXwidlNalFMz +hriSqHKvoflShx8xpfywgVcvzfTO3PYkz6fiNJBonf6q8amaEsybwMbDqKWwIX7e +SPY= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/Huawei IT Product CA.pem b/baselib/src/main/assets/root/Huawei IT Product CA.pem new file mode 100644 index 0000000..360bbb8 --- /dev/null +++ b/baselib/src/main/assets/root/Huawei IT Product CA.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEsTCCApmgAwIBAgIRdjl5z9FobnagzdStBIQZVIcwDQYJKoZIhvcNAQELBQAw +PDELMAkGA1UEBhMCQ04xDzANBgNVBAoTBkh1YXdlaTEcMBoGA1UEAxMTSHVhd2Vp +IEVxdWlwbWVudCBDQTAeFw0xNjEwMTgwNjUwNTNaFw00MTEwMTIwNjUwNTNaMD0x +CzAJBgNVBAYTAkNOMQ8wDQYDVQQKEwZIdWF3ZWkxHTAbBgNVBAMTFEh1YXdlaSBJ +VCBQcm9kdWN0IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtKE3 +0649koONgSJqzwKXpSxTwiGTGorzcd3paBGH75Zgm5GFv2K2TG3cU6seS6dt7Ig+ +/8ntrcieQUttcWxpm2a1IBeohU1OTGFpomQCRqesDnlXXUS4JgZiDvPBzoqGCZkX +YRw37J5KM5TSZzdLcWgxAPjXvKPdLXfxGzhqg8GV1tTboqXoNEqVqOeViBjsjN7i +xIuu1Stauy9E0E5ZnSrwUjHc5QrR9CmWIu9D0ZJJp1M9VgcXy9evPhiHoz9o+KBd +fNwt4e/NymTqaPa+ngS/qZwI7A4tR4RKCMKFHJcsjaXwUb0RuIeCiPO3wPHgXmGL +uiKfyPV8SMLpE/wYaQIDAQABo4GsMIGpMB8GA1UdIwQYMBaAFCr4EFkngDUfp3y6 +O58q5Eqqm5LqMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEGCCsGAQUFBwIBFiVodHRw +Oi8vc3VwcG9ydC5odWF3ZWkuY29tL3N1cHBvcnQvcGtpMA8GA1UdEwQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQSijfs+XNX1+SDurVvA+zdrhFO +zzANBgkqhkiG9w0BAQsFAAOCAgEAAg1oBG8YFvDEecVbhkxU95svvlTKlrb4l77u +cnCNhbnSlk8FVc5CpV0Q7SMeBNJhmUOA2xdFsfe0eHx9P3Bjy+difkpID/ow7oBH +q2TXePxydo+AxA0OgAvdgF1RBPTpqDOF1M87eUpJ/DyhiBEE5m+QZ6VqOi2WCEL7 +qPGRbwjAFF1SFHTJMcxldwF6Q/QWUPMm8LUzod7gZrgP8FhwhDOtGHY5nEhWdADa +F9xKejqyDCLEyfzsBKT8V4MsdAo6cxyCEmwiQH8sMTLerwyXo2o9w9J7+vRAFr2i +tA7TwGF77Y1uV3aMj7n81UrXxqx0P8qwb467u+3Rj2Cs29PzhxYZxYsuov9YeTrv +GfG9voXz48q8ELf7UOGrhG9e0yfph5UjS0P6ksbYInPXuuvrbrDkQvLBYb9hY78a +pwHn89PhRWE9HQwNnflTZS1gWtn5dQ4uvWAfX19e87AcHzp3vL4J2bCxxPXEE081 +3vhqtnU9Rlv/EJAMauZ3DKsMMsYX8i35ENhfto0ZLz1Aln0qtUOZ63h/VxQwGVC0 +OCE1U776UUKZosfTmNLld4miJnwsk8AmLaMxWOyRsqzESHa2x1t2sXF8s0/LW5T7 +d+j7JrLzey3bncx7wceASUUL3iAzICHYr728fNzXKV6OcZpjGdYdVREpM26sbxLo +77rH32o= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/root/Huawei_Equipment_Root_CA.pem b/baselib/src/main/assets/root/Huawei_Equipment_Root_CA.pem new file mode 100644 index 0000000..c205111 --- /dev/null +++ b/baselib/src/main/assets/root/Huawei_Equipment_Root_CA.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPzCCAyegAwIBAgIRdiVgAipHXuymK3xorJs/KYYwDQYJKoZIhvcNAQELBQAw +PDELMAkGA1UEBhMCQ04xDzANBgNVBAoTBkh1YXdlaTEcMBoGA1UEAxMTSHVhd2Vp +IEVxdWlwbWVudCBDQTAeFw0xMTEyMDYwNzM0MjNaFw00MTExMjgwNzM0MjNaMDwx +CzAJBgNVBAYTAkNOMQ8wDQYDVQQKEwZIdWF3ZWkxHDAaBgNVBAMTE0h1YXdlaSBF +cXVpcG1lbnQgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCiiYQn +C/Mp9obmAnXmu/Nj6rccSkEQJXlZipOv8tIjvr0B8ObpFUnU+qLojZUYlNmXH8Rg +RgFB1sBSyOuGiiP0uNtJ0lPLbylsc+2fr2Rlt/qbYs1oQGz+oNl+UdAOtm/lPzgg +UOVVst15Ovf0Yf6LQ3CQalN2VJWgKpFUudDKWQ2fzbFT5YSfvhFxvtvWfgdntKAJ +t3sFvkKr9Qw+0EYNpQiw5EALeLWCZSYU7A939puqYR6aNA447S1K8SgWoav82P4U +Y/ykLXjcgTeCnvRRtUga1gdIwm5d/vRlB5il5wspGLLes4SomzUYrvnvHio555NZ +PpvmpIXNolwvYW5opAyYzE05pVSOmHf/RY/dHto8XWexOJq/UAFBMyiH4NT4cZpW +jYWR7W9GxRXApmQrrLXte1CF/IzXWBMA2tSL0WnRJz5HRcKzsOC6FksiqsYstFjc +CE7J7Nicr3Bwq5FrZiqGSdLmLRn97XqVlWdN31HX16fzRhZMiOkvQe+uYT+BXbhU +1fZIh6RRAH3V1APobVlCXh5PDq8Ca4dClHNHYp5RP0Pb5zBowTqBzSv7ssHrNceQ +sWDeNjX9t59NwviaIlXIlPiWEEJc22XtMm4sc/+8mgOFMNXr4FWu8vdG2fgRpeWJ +O0E035D6TClu4So2GlN/fIccp5wVYAWF1WhxSQIDAQABozwwOjAMBgNVHRMEBTAD +AQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUKvgQWSeANR+nfLo7nyrkSqqbkuow +DQYJKoZIhvcNAQELBQADggIBAEDHZJ4vvx2kPmHEsN3OJOeF2nV6chjF1QZcUwlo +jhUtIv9jte9mci5qllvYRU5mia9rYZiP61XfdrwORf8QdJcI63QgrIj7MtnJULcU +Ukk0Sj9Fz6rswfhlaqtRjDp2ljizCl9bmUzKZTl40m/SMbItbSyYXvKrgSPTwgPo +/MralqpJcuoUkf+JDZIP3AaIy+vecksJwmoFIc0OqwP7uNC55kr8kx70eH3QKaiA +U+8CL3N7gtMFBL2MALlk3vFEICEAhWvMGrYNtSzBUEJNTspx+qVxERBqxJImBsPG +D7LhLOaPlSzfbU6CD3C8G92Y7r4nCcQ+SOQv4k6TTRn8pOj5c0oy3Z28DeZGuzSX +NPsWur3aRVwE0mOY8cLBkgio7AQjqIAmdbo5vie7X1zshyEcA7FaE1mJdNS3WVCv +lMwTFwygq13svLQ5MwGPSexsHudZ5JP55tHXkQyPRqxdhFr+gxDw5oiv/LlxApB8 +5MwEfTTs/uzS6FSWAUC0IAxWyZ3MytVAAL7SiwZp/eODWBwLXETlIKcu/fdhTfN5 +q1Mm9TjMjJmDEoqzIDRjDuVR4v/3czRxMOkKtUHJt2ixeiidh9hjY6ae669BqpBR +W0d5dyNozy+IJcUo7Gg2+F1AhTLwvPiYlJLsNGZZvqXfhplpwcAnvtoGJvAj+QkL +iW4z +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/root/VeriSign_Universal_Root_Certification_Authority.pem b/baselib/src/main/assets/root/VeriSign_Universal_Root_Certification_Authority.pem new file mode 100644 index 0000000..2d48f0b --- /dev/null +++ b/baselib/src/main/assets/root/VeriSign_Universal_Root_Certification_Authority.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/ca_root.pem b/baselib/src/main/assets/root/ca_root.pem new file mode 100644 index 0000000..694b3d5 --- /dev/null +++ b/baselib/src/main/assets/root/ca_root.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIETDCCAzSgAwIBAgIJAIMwMEdKOuLzMA0GCSqGSIb3DQEBCwUAMIG1MQswCQYD +VQQGEwJDTjESMBAGA1UECAwJR3VhbmdEb25nMREwDwYDVQQHDAhTaGVuWmhlbjEP +MA0GA1UECgwGSHVhd2VpMTUwMwYDVQQLDCxFbnRlcnByaXNlIFVDJkMgUHJvZHVj +dExpbmUgVGVsZXByZXNlbmNlIFBEVTESMBAGA1UEAwwJaHVhd2VpX2NhMSMwIQYJ +KoZIhvcNAQkBFhRxdWhhaXNvbmdAaHVhd2VpLmNvbTAeFw0xOTA5MDQwODIzMDVa +Fw00OTA4MjcwODIzMDVaMIG1MQswCQYDVQQGEwJDTjESMBAGA1UECAwJR3VhbmdE +b25nMREwDwYDVQQHDAhTaGVuWmhlbjEPMA0GA1UECgwGSHVhd2VpMTUwMwYDVQQL +DCxFbnRlcnByaXNlIFVDJkMgUHJvZHVjdExpbmUgVGVsZXByZXNlbmNlIFBEVTES +MBAGA1UEAwwJaHVhd2VpX2NhMSMwIQYJKoZIhvcNAQkBFhRxdWhhaXNvbmdAaHVh +d2VpLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANmrhDWuC29V +A/Yyp+zENMdAqqvJioMm/EvJ9fOCWkVG2YGGgSU3/RgoEhGopjOleMHWvYEDcvVQ +VRt08XiU/EGX8IFS2rTToTBvZ6XSGOb4hxLZVXdB8suGqYVwJg3BqV7UKLj0Isca +mSyV9EJF4wOfRXYuJU2xt87i7W/IUdXwKujN6IcKTPLP6Gsp1Eeg2Ek7uVkUHWTv +nLIOTvFBvWyg8vapDTM6DLKYgO9ZnCnkEFa4CNXv9HygFgmsH9NGgv4+uM1Db2Dd +F8HHysPAOQ8GZVkRqyXQvruN0hOokoAWGw2maa2hRZkuoi10Oa4RxVDGzvfrgJh1 +A30zcOm+s9kCAwEAAaNdMFswHQYDVR0OBBYEFDzW3iq686UqWuCXL8bZDF8GiKZa +MB8GA1UdIwQYMBaAFDzW3iq686UqWuCXL8bZDF8GiKZaMAwGA1UdEwQFMAMBAf8w +CwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBHFpNQtxO+foZquU8Ci30S +tNYmhfC4KtWOrJSdzdb+W/j4J3Hygy5MsZqmxPZrvr+cdwTcNH1vCFXvnXtpQMy9 +VN+7Q+Z8A4uhbah9VKmvu9VvHu2AXKs+xykUToKOkZP7Hn5ohJEDokkrFD5MmJ+X +qbcoW5VuBFoMFH4ZvFiefuhD7RPlh/AamRiIB9dIWquv3kFfQzhg7DZDV0yS+U5P +r1bkaRVln4nMF1Im5gZX55vzpc4SCO3i7med3hdU0apgmwG+zMqxMnrGPITg1cA8 +vTmBvFmWgb6vuIIXECG3S04JqByUp5jI1eDYTXb+0wy1HAMJNeGw5EZipEUVY/ZS +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/root_thundersoft.pem b/baselib/src/main/assets/root/root_thundersoft.pem new file mode 100644 index 0000000..d8aae14 --- /dev/null +++ b/baselib/src/main/assets/root/root_thundersoft.pem @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIID+TCCAuGgAwIBAgIJAPCeEclKGzEKMA0GCSqGSIb3DQEBCwUAMIGKMQswCQYD +VQQGEwJDTjEQMA4GA1UECAwHc2hhYW54aTENMAsGA1UEBwwEeGlhbjEXMBUGA1UE +CgwOdGh1bmRlcnNvZnRfaXQxCzAJBgNVBAsMAklUMRQwEgYDVQQDDAt0aHVuZGVy +c29mdDEeMBwGCSqGSIb3DQEJARYPdGh1bmRlcnNvZnQuY29tMB4XDTIwMTAyMzA5 +MjgzMVoXDTMwMTAyMTA5MjgzMVowgYoxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdz +aGFhbnhpMQ0wCwYDVQQHDAR4aWFuMRcwFQYDVQQKDA50aHVuZGVyc29mdF9pdDEL +MAkGA1UECwwCSVQxFDASBgNVBAMMC3RodW5kZXJzb2Z0MR4wHAYJKoZIhvcNAQkB +Fg90aHVuZGVyc29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDdI9OaSWXKwsGVd/DIU1uceySA5jUEaXqofKu4pdjnyfIWf+/oYVUJY7ytdv90 +cUOoeaUXb3vWlJo3/3UK0ufvFeqikuWXynAku9EVuR7L2Ni14gvNoKBnmDZz1/sc +w55YEu4sdG1q5GSOIxvA6G9m13tqeVVm5bhf9XsEUJc5RRl+OMwcT7O25/zYGj6H +Grno1wswjoulvbfLgi7kfnkz1/35yaTN8vEoxl//i7z7zAz1m6oxa5MPfsCs42Ha +wsRomxkGM7xAy+H4qnLzFSvuKHV5ankNAT8oZQhD/4Zm+lqFSh8OxgH+eGsTdFEa +eZjtqLFTOiraaHxwZ9uwdAV3AgMBAAGjYDBeMB0GA1UdDgQWBBSAcGFKrZk0nBMO +JlCrqW42tb5zWjAfBgNVHSMEGDAWgBSAcGFKrZk0nBMOJlCrqW42tb5zWjAPBgNV +HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAZt/K +AGRABLlkTtaUgeLH9j5LuD1aHt/Sn2lwNkuzw5FuqjHKFoLM4b/LQUP4FQhhA4WQ +OS89wpMJcDMkycYMFVgCD4MiSwZo/60orD63UVEGKzXaZd4MqM4Bdbyp/H4TIKsn +HACtjI8uentdCl7bJfP15oeVaF7IImAdBu7XisGAGpuvr4nzvz8SBKbG7Zd6CFS5 +kDjjqSjbDOef97vsgRd3CnX6a/rJWaTDdGtSNM2Hwt5AxEwQrPKvGNOEZ+mkzsbc +hg0fhfXXTJmo5TKFd3vjU3KPxAWbVppvKhmAeyCcgrjeYd60ex3JWcQfSsnvPC0a +sLrZK9xlwSnUEZ0BuQ== +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/root_vc_pass.pem b/baselib/src/main/assets/root/root_vc_pass.pem new file mode 100644 index 0000000..5dbbc77 --- /dev/null +++ b/baselib/src/main/assets/root/root_vc_pass.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZTCCAgugAwIBAgIJAKKUiphhjODLMAoGCCqBHM9VAYN1MIGFMQswCQYDVQQG +EwJDTjEQMA4GA1UECAwHSmlhbmdTdTEPMA0GA1UEBwwGU3VaaG91MQ8wDQYDVQQK +DAZIdWF3ZWkxIjAgBgNVBAsMGUludGVsbGlnZW50IENvbGxhYm9yYXRpb24xHjAc +BgNVBAMMFWNsb3VkdmMudHAuaHVhd2VpLmNvbTAgFw0yMDAzMDUwMjAwMDNaGA8y +MDUwMDIyNjAyMDAwM1owgYUxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdKaWFuZ1N1 +MQ8wDQYDVQQHDAZTdVpob3UxDzANBgNVBAoMBkh1YXdlaTEiMCAGA1UECwwZSW50 +ZWxsaWdlbnQgQ29sbGFib3JhdGlvbjEeMBwGA1UEAwwVY2xvdWR2Yy50cC5odWF3 +ZWkuY29tMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEg/X/FSfk8M8aGewwh6BL +Xqk7DTsL44hPGw4vz9KJYCmQWfMfwlf+oJSXq5NagxCoXg9kqerm8q+r9A93b4H/ +LqNgMF4wHQYDVR0OBBYEFNYhdkGhdolXjE/byaQN1oYqwl/KMB8GA1UdIwQYMBaA +FNYhdkGhdolXjE/byaQN1oYqwl/KMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQD +AgEGMAoGCCqBHM9VAYN1A0gAMEUCIQCqBg85n93L8MWyEutGu1RPaCUWV3/8S/vk +Fzdz+CreWwIgUgWUr6KSN3qnOZKDHYAn1wkiY6M5hFbJI8KXx96ggvY= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/root/sc_root1.pem b/baselib/src/main/assets/root/sc_root1.pem new file mode 100644 index 0000000..95f90b2 --- /dev/null +++ b/baselib/src/main/assets/root/sc_root1.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/root/sc_root2.pem b/baselib/src/main/assets/root/sc_root2.pem new file mode 100644 index 0000000..885a871 --- /dev/null +++ b/baselib/src/main/assets/root/sc_root2.pem @@ -0,0 +1,42 @@ +-----BEGIN CERTIFICATE----- +MIIHdTCCBV2gAwIBAgIQXDs/N638KP4Pz9Or+D+FUTANBgkqhkiG9w0BAQsFADBr +MQswCQYDVQQGEwJJVDEOMAwGA1UEBwwFTWlsYW4xIzAhBgNVBAoMGkFjdGFsaXMg +Uy5wLkEuLzAzMzU4NTIwOTY3MScwJQYDVQQDDB5BY3RhbGlzIEF1dGhlbnRpY2F0 +aW9uIFJvb3QgQ0EwHhcNMjAwNzA2MDcyMDU1WhcNMzAwOTIyMTEyMjAyWjCBiTEL +MAkGA1UEBhMCSVQxEDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNh +biBQaWV0cm8xFzAVBgNVBAoMDkFjdGFsaXMgUy5wLkEuMTQwMgYDVQQDDCtBY3Rh +bGlzIE9yZ2FuaXphdGlvbiBWYWxpZGF0ZWQgU2VydmVyIENBIEczMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs73Ch+t2owm3ayTkyqy0OPuCTiybxTyS +4cU4y0t2RGSwCNjLh/rcutO0yoriZxVtPrNMcIRQ544BQhHFt/ypW7e+t8wWKrHa +r3BkKwSUbqNwpDWP1bXs7IJTVhHXWGAm7Ak1FhrrBmtXk8QtdzTzDDuxfFBK7sCL +N0Jdqoqb1V1z3wsWqAvr4KlSCFW05Nh4baWm/kXOmb8U+XR6kUmuoVvia3iBhotR +TzAHTO9SWWkgjTcir/nhBvyL2RoqkgYyP/k50bznaVOGFnFWzfl0XnrM/salfCBh +O0/1vNaoU8elR6AtbdCFAupgQy95GuFIRVS8n/cF0QupfPjUl+kGSLzvGAc+6oNE +alpAhKIS/+P0uODzRrS9Eq0WX1iSj6KHtQMNN4ZKsS4nsuvYCahnAc0QwQyoduAW +iU/ynhU9WTIEe1VIoEDE79NPOI2/80RqbZqdpAKUaf0FvuqVXhEcjiJJu+d0w9YN +b7gurd6xkaSXemW/fP4idBiNkd8aCVAdshGQYn6yh+na0Lu5IG88Z2kSIFcXDtwy +zjcxkW86pwkO6GekEomVBNKcv0Cey2Smf8uhpZk15TSCeyFDrZBWH9OsDst/Tnhz +pN156Huw3M3RRdEegt33fcyPykgt0HThxrEv9DwOzhs6lCQ5RNQJO7ZvZF1ZiqgT +FOJ6vs1xMqECAwEAAaOCAfQwggHwMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgw +FoAUUtiIOsifeGbtifN7OHCUyQICNtAwQQYIKwYBBQUHAQEENTAzMDEGCCsGAQUF +BzABhiVodHRwOi8vb2NzcDA1LmFjdGFsaXMuaXQvVkEvQVVUSC1ST09UMEUGA1Ud +IAQ+MDwwOgYEVR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hY3RhbGlz +Lml0L2FyZWEtZG93bmxvYWQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MIHjBgNVHR8EgdswgdgwgZaggZOggZCGgY1sZGFwOi8vbGRhcDA1LmFjdGFsaXMu +aXQvY24lM2RBY3RhbGlzJTIwQXV0aGVudGljYXRpb24lMjBSb290JTIwQ0EsbyUz +ZEFjdGFsaXMlMjBTLnAuQS4lMmYwMzM1ODUyMDk2NyxjJTNkSVQ/Y2VydGlmaWNh +dGVSZXZvY2F0aW9uTGlzdDtiaW5hcnkwPaA7oDmGN2h0dHA6Ly9jcmwwNS5hY3Rh +bGlzLml0L1JlcG9zaXRvcnkvQVVUSC1ST09UL2dldExhc3RDUkwwHQYDVR0OBBYE +FJ+KsbXxsd6C9Cd8vojN3qlDgaNLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0B +AQsFAAOCAgEAJbygMnKJ5M6byr5Ectq05ODqwNMtky8TEF3O55g6RHhxblf6OegZ +4ui4+ElHNOIXjycbeuUGuFA4LScCC9fnI1Rnn8TI2Q7OP5YWifEfnrdp99t/tJzQ +hfdi7ZTdRRZZGV9x+grfR/RtjT2C3Lt9X4lcbuSxTea3PHAwwi0A3bYRR1L5ciPm +eAnYtG9kpat8/RuC22oxiZZ5FdjU6wrRWkASRLiIwNcFIYfvpUbMWElaCUhqaB2y +YvWF8o02pnaYb4bvTCg4cVabVnojUuuXH81LeQhhsSXLwcdwSdew0NL4zCiNCn2Q +iDZpz2biCWDggibmWxsUUF6AbqMHnwsdS8vsKXiFQJHeAdNAhA+kwpqYAdhUiCdj +RTUdtRNUucLvZEN1OAvVYyog9xYCfhtkqgXQROMANP+Z/+yaZahaP/Vgak/V00se +Hdh7F+B6h5HVdwdh+17E2jl+aMTfyvBFcg2H/9Qjyl4TY8NW/6v0DPK52sVt8a35 +I+7xLGLPohAl4z6pEf2OxgjMNfXXCXS33smRgz1dLQFo8UpAb3rf84zkXaqEI6Qi +2P+5pibVFQigRbn4RcE+K2a/nm2M/o+WZTSio+E+YXacnNk71VcO82biOof+jBKT +iC3Xi7rAlypmme+QFBw9F1J89ig3smV/HaN8tO0lfTpvm7Zvzd5TkMs= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/baselib/src/main/assets/rpointer.bmp b/baselib/src/main/assets/rpointer.bmp new file mode 100644 index 0000000..45a74e2 Binary files /dev/null and b/baselib/src/main/assets/rpointer.bmp differ diff --git a/baselib/src/main/assets/smCertificate/equip_cloudlink.pem b/baselib/src/main/assets/smCertificate/equip_cloudlink.pem new file mode 100644 index 0000000..5bee8ee --- /dev/null +++ b/baselib/src/main/assets/smCertificate/equip_cloudlink.pem @@ -0,0 +1,54 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sm2sign-with-sm3 + Issuer: C=CN, ST=shaanxi, L=xian, O=thundersoft_it, OU=IT, CN=thundersoft/emailAddress=thundersoft.com + Validity + Not Before: Oct 23 08:02:59 2020 GMT + Not After : Oct 16 08:02:59 2050 GMT + Subject: C=CN, ST=shaanxi, O=thundersoft_it, OU=IT, CN=thundersoft_STBU5/emailAddress=thundersoft.com + Subject Public Key Info: + Public Key Algorithm: id-ecPublicKey + Public-Key: (256 bit) + pub: + 04:be:a6:64:24:70:4d:76:51:ac:35:a7:a2:ee:98: + 73:04:a3:ae:5d:45:b0:da:02:d7:64:6c:a0:e5:32: + 71:3f:ce:c7:40:9c:d2:8a:13:8d:bd:c6:b0:39:ac: + 52:01:44:e5:8b:98:58:4b:d9:b3:b8:d4:eb:8a:bb: + 9e:f9:34:d4:13 + ASN1 OID: sm2p256v1 + NIST CURVE: SM2 + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Key Usage: + Digital Signature, Non Repudiation + Netscape Comment: + GmSSL Generated Certificate + X509v3 Subject Key Identifier: + 14:A3:65:E7:61:2E:8E:9E:C3:8A:75:9D:0D:94:16:4C:DB:1C:55:95 + X509v3 Authority Key Identifier: + keyid:C3:B1:13:96:B0:CB:D1:7A:C3:48:93:86:3A:FE:9B:B3:19:99:26:40 + + Signature Algorithm: sm2sign-with-sm3 + 30:46:02:21:00:e7:83:ca:79:83:e5:9d:63:37:8b:bd:46:34: + fe:76:42:a0:bb:5c:4a:f6:93:37:53:ef:0d:57:10:ee:2b:8b: + 01:02:21:00:d5:62:a1:eb:40:f2:ae:93:51:9b:43:8e:ef:79: + 1b:77:25:f4:b8:b7:d2:2d:1a:37:dc:66:36:3d:53:91:57:c8 +-----BEGIN CERTIFICATE----- +MIIChzCCAiygAwIBAgIBATAKBggqgRzPVQGDdTCBijELMAkGA1UEBhMCQ04xEDAO +BgNVBAgMB3NoYWFueGkxDTALBgNVBAcMBHhpYW4xFzAVBgNVBAoMDnRodW5kZXJz +b2Z0X2l0MQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLdGh1bmRlcnNvZnQxHjAcBgkq +hkiG9w0BCQEWD3RodW5kZXJzb2Z0LmNvbTAgFw0yMDEwMjMwODAyNTlaGA8yMDUw +MTAxNjA4MDI1OVowgYExCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdzaGFhbnhpMRcw +FQYDVQQKDA50aHVuZGVyc29mdF9pdDELMAkGA1UECwwCSVQxGjAYBgNVBAMMEXRo +dW5kZXJzb2Z0X1NUQlU1MR4wHAYJKoZIhvcNAQkBFg90aHVuZGVyc29mdC5jb20w +WTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAS+pmQkcE12Uaw1p6LumHMEo65dRbDa +AtdkbKDlMnE/zsdAnNKKE429xrA5rFIBROWLmFhL2bO41OuKu575NNQTo4GHMIGE +MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMCoGCWCGSAGG+EIBDQQdFhtHbVNTTCBH +ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFBSjZedhLo6ew4p1nQ2UFkzb +HFWVMB8GA1UdIwQYMBaAFMOxE5awy9F6w0iThjr+m7MZmSZAMAoGCCqBHM9VAYN1 +A0kAMEYCIQDng8p5g+WdYzeLvUY0/nZCoLtcSvaTN1PvDVcQ7iuLAQIhANVioetA +8q6TUZtDju95G3cl9Li30i0aN9xmNj1TkVfI +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/smCertificate/equip_cloudlink_enc.pem b/baselib/src/main/assets/smCertificate/equip_cloudlink_enc.pem new file mode 100644 index 0000000..ec39faa --- /dev/null +++ b/baselib/src/main/assets/smCertificate/equip_cloudlink_enc.pem @@ -0,0 +1,54 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sm2sign-with-sm3 + Issuer: C=CN, ST=shaanxi, L=xian, O=thundersoft_it, OU=IT, CN=thundersoft/emailAddress=thundersoft.com + Validity + Not Before: Oct 23 08:11:27 2020 GMT + Not After : Oct 16 08:11:27 2050 GMT + Subject: C=CN, ST=shaanxi, O=thundersoft_it, OU=IT, CN=thundersoft_STBU5/emailAddress=thundersoft.com + Subject Public Key Info: + Public Key Algorithm: id-ecPublicKey + Public-Key: (256 bit) + pub: + 04:01:d1:9d:2b:d8:46:cd:57:6f:fd:15:f9:4a:cc: + 8c:27:8f:bd:a1:90:3e:cc:14:30:7d:83:bd:92:98: + 77:0f:09:34:5d:a1:61:e0:72:6b:a2:5c:05:2a:ee: + 4c:59:18:f1:38:9b:13:ff:47:76:33:a1:d6:cc:e2: + 84:55:cc:86:68 + ASN1 OID: sm2p256v1 + NIST CURVE: SM2 + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Key Usage: + Key Encipherment, Data Encipherment, Key Agreement + Netscape Comment: + GmSSL Generated Certificate + X509v3 Subject Key Identifier: + 35:D5:36:C7:00:0C:03:B2:63:3B:CF:FA:9E:94:D0:E6:64:01:50:17 + X509v3 Authority Key Identifier: + keyid:C3:B1:13:96:B0:CB:D1:7A:C3:48:93:86:3A:FE:9B:B3:19:99:26:40 + + Signature Algorithm: sm2sign-with-sm3 + 30:45:02:20:47:4d:3c:4d:1d:42:df:40:47:c1:62:e4:dd:78: + 8d:5c:86:6c:d8:b4:e4:bd:3a:0e:a4:43:82:82:9d:7c:22:f5: + 02:21:00:bc:53:97:2d:54:44:27:3a:01:97:7a:df:69:09:0c: + 8f:b8:30:2d:09:5b:89:87:b9:07:46:75:ab:58:dc:84:40 +-----BEGIN CERTIFICATE----- +MIIChjCCAiygAwIBAgIBAjAKBggqgRzPVQGDdTCBijELMAkGA1UEBhMCQ04xEDAO +BgNVBAgMB3NoYWFueGkxDTALBgNVBAcMBHhpYW4xFzAVBgNVBAoMDnRodW5kZXJz +b2Z0X2l0MQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLdGh1bmRlcnNvZnQxHjAcBgkq +hkiG9w0BCQEWD3RodW5kZXJzb2Z0LmNvbTAgFw0yMDEwMjMwODExMjdaGA8yMDUw +MTAxNjA4MTEyN1owgYExCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdzaGFhbnhpMRcw +FQYDVQQKDA50aHVuZGVyc29mdF9pdDELMAkGA1UECwwCSVQxGjAYBgNVBAMMEXRo +dW5kZXJzb2Z0X1NUQlU1MR4wHAYJKoZIhvcNAQkBFg90aHVuZGVyc29mdC5jb20w +WTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQB0Z0r2EbNV2/9FflKzIwnj72hkD7M +FDB9g72SmHcPCTRdoWHgcmuiXAUq7kxZGPE4mxP/R3YzodbM4oRVzIZoo4GHMIGE +MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgM4MCoGCWCGSAGG+EIBDQQdFhtHbVNTTCBH +ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFDXVNscADAOyYzvP+p6U0OZk +AVAXMB8GA1UdIwQYMBaAFMOxE5awy9F6w0iThjr+m7MZmSZAMAoGCCqBHM9VAYN1 +A0gAMEUCIEdNPE0dQt9AR8Fi5N14jVyGbNi05L06DqRDgoKdfCL1AiEAvFOXLVRE +JzoBl3rfaQkMj7gwLQlbiYe5B0Z1q1jchEA= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/smCertificate/equip_key_cloudlink.pem b/baselib/src/main/assets/smCertificate/equip_key_cloudlink.pem new file mode 100644 index 0000000..2e34f27 --- /dev/null +++ b/baselib/src/main/assets/smCertificate/equip_key_cloudlink.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: SMS4-CBC,1366456EBD55A6D57594D96A4E8E9427 + +tNMrmZ4EpIjCS9mmuxILS1u2y3HKjt8n1dHwhqQ+eLXyyiG+oEcyecRFpcjeXLa+ +8hjqN4ri+Cu+L/kHrOU8M7MozvyglveEi/AMTG5zvqgqjPQCKPuA7EzEWVWAobIM +KoiMi6P6dYURC/vqCeNl0txxnoScGw57+niM2wtzo00= +-----END EC PRIVATE KEY----- diff --git a/baselib/src/main/assets/smCertificate/equip_key_cloudlink_enc.pem b/baselib/src/main/assets/smCertificate/equip_key_cloudlink_enc.pem new file mode 100644 index 0000000..c2411f1 --- /dev/null +++ b/baselib/src/main/assets/smCertificate/equip_key_cloudlink_enc.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: SMS4-CBC,08DE723C62B17EC7D8149211C23099D3 + +NCb60dCBQxXF/1TLQ9BDC74O/5oorKajdwfFHSAzMYTQc9P7hUuf/2lTgkGSHr8U +qkJE0JrxyoCnhtoRfEcNX7YRImdbsdfNAXw9sjEO6/lq8nVh0Ul1Q1SL+h8wEav7 +CjZ1XbDLQWLbqnoYV2qutH54JbP1Lb98oBFhTKwDMp8= +-----END EC PRIVATE KEY----- diff --git a/baselib/src/main/assets/smRoot/root_thundersoft_gm.pem b/baselib/src/main/assets/smRoot/root_thundersoft_gm.pem new file mode 100644 index 0000000..7111482 --- /dev/null +++ b/baselib/src/main/assets/smRoot/root_thundersoft_gm.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICbjCCAhWgAwIBAgIJAKD/60jW/OGqMAoGCCqBHM9VAYN1MIGKMQswCQYDVQQG +EwJDTjEQMA4GA1UECAwHc2hhYW54aTENMAsGA1UEBwwEeGlhbjEXMBUGA1UECgwO +dGh1bmRlcnNvZnRfaXQxCzAJBgNVBAsMAklUMRQwEgYDVQQDDAt0aHVuZGVyc29m +dDEeMBwGCSqGSIb3DQEJARYPdGh1bmRlcnNvZnQuY29tMCAXDTIwMTAyMzA3MjU1 +MFoYDzIwNTAxMDE2MDcyNTUwWjCBijELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB3No +YWFueGkxDTALBgNVBAcMBHhpYW4xFzAVBgNVBAoMDnRodW5kZXJzb2Z0X2l0MQsw +CQYDVQQLDAJJVDEUMBIGA1UEAwwLdGh1bmRlcnNvZnQxHjAcBgkqhkiG9w0BCQEW +D3RodW5kZXJzb2Z0LmNvbTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABAzGjjYC +wnsDUtwqrKQh0jWqGvD3oSVFiJiftLVLQ7ipal8R7p4GOHlqAG2/fXdpEr/PhROb +MZSm5LilupnKdJyjYDBeMB0GA1UdDgQWBBTDsROWsMvResNIk4Y6/puzGZkmQDAf +BgNVHSMEGDAWgBTDsROWsMvResNIk4Y6/puzGZkmQDAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAKBggqgRzPVQGDdQNHADBEAiALqvnKj7GCOIWqen9t8TYS +HukbD1/C6OAUCdWry04vbwIgWmiudr2Pg9UHZF1Jr30CQfKBEeAsQx7AiTBjAir+ +Ui4= +-----END CERTIFICATE----- diff --git a/baselib/src/main/assets/upointer.bmp b/baselib/src/main/assets/upointer.bmp new file mode 100644 index 0000000..1825b8e Binary files /dev/null and b/baselib/src/main/assets/upointer.bmp differ diff --git a/baselib/src/main/assets/xcheck.bmp b/baselib/src/main/assets/xcheck.bmp new file mode 100644 index 0000000..9291b37 Binary files /dev/null and b/baselib/src/main/assets/xcheck.bmp differ diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java b/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java index c8ee2a9..684da37 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java @@ -1,12 +1,18 @@ package com.tenlionsoft.baselib.app; import android.content.Context; +import android.content.Intent; +import android.os.PowerManager; import android.view.Gravity; import com.hjq.toast.ToastUtils; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.layout.SmartRefreshLayout; +import com.tenlionsoft.baselib.constant.BroadcastConstant; +import com.tenlionsoft.baselib.core.beans.Member; +import com.tenlionsoft.baselib.core.listener.ScreenListener; import com.tenlionsoft.baselib.core.widget.refresh.BezierCircleHeader; +import com.tenlionsoft.baselib.utils.LogUtils; import androidx.multidex.MultiDex; import androidx.multidex.MultiDexApplication; @@ -23,6 +29,18 @@ public class BaseAppContext extends MultiDexApplication { private String username = ""; private String roomId = ""; private String otherUserId = ""; + //非国密证书路径 + public static String inDir = "inCertificate"; + //国密证书路径 + public static String smDir = "smCertificate"; + //根证 + public static String root = "root"; + private boolean isScreenOn; + public static String smRoot = "smRoot"; + /** + * 锁屏监听器 + */ + private ScreenListener screenListener; //static 代码段可以防止内存泄露 static { @@ -32,14 +50,57 @@ public class BaseAppContext extends MultiDexApplication { SmartRefreshLayout.setDefaultRefreshFooterCreator((context, layout) -> new ClassicsFooter(context)); } + @Override + public void onCreate() { + super.onCreate(); + app = this; + ToastUtils.init(this); + ToastUtils.setGravity(Gravity.BOTTOM, 0, 100); + PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); + isScreenOn = powerManager.isInteractive(); + screenTurningOff(); + } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); - app = this; - ToastUtils.init(this); - ToastUtils.setGravity(Gravity.BOTTOM, 0, 100); + + } + + private void screenTurningOff() { + screenListener = new ScreenListener(this); + screenListener.begin(new ScreenListener.ScreenStateListener() { + @Override + public void onScreenOn() { + // 开屏 + isScreenOn = true; + LogUtils.d("screenTurningOff()", "The screen turned on"); + } + + @Override + public void onScreenOff() { + // 锁屏 + isScreenOn = false; + sendBroadcast(new Intent(BroadcastConstant.ACTION_EVT_LOCK_SCREEN_NOTIFICATION)); + } + + @Override + public void onUserPresent() { + // 解锁 + isScreenOn = true; + LogUtils.d("screenTurningOff()", "Unlocked"); + } + }); + } + + /** + * 获取手机是否锁屏状态 + * + * @return true锁屏,false非锁屏 + */ + public boolean isScreenOn() { + return isScreenOn; } public static BaseAppContext getInstance() { @@ -69,4 +130,19 @@ public class BaseAppContext extends MultiDexApplication { public void setOtherUserId(String otherUserId) { this.otherUserId = otherUserId; } + + + /** + * 临时缓存的member,刷新选看状态用 + */ + private Member member; + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/BroadcastConstant.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/BroadcastConstant.java new file mode 100644 index 0000000..14ee1f1 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/BroadcastConstant.java @@ -0,0 +1,293 @@ +package com.tenlionsoft.baselib.constant; + +/** + * @date : 2021/5/27 + * @author : isoftstone + * @Description : 广播常量类 + */ +public class BroadcastConstant { + public static final String ACTION_CALL_MEDIA_CONNECTED = "com.isoftstone.cloundlink.call.mediaconnected"; + public static final String ACTION_CALL_END = "com.isoftstone.cloundlink.call.end"; + public static final String ACTION_CALL_END_SERVICE = "com.isoftstone.cloundlink.call.end.service"; + public static final String ACTION_CALL_END_FAILED = "com.isoftstone.cloundlink.call.end.failed"; + public static final String ACTION_ADD_LOCAL_VIEW = "com.isoftstone.cloundlink.call.addlocalview"; + public static final String ACTION_DEL_LOCAL_VIEW = "com.isoftstone.cloundlink.call.dellocalview"; + public static final String ACTION_BOOK_CONF_SUCCESS = "com.isoftstone.cloundlink.conf.bookconfresult"; + public static final String ACTION_CREATE_SELF_CONF_SUCCESS = "com.isoftstone.cloundlink.conf.createselfconf"; + public static final String ACTION_GET_VMR_LIST_RESULT = "com.isoftstone.cloundlink.conf.getvmrlistresult"; + public static final String ACTION_GET_VMR_LIST_FAIL = "com.isoftstone.cloundlink.conf.getvmrlistresultfail"; + public static final String ACTION_GET_CONF_LIST_RESULT = "com.isoftstone.cloundlink.conf.getconflistresult"; + public static final String ACTION_GET_CONF_DETAIL_RESULT = "com.isoftstone.cloundlink.conf.getconfdetailresult"; + public static final String ACTION_GET_CONF_SUBSCRIBE_RESULT = "com.isoftstone.cloundlink.conf.getconfsubscriberesult"; + public static final String ACTION_ADD_SELF_RESULT = "com.isoftstone.cloundlink.conf.addselfresult"; + public static final String ACTION_ADD_ATTENDEE_RESULT = "com.isoftstone.cloundlink.conf.addattendeeresult"; + public static final String ACTION_DEL_ATTENDEE_RESULT = "com.isoftstone.cloundlink.conf.delattendeeresult"; + public static final String ACTION_GET_CONF_CONNECTED = "com.isoftstone.cloundlink.conf.getconfconnected"; + public static final String ACTION_GET_CONF_END = "com.isoftstone.cloundlink.conf.getconfend"; + public static final String ACTION_CONF_STATE_UPDATE = "com.isoftstone.cloundlink.conf.confstateupdate"; + public static final String ACTION_CONF_BASE_INFO = "com.isoftstone.cloundlink.conf.confbaseinfo"; + + public static final String ACTION_VIDEO_TO_AUDIO = "com.isoftstone.cloundlink.call.videoswitchaudio"; + public static final String ACTION_CALL_UPGRADE_ACTION = "com.isoftstone.cloundlink.call.upgrade"; + public static final String ACTION_REQUEST_CONF_RIGHT_RESULT = + "com.isoftstone.cloundlink.conf.requestconfrightresult"; + public static final String ACTION_CONF_CALL_ANSWERED = "com.isoftstone.cloundlink.conf.confcallanswered"; + public static final String ACTION_LOGIN_SUCCESS = "com.isoftstone.cloundlink.login.success"; + public static final String ACTION_REFRESH_MEETINGS = "com.isoftstone.cloundlink.login.refreshmeetings"; + public static final String ACTION_AUTH_FAILED = "com.isoftstone.cloundlink.login.authfailed"; + public static final String ACTION_LOGIN_FAILED = "com.isoftstone.cloundlink.login.failed"; + public static final String ACTION_FIRST_CHANGE_PWD = "com.isoftstone.cloundlink.login.firstchangepwd"; + public static final String ACTION_CHANGE_PWD = "com.isoftstone.cloundlink.login.changepwd"; + public static final String ACTION_LOGOUT = "com.isoftstone.cloundlink.login.logout"; + public static final String ACTION_MUTE_ATTENDEE_RESULT = "com.isoftstone.cloundlink.conf.muteattendeeresult"; + public static final String ACTION_UN_MUTE_ATTENDEE_RESULT = "com.isoftstone.cloundlink.conf.unmuteattendeeresult"; + public static final String ACTION_MUTE_CONF_RESULT = "com.isoftstone.cloundlink.conf.muteconfresult"; + public static final String ACTION_UN_MUTE_CONF_RESULT = "com.isoftstone.cloundlink.conf.unmuteconfresult"; + public static final String ACTION_LOCK_CONF_RESULT = "com.isoftstone.cloundlink.conf.lockconfresult"; + public static final String ACTION_UN_LOCK_CONF_RESULT = "com.isoftstone.cloundlink.conf.unlockconfresult"; + public static final String ACTION_START_RECORD_RESULT = "com.isoftstone.cloundlink.conf.startrecordresult"; + public static final String ACTION_STOP_RECORD_RESULT = "com.isoftstone.cloundlink.conf.stoprecordresult"; + public static final String ACTION_SESSION_MODIFIED_RESULT = "com.isoftstone.cloundlink.conf.sessionmodifiedresult"; + public static final String ACTION_REQUEST_CHAIRMAN_RESULT = "com.isoftstone.cloundlink.conf.requestchairmanresult"; + public static final String ACTION_RELEASE_CHAIRMAN_RESULT = "com.isoftstone.cloundlink.conf.releasechairmanresult"; + public static final String ACTION_HAND_UP_RESULT = "com.isoftstone.cloundlink.conf.handupresult"; + public static final String ACTION_CANCEL_HAND_UP_RESULT = "com.isoftstone.cloundlink.conf.cancelhandupresult"; + public static final String ACTION_WILL_TIMEOUT = "com.isoftstone.cloundlink.conf.willtimeout"; + public static final String ACTION_POSTPONE_CONF_RESULT = "com.isoftstone.cloundlink.conf.postponeconfresult"; + public static final String ACTION_SPEAKER_LIST_IND = "com.isoftstone.cloundlink.conf.speakerlistind"; + public static final String ACTION_REQUEST_PRESENTER_RESULT = "com.isoftstone.cloundlink.conf.requestpesenterresult"; + public static final String ACTION_OPEN_VIDEO = "com.isoftstone.cloundlink.conf.openvideo"; + public static final String ACTION_REFUSE_OPEN_VIDEO = "com.isoftstone.cloundlink.RefuseOpenVideo"; + public static final String ACTION_BAND_CHANGED_WATCH = "com.isoftstone.cloundlink.bandChangedWatch"; + public static final String ACTION_REFRESH_SVC_VIEW = "com.isoftstone.cloundlink.conf.refreshsvcview"; + public static final String ACTION_SET_CONF_MODE_RESULT = "com.isoftstone.cloundlink.conf.setconfmoderesult"; + public static final String ACTION_HOLD_CALL_RESULT = "com.isoftstone.cloundlink.conf.holdcallresult"; + public static final String ACTION_CONF_CALL_CONNECTED = "com.isoftstone.cloundlink.conf.confcallconnected"; + public static final String ACTION_CALL_CONNECTED = "com.isoftstone.cloundlink.call.call_connected"; + public static final String ACTION_DIVERT_RESULT = "com.isoftstone.cloundlink.conf.divertresult"; + public static final String ACTION_BLD_TRANSFER_RESULT = "com.isoftstone.cloundlink.conf.bldtransferresult"; + public static final String ACTION_UPGRADE_CONF_RESULT = "com.isoftstone.cloundlink.conf.upgradeconfresult"; + public static final String ACTION_WATCH_ATTENDEE_CONF_RESULT = "com.isoftstone.cloundlink.conf.watchattendeeconfresult"; + public static final String ACTION_BROADCAST_ATTENDEE_CONF_RESULT = "com.isoftstone.cloundlink.conf.broadcastattendeeconfresult"; + public static final String ACTION_CANCEL_BROADCAST_CONF_RESULT = "com.isoftstone.cloundlink.conf.cancelbroadcastconfresult"; + public static final String ACTION_ACCESS_RESERVED_CONF = "com.isoftstone.cloundlink.conf.accessreservedconf"; + public static final String ACTION_GET_TEMP_USER_RESULT = "com.isoftstone.cloundlink.conf.gettempuserresult"; + public static final String ACTION_CALL_TRANSFER_TO_CONFERENCE = "com.isoftstone.cloundlink.conf.calltransfertoconference"; + + /** + * DataConf + */ + public static final String ACTION_CONF_INFO_PARAM = "com.isoftstone.cloundlink.conf.dataconfparam"; + public static final String ACTION_GET_DATA_CONF_PARAM_RESULT = "com.isoftstone.cloundlink.conf.getdataconfparamresult"; + public static final String ACTION_UPDATE_HOST_INFO = "com.isoftstone.cloundlink.conf.updatehostinfo"; + public static final String ACTION_DATA_CONF_USER_LEAVE = "com.isoftstone.cloundlink.conf.dataconfuserleave"; + public static final String ACTION_CONF_MSG_ON_CONFERENCE_TERMINATE = "com.isoftstone.cloundlink.conf.confmsgonconferenceterminate"; + public static final String ACTION_CONF_MSG_ON_CONFERENCE_LEAVE = "com.isoftstone.cloundlink.conf.confmsgonconferenceleave"; + public static final String ACTION_COMPT_MSG_VIDEO_ON_NOTIFY = "com.isoftstone.cloundlink.conf.comptmsgvideoonnotify"; + public static final String ACTION_DATA_CONFERENCE_JOIN_RESULT = "com.isoftstone.cloundlink.conf.dataconferencejoinresult"; + public static final String ACTION_DATA_CONFERENCE_USER_JOIN = "com.isoftstone.cloundlink.conf.dataconferenceuserjoin"; + public static final String ACTION_DATA_CONFERENCE_PRESENTER_CHANGE_IND = "com.isoftstone.cloundlink.conf.dataconferencepresenterchangeind"; + public static final String ACTION_DATA_CONFERENCE_HOST_CHANGE_IND = "com.isoftstone.cloundlink.conf.dataconferencehostchangeind"; + public static final String ACTION_DATA_CONFERENCE_GET_DEVICE_INFO_RESULT = "com.isoftstone.cloundlink.conf.dataconferencegetdeviceinforesult"; + public static final String ACTION_DATA_CONFERENCE_EXTEND_DEVICE_INFO = "com.isoftstone.cloundlink.conf.dataconferenceextenddeviceinfo"; + public static final String ACTION_DATA_CONFERENCE_CAMERA_STATUS_UPDATE = "com.isoftstone.cloundlink.conf.dataconferencecamerastatusupdate"; + public static final String ACTION_DATE_CONFERENCE_START_SHARE_STATUS = "com.isoftstone.cloundlink.conf.dateconferencestartsharestatus"; + public static final String ACTION_DATE_CONFERENCE_CHAT_MSG = "com.isoftstone.cloundlink.conf.dateconferencechatmsg"; + + /** + * IM + */ + public static final String ACTION_LOGIN_IM = "com.isoftstone.cloundlink.im.imlogin"; + public static final String ACTION_RECEIVE_SESSION_CHANGE = "com.isoftstone.cloundlink.im.messagereceive"; + public static final String ACTION_IM_LOGIN_SUCCESS = "com.isoftstone.cloundlink.im.loginsuccess"; + public static final String ACTION_IM_LOGIN_ERROR = "com.isoftstone.cloundlink.im.loginerror"; + public static final String ACTION_IM_QUERY_HISTORY = "com.isoftstone.cloundlink.im.queryhistory"; + public static final String ACTION_IM_DELETE_CONTACT_RESULT = "com.isoftstone.cloundlink.im.deletecontactresult"; + public static final String ACTION_IM_SEARCH_CONTACT_RESULT = "com.isoftstone.cloundlink.im.searchcontactresult"; + public static final String ACTION_IM_ADD_CONTACT_RESULT = "com.isoftstone.cloundlink.im.addcontactresult"; + public static final String ACTION_IM_FRIEND_STATUS_CHANGE = "com.isoftstone.cloundlink.im.friendstatuschange"; + public static final String ACTION_DOWNLOAD_PROCESS = "com.isoftstone.cloundlink.im.downloadprocess"; + public static final String ACTION_DOWNLOAD_FINISH = "com.isoftstone.cloundlink.im.downloadfinish"; + public static final String ACTION_SEND_MESSAGE_SUCCESS = "com.isoftstone.cloundlink.im.sendmessagesuccess"; + public static final String ACTION_SEND_MESSAGE_FAIL = "com.isoftstone.cloundlink.im.sendmessagefail"; + public static final String ACTION_QUERY_GROUP_MEMBER = "com.isoftstone.cloundlink.im.querygroupmember"; + public static final String ACTION_REFRESH_GROUP_MEMBER = "com.isoftstone.cloundlink.im.refreshgroupmember"; + public static final String ACTION_MODIFY_GROUP_MEMBER = "com.isoftstone.cloundlink.im.modifygroupmember"; + public static final String ACTION_CREATE_GROUP_RESULT = "com.isoftstone.cloundlink.im.creategroupresult"; + public static final String ACTION_SET_STATUS = "com.isoftstone.cloundlink.im.modifygroupmember"; + public static final String ACTION_IM_SET_HEAD_PHOTO = "com.isoftstone.cloundlink.im.setheadphoto"; + public static final String ACTION_REFRESH_TEAM_MEMBER = "com.isoftstone.cloundlink.im.refreshteammember"; + + public static final String ACTION_IM_USER_INFO_CHANGE = "com.isoftstone.cloundlink.im.userinfochange"; + public static final String ACTION_IM_USER_INFO_CHANGE_FAILED = "com.isoftstone.cloundlink.im.userinfochangefailed"; + public static final String ACTION_IM_CHAT_GROUP_ADD = "com.isoftstone.cloundlink.im.chatgroupadd"; + public static final String ACTION_IM_CHAT_GROUP_DISMISS = "com.isoftstone.cloundlink.im.chatgroupupdismiss"; + public static final String ACTION_IM_CHAT_GROUP_UPDATE = "com.isoftstone.cloundlink.im.chatgroupupdate"; + public static final String ACTION_IM_CHAT_GROUP_ADD_MEMBER = "com.isoftstone.cloundlink.im.chatgroupaddmember"; + public static final String ACTION_IM_CHAT_GROUP_DEL_MEMBER = "com.isoftstone.cloundlink.im.chatgroupdelmember"; + public static final String ACTION_IM_CHAT_GROUP_LEAVE_RESULT = "com.isoftstone.cloundlink.im.chatgroupleaveresult"; + + /** + * Enterprise address book + */ + public static final String ACTION_ENTERPRISE_GET_SELF_RESULT = "com.isoftstone.cloundlink.eaddr.getselfresult"; + public static final String ACTION_ENTERPRISE_GET_CONTACT_RESULT = "com.isoftstone.cloundlink.eaddr.getcontactresult"; + public static final String ACTION_ENTERPRISE_GET_CONTACT_NULL = "com.isoftstone.cloundlink.eaddr.getcontactnull"; + public static final String ACTION_ENTERPRISE_GET_CONTACT_FAILED = "com.isoftstone.cloundlink.eaddr.getcontactfailed"; + public static final String ACTION_ENTERPRISE_GET_SELF_PHOTO_RESULT = "com.isoftstone.cloundlink.eaddr.getselfphotoresult"; + public static final String ACTION_ENTERPRISE_GET_HEAD_PHOTO_FAILED = "com.isoftstone.cloundlink.eaddr.getheadphotofailed"; + public static final String ACTION_ENTERPRISE_GET_HEAD_SYS_PHOTO = "com.isoftstone.cloundlink.eaddr.getheadsysphoto"; + public static final String ACTION_ENTERPRISE_GET_HEAD_DEF_PHOTO = "com.isoftstone.cloundlink.eaddr.getheaddefphoto"; + public static final String ACTION_ENTERPRISE_GET_DEPARTMENT_RESULT = "com.isoftstone.cloundlink.eaddr.getdepartmentresult"; + public static final String ACTION_ENTERPRISE_GET_DEPARTMENT_NULL = "com.isoftstone.cloundlink.eaddr.getdepartmentnull"; + public static final String ACTION_ENTERPRISE_GET_DEPARTMENT_FAILED = "com.isoftstone.cloundlink.eaddr.getdepartmentfailed"; + + public static final String ACTION_DATE_CONFERENCE_AUX_DATA_STATE = "com.isoftstone.cloundlink.conf.dateconferenceauxdatastate"; + public static final String ACTION_CONF_AUX_DATA_SEND = "com.isoftstone.cloundlink.conf.auxdatasend"; + public static final String ACTION_CONF_AUX_DATA_FAILED = "com.isoftstone.cloundlink.conf.auxdatafailed"; + + /** + * conference to call + */ + public static final String ACTION_CONF_INCOMING_TO_CALL_INCOMING = "com.isoftstone.cloundlink.conf.conftocall"; + public static final String ACTION_MINIMIZE_SERVICE_VOICE_TO_VIDEO = "com.isoftstone.cloundlink.minimize_Service_voice_to_video"; + public static final String ACTION_MINIMIZE_SERVICE_VIDEO_TO_VOICE = "com.isoftstone.cloundlink.minimize_service_video_to_voice"; + public static final String ACTION_MINIMIZE_SERVICE_OPEN_VIDEO = "com.isoftstone.cloundlink.minimize_service_open_video"; + public static final String ACTION_BOOK_CONF_FAILED = "com.isoftstone.cloundlink.conf.bookconffail"; + public static final String ACTION_CONF_CALL_FAILED = "com.isoftstone.cloundlink.conf.conf_call_failed"; + public static final String ACTION_GET_CONF_LIST_FAILED = "com.isoftstone.cloundlink.conf.get_conf_list_failed"; + public static final String ACTION_GET_CONF_LIST_NULL = "com.isoftstone.cloundlink.conf.get_conf_list_null"; + public static final String ACTION_JOIN_MEETING_OVERTIME = "com.huawei.join_meeting_overtime"; + + public static final String ACTION_CALL_GOING = "com.isoftstone.cloundlink.call.call_going"; + public static final String ACTION_CALL_COMING = "com.isoftstone.cloundlink.call.call_coming"; + public static final String ACTION_JOIN_ACCESS_VOICE_CONF_SUCCESS = "com.isoftstone.cloundlink.conf.join_access_voice_conf_success"; + public static final String ACTION_JOIN_ACCESS_VIDEO_CONF_SUCCESS = "com.isoftstone.cloundlink.conf.join_access_video_conf_success"; + + public static final String ACTION_CONF_AUDIT_DIR = "com.isoftstone.cloundlink.call.confauditdir"; + public static final String ACTION_HWCLOUDLINK_LOGOUT = "com.isoftstone.cloundlink.call.hwcloudlink.logout"; + public static final String ACTION_HWCLOUDLINK_WATCH_ATTENDEE = "com.isoftstone.cloundlink.call.hwcloudlink.watchattendee"; + public static final String ACTION_SCCHANGEREFRESH = "com.isoftstone.cloundlink.scchangerefresh"; + public static final String ACTION_NET_WORK_IS_CONNECT = "com.isoftstone.cloundlink.networkstate"; + public static final String ACTION_CLOSE_ACTIVITY = "com.isoftstone.cloundlink.closeactivity"; + public static final String ACTION_LOG_UPDATE = "com.isoftstone.cloundlink.loguploading"; + public static final String ACTION_NO_STREAM_DURATION = "com.isoftstone.cloundlink.nostreamduration"; + public static final String ACTION_NO_DURATION = "com.isoftstone.cloundlink.noduration"; + public static final String ACTION_JOIN_CONF_SUCESSS = "com.isoftstone.cloundlink.joinconfsuccess"; + public static final String ACTION_JOIN_CONF_SUCCESS_FINISH_SPONSOR = "com.isoftstone.cloundlink.joinconfsuccess__FINISH_SPONSOR"; + + public static final String ACTION_CALL_DEVICES_STATUS_CHANGE = "com.isoftstone.cloundlink.call.devices.status.change"; + public static final String ACTION_CALL_ROUTE_CHANGE = "com.isoftstone.cloundlink.call.route.change"; + public static final String ACTION_MUTESUCCESS_AND_UPDATEUI = "com.isoftstone.cloundlink.mutesuccessandupdateui"; + + public static final String ACTION_CHECKINRESULT = "com.isoftstone.cloundlink.checkinresult"; + + public static final String ACTION_BACK_TO_DESK = "com.isoftstone.cloundlink.backtodesk"; + public static final String ACTION_BACK_TO_APP = "com.isoftstone.cloundlink.backtoapp"; + public static final String ACTION_CHANGE_PWD_CLOSE = "com.isoftstone.cloundlink.changepwdclose"; + public static final String ACTION_START_BEFORE_SERVICE = "com.isoftstone.cloundlink.start_before_service"; + public static final String ACTION_STOP_BEFORE_SERVICE = "com.isoftstone.cloundlink.stop_before_service"; + + /** + * 接收到 服务端 网络状态 + * 0-5 0:最差 5:最好 + */ + public static final String ACTION_UPDATE_SERVER_NET_LEVEL = "com.isoftstone.cloundlink.UPDATE_SERVER_NET_LEVEL"; + /** + * 最小化停止共享 + */ + public static final String ACTION_AUX_STOP = "com.isoftstone.cloundlink.action_aux_stop"; + + public static final String ACTION_GET_USER_INFO_RESULT = "com.isoftstone.cloundlink.GetUserInfoResult"; + + public static final String ACTION_CONF_UPDATE_VMR_SUCCEED = "com.isoftstone.cloundlink.conf.updateVmrSucceed"; + + /** + * sim卡来电 + */ + public static final String ACTION_CALL_STATE_RINGING = "com.isoftstone.cloundlink.call_state_ringing"; + + /** + * 接听sim卡来电 + */ + public static final String ACTION_CALL_STATE_OFFHOOK = "com.isoftstone.cloundlink.call_state_offhook"; + + /** + * 挂断sim卡来电 + */ + public static final String ACTION_CALL_STATE_IDLE = "com.isoftstone.cloundlink.call_state_idle"; + public static final String ACTION_GET_SUBJECT_SUCCEED = "com.isoftstone.cloundlink.meeting_get_subject"; + + public static final String ACTION_HAS_HANDUP_MEMBER = "com.isoftstone.cloundlink.has_handup_member"; + + public static final String ACTION_CHANGE_SC = "com.isoftstone.cloundlink.change_sc"; + public static final String ACTION_SC = "com.isoftstone.cloundlink.sc"; + public static final String ACTION_AUX_FAILED = "com.isoftstone.cloundlink.aux_failed"; + public static final String ACTION_FLOAT_VISIBILITY = "com.isoftstone.cloundlink.float_visibility"; + public static final String ACTION_NEED_UPDATE_MUTE_STATE = "com.isoftstone.cloundlink.need_update_mute_state"; + /** + * 关闭辅流 + */ + public static final String ACTION_EVT_VIDEO_STOP = "com.isoftstone.cloundlink.evt_video_switch_notify"; + /** + * 会议锁定 + */ + public static final String ACTION_EVT_MEETING_LOCK = "com.isoftstone.cloundlink.evt_meeting_lock"; + + /** + * 入会会议密码验证 + */ + public static final String ACTION_VERIFY_CONF_PWD = "com.isoftstone.cloundlink.verify_conf_pwd"; + /** + * 入会会议密码查询 + */ + public static final String ACTION_QUERY_CONF_PWD = "com.isoftstone.cloundlink.query_conf_pwd"; + /** + * 会议字幕开关 + */ + public static final String ACTION_MEETING_SUBTITLE_SWITCH = "com.isoftstone.cloundlink.evt_meeting_subtitle_switch"; + /** + * 会议字幕列表 + */ + public static final String ACTION_EVT_MEETING_SUBTITLE_INFO = "com.isoftstone.cloundlink.evt_meeting_subtitle_info"; + /** + * 入会后会议字幕是否开启 + */ + public static final String ACTION_EVT_MEETING_SUBTITLE_ENABLE = "com.isoftstone.cloundlink.evt_meeting_subtitle_enable"; + /** + * 会控字幕开关状态 + */ + public static final String ACTION_EVT_MEETING_SUBTITLE_STATUS = "com.isoftstone.cloundlink.evt_meeting_subtitle_status"; + + /** + * 手机锁屏通知 + */ + public static final String ACTION_EVT_LOCK_SCREEN_NOTIFICATION = "com.isoftstone.cloundlink.evt_lock_screen_notification"; + + /** + * 取消会议通知 + */ + public static final String ACTION_REFRESH_MEETINGS_LIST = "com.isoftstone.cloundlink.refresh_meetings_list"; + + /** + * 会控通知 + */ + public static final String ACTION_CONF_CTRL_OPERATION_RESULT = "com.isoftstone.cloundlink.conf.ctrlOperation"; + + /** + * 与会者列表被动刷新的时候,SVC大画面 选看/点名/广播 所展示内容 + */ + public static final String ACTION_SPONSOR_MEETING_REFLUSHED = "sponsor_meeting_reflushed"; + + /** + * 广播取消 + */ + public static final String ACTION_SPONSOR_MEETING_BROAD_MEMBER_CANCEL = "sponsor_meeting_broad_member_cancel"; + + /** + * 会话类型变更刷新选看 + */ + public static final String ACTION_SESSION_MODIFIED_REFRESH = "session_modified_refresh"; + + public static final String ACTION_CONF_OPTION_SUCCESS = "com.isoftstone.cloundlink.conf.option.successs"; +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConfConstant.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConfConstant.java new file mode 100644 index 0000000..ed089e1 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConfConstant.java @@ -0,0 +1,224 @@ +package com.tenlionsoft.baselib.constant; + +/** + * This class is about conference module constants, unified management Meeting constants + * 会议模块常量类,统一管理会议常量 + */ +public class ConfConstant { + + public static final int PAGE_SIZE = 8; + + /** + * Book conference status. + */ + public enum BookConfStatus { + IDLE(), + INSTANT_BOOKING(), + RESERVED_BOOKING(), + } + + /** + * Conference convening status. + */ + public enum ConfConveneStatus { + UNKNOWN(), + SCHEDULE(), + CREATING(), + GOING(), + DESTROYED() + } + + /** + * participant status + */ + public enum ParticipantStatus { + IN_CONF(), + CALLING(), + JOINING(), + LEAVED(), + NO_EXIST(), + BUSY(), + NO_ANSWER(), + REJECT(), + CALL_FAILED(), + UNKNOWN() + } + + /** + * Meeting Message Distribution constants + */ + public enum CONF_EVENT { + BOOK_CONF_SUCCESS(), //预约会议成功 + BOOK_CONF_FAILED(), //预约会议失败 + + QUERY_CONF_LIST_SUCCESS(), //获取会议列表成功 + QUERY_CONF_LIST_NULL(), // 获取会议列表为空 + QUERY_CONF_LIST_FAILED(), //获取会议列表失败 + + GET_VMR_LIST_SUCCESS(), // 请求vmr列表成功 + GET_VMR_LIST_FAILED(), // 请求vmr列表失败 + + QUERY_CONF_DETAIL_SUCCESS(), //获取会议详情成功 + QUERY_CONF_DETAIL_FAILED(), //获取会议详情失败 + + JOIN_VOICE_CONF_SUCCESS(), + JOIN_VIDEO_CONF_SUCCESS(), + JOIN_CONF_FAILED(), + //JOIN_ACCESS_VOICE_CONF_SUCCESS(), + //JOIN_ACCESS_VIDEO_CONF_SUCCESS(), + + REQUEST_RIGHT_FAILED(), + + ADD_YOURSELF_FAILED(), + ADD_ATTENDEE_RESULT(), + DEL_ATTENDEE_RESULT(), + + MUTE_ATTENDEE_RESULT(), + UN_MUTE_ATTENDEE_RESULT(), + + MUTE_CONF_RESULT(), + UN_MUTE_CONF_RESULT(), + + LOCK_CONF_RESULT(), + UN_LOCK_CONF_RESULT(), + + START_RECORD_RESULT(), + STOP_RECORD_RESULT(), + + HAND_UP_RESULT(), + CANCEL_HAND_UP_RESULT(), + + REQUEST_CHAIRMAN_RESULT(), + RELEASE_CHAIRMAN_RESULT(), + + WILL_TIMEOUT(), + POSTPONE_CONF_RESULT(), + + SET_CONF_MODE_RESULT(), + GET_DATA_CONF_PARAM_RESULT(), + + WATCH_ATTENDEE_RESULT(), + BROADCAST_ATTENDEE_RESULT(), + CANCEL_BROADCAST_RESULT(), + + UPGRADE_CONF_RESULT(), + + SPEAKER_LIST_IND(), + STATE_UPDATE(), + + JOIN_DATA_CONF_RESULT(), + JOIN_DATA_CONF_LEAVE(), + JOIN_DATA_CONF_TERMINATE(), + START_DATA_CONF_SHARE(), + END_DATA_CONF_SHARE(), + + CAMERA_STATUS_UPDATE(), + + CONF_INCOMING_TO_CALL_INCOMING(),//会议来电转到呼叫来电 为了显示呼叫界面 + + LEAVE_CONF(), + + CONF_CHAT_MSG(), + + GET_TEMP_USER_RESULT(),//匿名会议临时账户结果 + + CALL_TRANSFER_TO_CONFERENCE(),//通话转会议,创会成功 + /** + * 获取会议主题成功 + */ + GET_SUBJECT_SUCCEED(), + UPDATE_VMR_SUCCEED(), // VMR更新成功 + REQUEST_PRESENTER_RESULT(), + CONF_HANG_UP_ATTENDEE(), + MUTESUCCESS_AND_UPDATEUI(), // 有噪声 + AUX_DATA_STATE(),//辅流状态 + AUX_DATA_SEND(),//辅流发送成功 + AUX_DATA_FAILED(),//辅流发送失败 + HAS_HANDUP_MEMBER(), // 有人举手 + CHANGE_SC(), // 转换SC + SCCHANGEREFRESH(), + BUTT(), + BAND_WATCH(), + NEED_UPDATE_STATE(), + // 入会密码验证 + VERIFY_CONF_PWD(), + // 入会密码查询 + QUERY_CONF_PWD(), + CONF_SUBTITLE_SWITCH(); + } + + /** + * Conference media type + */ + public enum ConfMediaType { + VOICE_CONF(), + VIDEO_CONF(), + VOICE_AND_DATA_CONF(), + VIDEO_AND_DATA_CONF() + } + + /** + * Conference role + */ + public enum ConfRole { + CHAIRMAN(), + ATTENDEE() + } + + /** + * Conference right + */ + public enum ConfRight { + MY_CREATE(), + MY_JOIN(), + MY_CREATE_AND_JOIN() + } + + /** + * Conference protocol type + */ + public enum ConfProtocol { + IDO_PROTOCOL(), + REST_PROTOCOL() + } + + /** + * Conference video mode + */ + public enum ConfVideoMode { + CONF_VIDEO_BROADCAST(), + CONF_VIDEO_VAS(), + CONF_VIDEO_FREE() + } + + /** + * 网络状态监听 + */ + public enum NETWORK { + WIFI_CONNECT(), + MOBILE_CONNECT(), + ALL_NOT_CONNECT(), + ALL_CONNECT() + } + + /** + * 预约会议结果码 + */ + public enum BookConfResult { + // 会议人数超过限制 + TSDK_E_CONF_ERR_PARAM_ERROR(67108866), + // 67108895 => 0x400001F TSDK_E_CONF_ERR_RESULT_NETWORK_ERROR 网络错误 + TSDK_E_CONF_ERR_RESULT_NETWORK_ERROR(67108895); + // 67108906 TSDK_E_CONF_ERR_RESULT_UNKNOWN 0x400002A 服务器返回未知错误 + + private int resultCode; + + BookConfResult(int resultCode) { + this.resultCode = resultCode; + } + + public int getResultCode() { + return resultCode; + } + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/Constant.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/Constant.java new file mode 100644 index 0000000..dde5eca --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/Constant.java @@ -0,0 +1,452 @@ +package com.tenlionsoft.baselib.constant; + + +import com.tenlionsoft.baselib.core.beans.SubtitleLanguage; + +public class Constant { + /** + * 主页面跳转 + */ + public static final int FRAGMENT_MEETING = 0; + public static final int FRAGMENT_CONTACTS = 1; + public static final int FRAGMENT_MINE = 2; + /** + * 会议设置 1 + */ + public static final int MEETING_SETTING_1 = 1; + public static final int MEETING_SETTING_2 = 2; + public static final int MEETING_SETTING_3 = 3; + /** + * 服务器设置 1 + */ + public static final int SERVER_SETTING_1 = 1; + /** + * 加入会议 1登录加入会议 + */ + public static final int JOIN_MEETING_1 = 1; + + /** + * 跳转本地通讯录,显示sheet页面 + */ + public static final int CONTACT_ADAPTER_LOCAL = 1; + + /** + * 企业通讯录 + */ + public static final int CONTACT_ADAPTER_COMPANY = 2; + + public static final int CONTACT_ADAPTER_MAIN = 3; + + public static final int INVITE_CONTACT = 4; + + public static final int CONTACT_ADAPTER_ADD = 5; + + public static final int INVITE_COMPANY_CONTACT = 6; + + public static final int CONTACT_RECENT_CALLS = 7; + + public static final String CONTACT_ADAPTER_ADD_content = "ldapContactsInfo"; + + public static final int VOICE_CONF_COMING = 1; + + /** + * 音频会议进行中 + */ + public static final int VOICE_CONF_ING = 2; + + /** + * 视频会议来电 + */ + public static final int CONF_VIDEO_COMING = 4; + + //点对点语音主叫 + public static final int POINT_CALL = 5; + //点对点语音被叫 + public static final int POINT_CALLED = 6; + //点对点视频已连接 + public static final int POINT_CONNECTED = 7; + //点对点视频主叫 + public static final int POINT_VIDEO = 8; + //点对点视频被叫 + public static final int POINT_VIDEOED = 9; + + public static final int VOICE_ACCESS_CONF_ING = 10; + + public static final int PIC_ADD = 20; + + public static final int PIC_DELETE = 21; + + //加入语音会议 + public static final int VOICE_LIST_JOIN = 11; + + /** + * 授权联系人被拒 + */ + public static final int MEETING_TYPE = 105; + public static final int UPDATE_VOICE = 10; + public static final String CONF_LIST_DATA = "conf_list_data"; + public static final int UPDATE_CONF_CONNECT = 12; + public static final int CALL_UPDATE_VOICE = 13; + public static final int UPDATE_CALL_CONNECT = 14; + public static final String CALLED_NAME = "called_name"; + public static final int CALL_VOICE_GOING = 15; + public static final int CALL_VIDEO_GOING = 16; + public static final String DIAL = "dial"; + public static final int VIDEO_CLOSE = 17; + public static final String VIDEO_CALL_NUM = "video_call_num"; + public static final int BOOK_CONF_LIST = 18; + public static final int ACTION_VIDEO_TO_AUDIO = 19; + public static final int CALL_UPGRADE_ACTION = 20; + public static final int OPEN_VIDEO = 21; + public static final int REFUSE_OPEN_VIDEO = 23; + + /** + * 单向直播 + */ + public static final int AUDIT_DIR = 101; + + + public static final int RECEIVED_MOBILE_CALL = 200; + + public static final int END_MOBILE_CALL = 201; + + /** + * 修改VMR密码错误码 + */ + public static final int UPDATE_VMR_PWD_ERROR_CODE2 = 67109102; + + /** + * 发起或预约会议修改VMR密码错误码 + */ + public static final int UPDATE_VMR_PWD_ERROR_CODE1 = 67109101; + + /** + * 发起或预约会议失败错误码 + */ + public static final int BOOK_MEETING_ERROR_CODE = 67109096; + + public static final String SHOW_NO_NET_DIALOG_INFO = "showNoNetDialogInfo"; + public static final String BOOK_CONF_LIST_DATA = "book_conf_list_data"; + public static final String INVITE_CONF_LIST_DATA = "invite_conf_list_data"; + public static final String VOICE_CALL_NUM = "voice_call_num"; + public static final String CONF_IS_COMING = "conf_is_coming"; + public static final int UPDATE_VIDEO_STATUS = 22; + public static final String CONF_IS_CONNECT = "conf_is_connect"; + public static final String LOGIN_SERVER_SIP_URL = "login_server_sip_url"; + public static final String UPD_TLS = "upd_tls"; + public static final String SIPNUMBER = "sipnumber"; + public static final String BFCP_TRANSPORT_MODE = "bfcpTransportMode"; + public static final String IS_OPEN_GM = "isOpenGm"; + public static final String IS_AGREE_RISK_GUEST_PWD_RANDOM_WARNING = "isAgreeRiskGuestPwdRandomWarning"; + public static final String IS_AGREE_RISK_PERSONAL_ID_WARNING = "isAgreeRiskPersonalId"; + public static final String IS_AGREE_RISK_CHAIRMAN_PWD_WARNING = "isAgreeRiskChairmanPwd"; + public static final String IS_AGREE_RISK_GUEST_PWD_WARNING = "isAgreeRiskGuestPwd"; + public static final int AUX_DATA = 25; + public static final String VMR_TITLE = "vir_title"; + public static final String VMR_ACCESSNUMBER = "vmr_acceddnumber"; + public static final String VMR_CHAIRMANPWD = "vmr_chairmanpwd"; + public static final String VMR_GUESTPWD = "vmr_guestpwd"; + public static final String VMR_CONF_ID = "vmr_conf_id"; + public static final String VMR_SIP_NUMBER = "vmr_sip_number"; + public static final String IS_FIRST_IN = "is_first_in"; + public static final String IS_FROM_SPALSH = "is_from_spalsh"; + public static final String ALL_TEXT = "all_text"; + public static final String WATCH_MEMBER = "watch_member"; //选看成员 + public static final String IS_WATCH_MEMBER = "is_watch_member"; //是否选看 + public static final String IS_BROAD_MEMBER = "is_broad_member"; //是否有广播 + public static final String IS_SVC_MEETING = "is_svc_meeting"; //是否是SVC会议 + public static final String IS_CLOSE_AUX = "is_close_aux";//开关控制共享的时候进自己应用关不关辅流 + public static final String IS_AUX = "isAuxData"; //是否有辅流 + public static final String IS_FROM_ATTENDEELIST = "is_from_attendeelist"; //是否有辅流 + public static final String ID = "id"; + public static final String MINE_USER_NAME = "mine_user_name"; + public static final String HOWL_AUTO_MUTE = "howl_auto_mute"; + public static final String CHOOSE_ARRAY = "choose_array"; + public static final String CHOOSE_POSITION = "choose_position"; + public static final String CHOOSE_TITLE = "choose_title"; + public static final String INITIATE_VMR = "initiate_vmr"; + public static final int CHOOSE_CODE1 = 10001; + public static final int CHOOSE_CODE2 = 10002; + public static final int CHOOSE_CODE_ZONE = 10003; + public static final String ACTION_HEADSET_PLUG = "action_headset_plug"; + //手动打开或者隐藏悬浮窗 + public static final String SPONSOR_MEETING_WATCH_MEMBER = "sponsor_meeting_watch_member";//选看成功 + /** + * 广播 + */ + public static final String SPONSOR_MEETING_BROAD_MEMBER = "sponsor_meeting_broad_member";//广播成功 + public static final String SPONSOR_MEETING_BROAD_MEMBER_CANCEL = "sponsor_meeting_broad_member_cancel";//广播取消 + /** + * 点名 + */ + public static final String SPONSOR_MEETING_ROLL_MEMBER = "sponsor_meeting_roll_member";//点名成功 + public static final String SPONSOR_MEETING_REFLUSHED = "sponsor_meeting_reflushed";//与会者列表被动刷新的时候,SVC大画面 选看/点名/广播 所展示内容 + public static final String MEETING_DESTORY = "meeting_destory"; //会议销毁 + /** + * 是否关闭摄像头 + */ + public static final String IS_CLOSE_VIDEO = "is_close_video"; // 是否关闭摄像头 + public static final String IS_MINIMIZE_CLICK = "is_minimize_click"; + public static final int REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = 102; + public static final String LDAP_CONTACTS_INFO = "ldapContact"; + public static final String IS_COLLECTION_CONTACT = "MailContact"; + public static final String IS_LOCAL_ADD_CONTACT = "LocalContact"; + public static final String CONTACTS_TYPE = "contacts_type"; + public static final String IS_VIBRATION = "is_vibration"; + public static final String IS_RECEIVING_RING = "is_receiving_ring"; + public static final String AUX = "aux"; + public static final boolean END_CALL = true; + + public static String LOGIN_ACCOUNT = "login_account"; + public static String ANONYMOUS = "anonymous"; + public static String SERVICE_TYPE = "service_type"; + public static String USER_TYPE = "user_type"; + public static String AUTH_TYPE = "auth_type"; + public static String IS_LOGOUT = "is_logout"; + public static String IS_NO_STREAM_DURATION = "is_no_steam_duration"; + public static String DEVICE_ID = "device_id"; + public static boolean IS_BACK_MINIMIZE = false; + public static boolean IS_SHOW_PARTICIPANTS = false; + + public static String DEFINITION_SETTING = "definition_setting"; + public static int WATCH_ATTENDEE_REQUEST_CODE = 1004; + + + // 与会者列表操作事件广播,用来通知会议界面 + public static String WATCH_MYSELF_CAMERA_STATE = "watch_myself_camera_state"; + /** + * 点对点 + */ + public static final int POP_CALL_VIDEO = 0x0101; + /** + * 主席 + */ + public static final int POP_IS_CHAIRMAN = 0x0111; + /** + * 非主席 + */ + public static final int POP_IS_NOT_CHAIRMAN = 0x1000; + /** + * 主席密码 + */ + public static final String MEETING_CHAIRMAN = "meeting_chairman"; + + public static final String SCREEN_OFF = "screen_off"; + + public static final int NAME_CHARACTER_LENGTH_192 = 192; + + /** + * 登录结果枚举类 + */ + public enum LoginUIEvent { + + VOIP_LOGIN_SUCCESS(), + + LOGIN_FAILED(), + + AUTH_FAILED(), + + FIREWALL_DETECT_FAILED(), + + BUILD_STG_FAILED(), + + LOGOUT(), + + FIRST_CHANGE_PWD(), + + CHANGE_PWD() + } + + /** + * 服务器登录地址 + */ + public static final String LOGIN_SERVER_ADDRESS = "login_server_address"; + + /** + * 服务器端口 + */ + public static final String LOGIN_SERVER_PORT = "login_server_port"; + + /** + * Https Port + */ + public static final String LOGIN_SERVER_HTTPSPORT = "login_server_httpsport"; + + /** + * 服务器地址是否变更 + */ + public static final String LOGIN_SERVER_CHANGE = "login_server_change"; + + /** + * 判断是否匿名链接入会 + */ + public static final String JOIN_MEETING_NOLOGIN = "join_meeting_nologin"; + /** + * 判断是否处于匿名链接入会中,此时不允许用户点击登录 + */ + public static final String JOIN_MEETING_NOLOGIN_ING = "join_meeting_nologin_ing"; + + /** + * 判断3.0日志是否正在上传状态(true正在上传,false非上传状态) + */ + public static final String FEEDBACK_UPDATE_3 = "feedback_update_3"; + + public static final String LOGIN_SERVER_SRTP_MODE = "login_server_srtp_mode"; + + public static final String IS_VIDEO_CONF = "is_video_conf"; + public static final String IS_AUTO_LOGIN = "is_auto_login"; + + public static final String CAMERAM_STATE = "camera_state"; + + public static final String CAMERA_INDEX = "camera_index"; + + public static final String CONF_ID = "conf_id"; + + public static final String IS_AUTO_JUMP = "isAutoJump"; + + public static final String MY_CONF_INFO = "my_conf_info"; + + public static String TEMP_CONF_INFO = ""; + + public static final String CONF_INFO = "conf_info"; + + public static final String IS_VMR_2_ID = "is_vmr_2.0_id"; + + public static final String IS_VMR_3_ID = "is_vmr_3.0_id"; + + public static final String CONF_TEMPORARY = "conf_temporary"; + + public static final String CALL_INFO = "call_info"; + + public static final String CALL_VIDEO_TO_VOICE = "call_video_to_voice"; + + public static final String LOGIN_SERVER_PROXY_SWITCH_STATE = "login_server_proxy_switch_state"; + + public static final String LOGIN_SERVER_SECRET_SWITCH_STATE = "login_server_secret_switch_state"; + + public static final String LOGIN_SERVER_TLS_MODE_SWITCH_STATE = "login_server_TLS_mode_switch_state"; + + public static final String SERVER_PORT = "5061"; + + /** + * 来宾密码开关标志 + */ + public static final String IS_GUEST_SWITCH_OPEN = "is_guest_switch_open"; + + /** + * 主席密码开关标志 + */ + public static final String IS_CHAIRMAN_SWITCH_OPEN = "is_chairman_switch_open"; + + /** + * 判断是否是Vmr标志 + */ + public static final String IS_VMR = "is_vmr"; + /** + * 判断是否修改密码 + */ + public static final String CHANGE_PWD = "change_pwd"; + /** + * 判断联系人图标索引 + */ + public static final String CONTACT_INDEX = "contact_index"; + + /** + * 判断联系人背景颜色所用 + */ + public static final String CONTACT_BG_COLOR_INDEX = "contact_bg_color_index"; + + /** + * 密码置空字符串 + */ + public static final String PASSWORD_NULL_STRING = ""; + + /** + * 空格字符串 + */ + public static final String SPACE_STRING = " "; + /** + * 广播action + */ + + public static final String BROADCAST_ACTION_STOP_SHARE = "action_stop_share"; + + /** + * 进入语音会议页面的type + * 1:语音会议来电通知 + * 2.语音会议进入页面 + * 3.点对点呼叫进入 + * 4.视频会议来电通知 + */ + public static final String VOICE_JOIN_TYPE = "VOICE_JOIN_TYPE"; + + /** + * 与会者枚举类 + */ + public enum ParticipantEvent { + + REQUEST_CHAIRMAN_SUCCESS(), + + REQUEST_CHAIRMAN_FAILED(), + + RELEASE_CHAIRMAN_FAILED(), + + RELEASE_CHAIRMAN_SUCCESS(), + } + + + /** + * 网络异常 提示最大值 [0,5] 0 :最差,5:最好 + */ + public static final int NET_LEVEL_MIN_TOAST = 3; + /** + * 网络 toast 间隔时间 单位: 毫秒 + */ + public static final int NET_LEVEL_MIN_TOAST_INTERVAL = 1 * 30 * 1000; + + /** + * 申请会议主席 result + */ + public static final String REQUEST_CHAIRMAN_SUCCESS = "result_action_request_chairman_success"; + + /** + * 记录2.0发起会议自己输入的主席密码,用来2.0申请主席使用 + */ + public static final String CHAIRMANPWD_SMC_2 = "chairmanpwd_smc_2"; + + /** + * 判断2.0是否是自己创建的会议 + */ + public static final String CREATE_MEETING_SMC_2 = "create_meeting_smc_2"; + + /** + * 关闭无码流弹框 + */ + public static final String NO_DURATION_DIALOG_CLOSE = "noduration_dialog_close"; + + public static boolean DownLoadDialogIsShow = false; + + public static final int MEETING_HIGH_SETTING_CODE = 10005; + + public static final String MEETING_HIGH_SETTING_VIDEO = "isVideo"; + + public static final String MEETING_HIGH_SETTING_AUDIO = "isAudio"; + + public static final String MEETING_HIGH_SETTING_SUBTITLE = "isSubtitle"; + + public static final String MEETING_HIGH_SETTING_SUBTITLE_LANGUAGE = "subtitle_language"; + + public static final String MEETING_HIGH_SETTING_TYPE_VIDEO = "isVideoConf"; + + public static final String MEETING_CAPTION_ENABLE = "isSubtitleEnable"; + + public static final String MEETING_CONF_CAPTION_ENABLE = "isConfSubtitleEnable"; + + public static final String MEETING_CONF_CAPTION_SHOWING = "isSubtitleShowing"; + + public static final SubtitleLanguage[] LANGUAGE_LIST_DATA = { + new SubtitleLanguage(1, "中文"), + new SubtitleLanguage(0, "English")}; + + public static final String MEETING_CONF_CONTROL_ENABLE = "isConfControlEnable"; +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConstantsV2.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConstantsV2.java new file mode 100644 index 0000000..54d8ffd --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/ConstantsV2.java @@ -0,0 +1,448 @@ +package com.tenlionsoft.baselib.constant; + +import android.os.Environment; + + +import com.tenlionsoft.baselib.app.BaseAppContext; +import com.tenlionsoft.baselib.core.beans.SubtitleLanguage; + +import java.io.File; + + +/** + * @Time: 2021/5/31 + * @Author: isoftstone + * @Description:页面相关常规 + */ +public class ConstantsV2 { + /*** + *魔法int值: + */ + public static final int NUMBER_0 = 0; + public static final int NUMBER_1 = 1; + public static final int NUMBER_2 = 2; + public static final int NUMBER_3 = 3; + public static final int NUMBER_4 = 4; + public static final int NUMBER_6 = 6; + public static final int NUMBER_7 = 7; + public static final int NUMBER_8 = 8; + public static final int NUMBER_10 = 10; + public static final int NUMBER_13 = 13; + public static final int NUMBER_15 = 15; + public static final int NUMBER_21 = 21; + public static final int NUMBER_30 = 30; + public static final int NUMBER_32 = 32; + public static final int NUMBER_127 = 127; + public static final int NUMBER_128 = 128; + public static final int NUMBER_192 = 192; + public static final int NUMBER_255 = 255; + public static final int NUMBER_256 = 256; + public static final int NUMBER_350 = 350; + public static final int NUMBER_500 = 500; + public static final int NUMBER_2000 = 2000; + + /** + * SplashActivityV2闪屏页相关常量 + */ + public static final String RINGING_FILE = "ringing.wav"; + public static final String RING_BACK_FILE = "ring_back.wav"; + public static final String BMP_FILE = "CameraBlack.BMP"; + public static final String CLOUNDLINK = "HWCloudLink"; + public static final String ANNOT_FILE = "annotImages"; + public static final int REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = 102; + + /** + * MainActivity页面相关常量 + */ + public static final String MAIN_SITE_URL = "site_url"; + public static final String MAIN_SITE_RANDOM = "random"; + /** + * 会议fragment tag + */ + public static final String MEETING_FRAGMENT = "meeting_fragment"; + /** + * 联系人fragment tag + */ + public static final String CONTACT_FRAGMENT = "contact_fragment"; + /** + * 我的fragment tag + */ + public static final String MINE_FRAGMENT = "mine_fragment"; + /** + * 会议索引 + */ + public static final int FRAGMENT_MEETING = 0; + /** + * 联系人索引 + */ + public static final int FRAGMENT_CONTACTS = 1; + /** + * 我的索引 + */ + public static final int FRAGMENT_MINE = 2; + + /** + * 邮箱正则表达式 + */ + public static final String EMAIL_REGULAR = + "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; + + /** + * 联系人添加方式 + */ + public static final String CONTACT_ADD_TYPE = "LocalContact"; + + /** + * 我的页面相关常量 + */ + public static final String USER_DISPLAY_NAME = "GetUserInfo_DisplayName"; + public static final String USER_TERMINAL = "GetUserInfo_Terminal"; + public static final String SYMBOL_AT = "@"; + + /** + * 查询会议列表结束时间,大于这个时间,底层时间转换失败 + */ + public static final String QUERY_END_TIME = "2037-12-31 23:59:59"; + + public static final int CONSTANTSV2_ZERO = 0; + public static final int CONSTANTSV2_ONE = 1; + public static final int CONSTANTSV2_TWO = 2; + public static final int CONSTANTSV2_THREE = 3; + public static final int CONSTANTSV2_FOUR = 4; + public static final int CONSTANTSV2_FIVE = 5; + public static final int CONSTANTSV2_SIX = 6; + public static final int CONSTANTSV2_SEVEN = 7; + public static final int CONSTANTSV2_EIGHT = 8; + public static final int CONSTANTSV2_NINE = 9; + public static final int CONSTANTSV2_TEN = 10; + /** + * 登录页面相关常量 + */ + public static final int PASSWORD_MAX_LENGTH = 32; + public static final int VIDEO_DEFINITION_POLICY = 2; + public static final int LOGIN_STATUS_CODE_255 = 255; + public static final int LOGIN_STATUS_CODE_5 = 5; + public static final String LOGIN_STATUS_CODE_0 = "0"; + public static final String LOGIN_STATUS_CODE_1 = "1"; + public static final String LOGIN_LOWER_BAR = "_"; + public static final int LOGIN_SERVER_PORT_5061 = 5061; + public static final int CERT_TYPE_1 = 1; + public static final int CERT_TYPE_2 = 2; + + /** + * 延迟处理时间相关常量 + */ + public static final int DELAY_MILLIS_100 = 100; + public static final int DELAY_MILLIS_500 = 500; + public static final int DELAY_MILLIS_600 = 600; + public static final int DELAY_MILLIS_1000 = 1000; + public static final int DELAY_MILLIS_1500 = 1500; + public static final int DELAY_MILLIS_2000 = 2000; + + /** + * 链接入会传递参数key + */ + public static final String KEY_SITE_URL = "site_url"; + public static final String KEY_RANDOM = "random"; + /** + * 本地存储帐号key + */ + public static final String KEY_ACCOUNT = "account"; + /** + * 本地账号存储文件名 + */ + public static final String PREFS_ACCOUNT = "prefs_account"; + /** + * 企业通讯录跳转参数key + */ + public static final String PARAM_ENTERPRISE_ADDRESS_BOOK = "param_enterprise_address_book"; + /** + * 搜索页面跳转参数key + */ + public static final String PARAM_SEARCH_CONTACT = "param_search_contact"; + + /** + * 隐私说明页面相关常量 + */ + public static final String PRIVACY_STATEMENT_CHINESE = "file:///android_asset/privacy.html"; + public static final String PRIVACY_STATEMENT_EN = "file:///android_asset/privacy_en.html"; + /** + * 登录设置页面相关常量 + */ + public static final String LOGIN_SET_BEFORE_LOGIN = "before_login"; + public static final String SERVER_PORT_5060 = "5060"; + public static final String SERVER_PORT_5061 = "5061"; + public static final String SERVER_HTTP_PORT_443 = "443"; + public static final int MAX_SERVER_PORT = 65535; + public static final String MAX_SERVER_PORT_STR = "65535"; + public static final int SERVER_ADDRESS_LENGTH = 256; + public static final int SERVER_PORT_LENGTH = 5; + /** + * 意见反馈页面相关常量 + */ + public static final String LOG_ZIP_FILES = Environment.getExternalStorageDirectory() + + "/Zip_CloudLink_Log/"; + public static final String LOG_OLD_FILES = Environment.getExternalStorageDirectory() + + "/CloudLink_Log"; + public static final String BMP_FILE_PATH = BaseAppContext.getInstance().getFilesDir() + + File.separator + BMP_FILE; + public static final String CLOUD_LINK_AUTHORITY = "com.isoftstone.cloundlink"; + public static final int REQUEST_CODE_CHOOSE_PHOTO_ALBUM = 233; + public static final int REQUEST_CODE_TAKE_PICTURE = 234; + public static final double LOG_MAX_SIZE = 600.0; + public static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd"; + public static final String CONTENT_LENGTH_LIMIT = "/200"; + public static final String STRING_NULL = "null"; + /** + * 设置新密码界面相关常量 + */ + public static final String RULE_COMMA = ","; + public static final String RULE_COLON = " "; + public static final String RULE_UPPERCASE_LETTER = ".*[A-Z]+.*"; + public static final String RULE_LOWER_CASE_LETTERS = ".*[a-z]+.*"; + public static final String RULE_DIGITAL = ".*[0-9]+.*"; + public static final String RULE_SPECIAL_CHARACTERS = + ".*[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!{}【】‘;:”“’。,、?\\\\\\\\]+.*"; + + /** + * 修改密码返回状态值: 系统不支持修改密码 + */ + public static final int CHANG_PWD_0X2000018 = 0x2000018; + /** + * 修改密码返回状态值: 旧密码错误 + */ + public static final int CHANG_PWD_0X2000019 = 0x2000019; + /** + * 修改密码返回状态值: 新密码长度非法 + */ + public static final int CHANG_PWD_0X200001A = 0x200001A; + /** + * 修改密码返回状态值: 新密码复杂度不满足要求 + */ + public static final int CHANG_PWD_0X200001B = 0x200001B; + /** + * 修改密码返回状态值: 新密码不能与最近旧密码相同 + */ + public static final int CHANG_PWD_0X200001C = 0x200001C; + /** + * 修改密码返回状态值: 新密码不能包含3个以上重复字符 + */ + public static final int CHANG_PWD_0X200001D = 0x200001D; + /** + * 修改密码返回状态值: 上次修改密码后5分钟内不能更新密码 + */ + public static final int CHANG_PWD_0X200001E = 0x200001E; + /** + * 修改密码返回状态值: 密码不能包含帐号或其逆序帐号 + */ + public static final int CHANG_PWD_0X200001F = 0x200001F; + /** + * 修改密码返回状态值: 新密码相较于旧密码至少要有两个不同的字符 + */ + public static final int CHANG_PWD_0X2000020 = 0x2000020; + /** + * 修改密码返回状态值: 用户名或者密码错误 + */ + public static final int CHANG_PWD_0X2000022 = 0x2000022; + /** + * 修改密码返回状态值: 用户已被锁定 + */ + public static final int CHANG_PWD_0X2000023 = 0x2000023; + /** + * 修改密码返回状态值: 新密码不能和旧密码相同 + */ + public static final int CHANG_PWD_0X2000035 = 0x2000035; + /** + * 修改密码返回状态值: 密码过于简单或不安全 + */ + public static final int CHANG_PWD_0X2000041 = 0x2000041; + + /** + * 增加40秒后自动隐藏dialog机制,避免服务端丢失某个请求结果 + */ + public static final long LOAD_OVER_TIME = 40; + + /** + * 清晰度设置:高清 + */ + public static final String VIDEO_DEFINITION_1 = "1"; + /** + * 清晰度设置:普清 + */ + public static final String VIDEO_DEFINITION_2 = "2"; + + /** + * 帮助与反馈页面传值 + */ + public static final String PARAMS_HELP_TITLE = "params_help_title"; + + /** + * 发起、加入会议 + */ + public static final String VIDEO = "_VIDEO"; + public static final String AUDIO = "_AUDIO"; + public static final String SUBTITLE = "_SUBTITLE"; + public static final String IS_VIDEO = "isVideo"; + public static final String IS_AUDIO = "isAudio"; + public static final String ACTION = "action"; + + /** + * 最大分钟,秒钟数 + */ + public static final int MAX_MINUTE_VALUE = 59; + /** + * 分钟数 + */ + public static final int MINUTE_VALUE = 60; + /** + * 会议显示最大小时数 + */ + public static final int MAX_HOUR_VALUE = 99; + + /** + * 会议字幕相关常量 + */ + public static final String MEETING_HIGH_SETTING_SUBTITLE = "isSubtitle"; + public static final String MEETING_HIGH_SETTING_SUBTITLE_LANGUAGE = "subtitle_language"; + public static final String MEETING_CAPTION_ENABLE = "isSubtitleEnable"; + public static final String MEETING_CONF_CAPTION_ENABLE = "isConfSubtitleEnable"; + public static final String MEETING_CONF_CAPTION_SHOWING = "isSubtitleShowing"; + /** + * 默认0值 + */ + public static final int ERO_VALUE = 0; + /** + * 默认北京时间时区 + */ + public static final String DEFAULT_TIME_ZONE_ID = "58"; + + /** + * SMC3.0 区分会议室和与会人 1 会议室 + */ + public static final String ATTENDEE_TYPE_CONF_ROOM = "1"; + + /** + * SMC3.0 区分会议室和与会人 5 与会人 + */ + public static final String ATTENDEE_TYPE_ATTENDEES = "5"; + /** + * 默认时区偏移值 + */ + public static final int DEFAULT_TIME_OFFSET = 28800000; + + /** + * 会议主题最大长度 + */ + public static final int SUBJECT_MAX_LENGTH = 64; + + /** + * 密码最小长度 + */ + public static final int PASSWORD_MIN_LENGTH = 6; + /** + * 3.0 预约会议人数限制512 + */ + public static final int BOOK_MAX_NUMBER_3 = 512; + /** + * 2.0 预约会议人数限制30 + */ + public static final int BOOK_MAX_NUMBER_2 = 30; + + /** + * 预约会议默认小时 + */ + public static final String MEETING_DEFAULT_TIME = "1 "; + + /** + * 是否视频会议 + */ + public static final String IS_VIDEO_CONF = "isVideoConf"; + /** + * 时区id + */ + public static final String TIME_ZINE_ID = "timeZoneId"; + /** + * 判断是否是Vmr标志 + */ + public static final String IS_VMR = "isVmr"; + /** + * 判断是否是Vmr开启标志 + */ + public static final String IS_SWITCH_VMR = "isSwitchVmr"; + /** + * 时区间隔时间 + */ + public static final String TIME_OFFSET = "timeOffset"; + + + public static final String MEETING_TYPE = "type"; + + /** + * 是否查询会议列表 + */ + public static final String IS_QUERY_MEETING_LIST = "isqueryMeetingList"; + + public static final SubtitleLanguage[] LANGUAGE_LIST_DATA = { + new SubtitleLanguage(1, "中文"), + new SubtitleLanguage(0, "English")}; + + /** + * 会议高级设置请求码 + */ + public static final int MEETING_HIGH_SETTING_CODE = 10005; + /** + * 会议管理员 + */ + public static final String CONF_ADMIN = "confAdmin"; + + /** + * 是否支持会议字幕 + */ + public static final String IS_SUPPORT_SUBTITLE = "_isSupportSubtitle"; + + /** + * 会议控制->与会人员相关 + */ + public static final int MEMBER_LIST_TYPE_MAIN = 0; + public static final int MEMBER_LIST_TYPE_SPEC = 1; + public static final int MEMBER_LIST_TYPE_NUM = 2; + public static final int MEMBER_LIST_TYPE_EN = 3; + public static final String MEMBER_LIST_SORT_FIRST = "-1"; + public static final String MEMBER_LIST_SORT_SECOND = "-2"; + public static final String MEMBER_LIST_SORT_THIRD = "-3"; + public static final String MEMBER_LIST_SORT_FOURTH = "-4"; + public static final String MEMBER_LIST_SORT_FIFTH = "-5"; + public static final String MEMBER_LIST_GENDER_3 = "3"; + public static final String MEMBER_LIST_GENDER_6 = "6"; + public static final String MEMBER_LIST_GENDER_7 = "7"; + public static final long MEMBER_LIST_LOAD_DELAY = 500L; + + /** + * 举手失败 + */ + public static final int PARTICIPANTS_ERROR_CODE_HAND_UP = 67109039; + + /** + * 申请主持人失败 + */ + public static final int PARTICIPANTS_ERROR_CODE_REQUEST_CHAIRMAN = 67109022; + + /** + * 申请主持人失败,需要密码 + */ + public static final int PARTICIPANTS_REQUEST_CHAIRMAN_NEED_PWD = 67109017; + + /** + * 联系人列表->联系人分组显示相关 + */ + public static final int CONTACT_LIST_TYPE_ITEM = 0; + public static final int CONTACT_LIST_TYPE_TITLE = 1; + public static final int CONTACT_LIST_TYPE_GROUP = 2; + public static final int CONTACT_LIST_TYPE_LOOK_MORE = 3; + public static final int CONTACT_LIST_TYPE_LOAD_MORE = 4; + public static final int CONTACT_LIST_FIRST_LOAD_LIMIT = 5; + public static final int CONTACT_LIST_LOAD_MAX_SIZE = 50; + public static final long CONTACT_LIST_LOAD_DELAY = 500L; + public static final long CONTACT_LIST_SEARCH_DELAY = 1000L; + public static final float CONTACT_LIST_FLOAT_0_5 = 0.5F; +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/LionActions.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/LionActions.java index 40cf345..b190d92 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/LionActions.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/LionActions.java @@ -18,6 +18,7 @@ public class LionActions { /*=========Action==========*/ public static final String ACTION_PUSH_MSG_ACTIVITY = "com.tenlionsoft.pushMsg";//隐式启动推送的activity + public static final String ACTION_CATEGORY_CALL = "android.intent.category.calllink"; public static final String ACTION_PUSH_MSG_DISPOSE = "com.tenlionsoft.pushMsgDispose";//处理推送过来的消息 public static final String ACTION_VOIP_RECEIVER = "com.tenlionsoft.action_";//socket广播 diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java index 253cc06..22deae2 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java @@ -2,6 +2,8 @@ package com.tenlionsoft.baselib.constant; import android.os.Environment; +import com.tenlionsoft.baselib.app.BaseAppContext; + import java.io.File; /** @@ -11,7 +13,7 @@ import java.io.File; */ public class PathConfig { - public static final String PROVIDER_URL = "content://com.tengshisoft.citygovernance";//内容提供者url + public static final String PROVIDER_URL = "content://com.tengshisoft.citygovernance.content_provider";//内容提供者url /*===========================================*/ @@ -35,9 +37,15 @@ public class PathConfig { public static final String ACTION_IS_UPLOAD_LOCATION = "com.sucstepsoft.city-governance.is.upload"; public static final String ACTION_STOP_LOCATION = "com.sucstepsoft.city-governance.stop_listener"; public static final String ACTION_START_LOCATION = "com.sucstepsoft.city-governance.start_listener"; - + public static final String ACTION_CALL_MSG = "com.tenlionsoft.call_msg"; + public static final String ACTION_NOTIFY_CONTACT_LOGIN = "com.tengshisoft.city-governance.notify_login";//通知对方登录 + public static final String ACTION_NOTIFY_CONTACT_LOGIN_SUCCESS = "com.tengshisoft.city-governance.notify_login_success";//对方登录成功 + public static final String ACTION_NOTIFY_CONTACT_LOGIN_FAIL = "com.tengshisoft.city-governance.notify_login_failed";//对方登录不成功 + public static final String ACTION_CALL_OTHER_NO_SUPPORT = "com.tengshisoft.city-governance.call_other_no_support";//对方手机不支持视频语音通话 + public static final String ACTION_USER_OFFLINE = "com.tengshisoft.city-governance.user_offline";//用户不在线 //=============================主页按钮模块类型=========================== public static final String SECRET = "CMXX_TOKEN_INFOS";//秘钥 + public static final String SOCKET_MSG_SECRET = "SocKEtsEcReT_KeY";//消息秘钥 public static final String PROJECT_NAME = "city-governance";/* ===项目名称==*/ public static final String PROJECT_NAME_CH = "智慧城市"; @@ -53,6 +61,7 @@ public class PathConfig { public static final String CITY_DEFAULT_NAME = "日喀则市"; public static final int CITY_DEFAULT_LEVEL = 3; public static final String DID_CITY_CODE = "640675";//日喀则市编码 + public static final boolean IS_SECRET = false;//websocket 是否信息是否加密 //包头坐标 109.926934,40.574501 //呼市坐标 40.823879 111.771815 @@ -176,6 +185,7 @@ public class PathConfig { public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_REPORT = "/modulecommon/activity/incidentReport";//事件上报 + public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_EDIT = "/modulecommon/activity/incidentEdit";//事件修改 public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_LOG = "/modulecommon/activity/incidentLog";//事件日志 public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_DONE = "/modulecommon/activity/incidentDone";//已办事件 public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_DETAIL = "/modulecommon/activity/incidentDetail";//事件详情 @@ -185,10 +195,19 @@ public class PathConfig { public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_HANDLE = "/modulecommon/activity/incidentHandle";//事件处理 public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_CHECK_LIST = "/modulecommon/activity/incidentCheckList";//事件核查 public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_CHECK_DETAIL = "/modulecommon/activity/incidentCheckDetail";//事件核查详情 + + public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_DEPT_SPECIAL = "/modulecommon/activity/incidentDeptSpecial";//部门端特殊事件 预警和超时 + public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_DEPT_TIME_OUT = "/modulecommon/fragment/incidentDeptTimeOut";//部门端超时事件 + public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_DEPT_EARLY_WARN = "/modulecommon/fragment/incidentDeptEarlyWarn";//部门端预警事件 + public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_CENTER_SPECIAL = "/modulecommon/activity/incidentCenterSpecial";//中心端特殊事件 预警和超时 public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_CENTER_TIME_OUT = "/modulecommon/fragment/incidentCenterTimeOut";//中心端超时事件 public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_CENTER_EARLY_WARN = "/modulecommon/fragment/incidentCenterEarlyWarn";//中心端预警事件 + public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_OVERSEE = "/modulecommon/activity/incidentOversee";//事件督办 + public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_OVERSEE_MINE = "/modulecommon/fragment/incidentOverseeMine";//我发起的督办消息 + public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_OVERSEE_BY = "/modulecommon/fragment/incidentByOversee";//我被督办的消息 + public static final String PATH_MODULE_COMMON_ACTIVITY_INCIDENT_OVERSEE_DETAIL = "/modulecommon/activity/incidentOverseeDetail";//督办详情 public static final String PATH_MODULE_COMMON_ACTIVITY_GRID_STATISTICS = "/modulecommon/activity/gridStatistics";//统计分析 public static final String PATH_MODULE_COMMON_ACTIVITY_DEPT_STATISTICS = "/modulecommon/activity/deptStatistics";//统计分析 @@ -211,6 +230,7 @@ public class PathConfig { public static final String PATH_MODULE_COMMON_FRAGMENT_KNOW_LEDGE_DEPT = "/modulecommon/fragment/knowLedgeDept";//部门端知识库 + public static final String PATH_MODULE_COMMON_FRAGMENT_SMART_CONSULT = "/modulecommon/fragment/smartConsult";//智能咨询 public static final String PATH_MODULE_COMMON_ACTIVITY_KNOWLEDGE_LIBRARY_ASK_ADD = "/modulecommon/activity/knowLedgeAskAdd";//知识索要发起 public static final String PATH_MODULE_COMMON_ACTIVITY_KNOWLEDGE_LIBRARY_ASK_EDIT = "/modulecommon/activity/knowLedgeAskEdit";//知识索要编辑 public static final String PATH_MODULE_COMMON_ACTIVITY_KNOWLEDGE_LIBRARY_ASK_DETAIL = "/modulecommon/activity/knowLedgeAskDetail";//知识索要详情 @@ -480,5 +500,4 @@ public class PathConfig { public static final String PATH_MODULE_SUPERVISION_INCIDENT_CHECK_LIST = "/modulesupervision/activity/incidentDeptList";//事件核查 public static final String PATH_MODULE_SUPERVISION_INCIDENT_CHECK_DETAIL = "/modulesupervision/activity/incidentDeptListDetail";//事件核查详情 - } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PermissionConstants.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PermissionConstants.java index f649a90..d71bfb2 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PermissionConstants.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PermissionConstants.java @@ -3,11 +3,16 @@ package com.tenlionsoft.baselib.constant; import android.Manifest; import android.Manifest.permission; import android.annotation.SuppressLint; +import android.content.Context; + +import com.tenlionsoft.baselib.R; import androidx.annotation.StringDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.List; @SuppressLint("InlinedApi") @@ -87,4 +92,56 @@ public final class PermissionConstants { } return new String[]{permission}; } + public static final int REQUEST_CODE_STORAGE = 101; + public static final int REQUEST_CODE_RECORD_AUDIO = 102; + public static final int REQUEST_CODE_CAMERA = 103; + public static final int REQUEST_CODE_PHONE_STATE = 104; + public static final int REQUEST_CODE_MULTI = 107; + public static final String WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE; + public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE; + public static final String RECORD_AUDIO = Manifest.permission.RECORD_AUDIO; + public static final String READ_PHONE_STATE = Manifest.permission.READ_PHONE_STATE; + + + @SuppressWarnings("unused") + public static List getPermissionRes(Context context, String[] permissions) { + List res = new ArrayList<>(); + for (String permission : permissions) { + switch (permission) { + case WRITE_EXTERNAL_STORAGE: + case READ_EXTERNAL_STORAGE: + String storage = context.getString(R.string.cloudLink_permission_storage); + if (res.indexOf(storage) < 0) { + res.add(storage); + } + break; + case RECORD_AUDIO: + res.add(context.getString(R.string.cloudLink_permission_recordAudio)); + break; + case CAMERA: + res.add(context.getString(R.string.cloudLink_permission_camera)); + break; + case READ_PHONE_STATE: + res.add(context.getString(R.string.cloudLink_permission_phoneState)); + break; + } + } + return res; + } + + public static String getPermissionRes(Context context, String permission) { + switch (permission) { + case WRITE_EXTERNAL_STORAGE: + case READ_EXTERNAL_STORAGE: + return context.getString(R.string.cloudLink_permission_storage); + case RECORD_AUDIO: + return context.getString(R.string.cloudLink_permission_recordAudio); + case CAMERA: + return context.getString(R.string.cloudLink_permission_camera); + case READ_PHONE_STATE: + return context.getString(R.string.cloudLink_permission_phoneState); + default: + return ""; + } + } } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/StatusCode.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/StatusCode.java index 0e6900a..f241521 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/StatusCode.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/StatusCode.java @@ -29,13 +29,21 @@ public class StatusCode { public static final int MSG_TYPE_AUDIO = 2005;//聊天消息 音频 public static final int MSG_TYPE_VIDEO = 2006;//聊天消息 视频 - // + public static final int MSG_STATE_USER_OFFLINE_TXT = 411;//发送文本消息用户不在线 + public static final int MSG_STATE_USER_OFFLINE_CALL = 412;//发送实时语音用户不在线 + + public static final int MSG_TYPE_NOTIFY_LOGIN = 11002;//通知对方登录 华为实时通讯呼叫 + public static final int MSG_TYPE_USER_NO_SUPPORT = 11401;//华为实时通讯呼叫不支持 + public static final int MSG_TYPE_USER_LOGIN_FAILED = 11402;//华为实时通讯呼叫登录失败 + public static final int MSG_TYPE_USER_LOGIN_SUCCESS = 11201;//华为实时通讯呼叫登录成功 + public static final int MSG_TYPE_NOTIFY_LOGOUT = 11403;//通知对方退出登录 + + public static final int MSG_TYPE_POINT = 11001;//发送定位信息 public static final int MSG_NOTICE = 3001;//系统通知 public static final int MSG_CHAT = 232432;//聊天信息 public static final int MSG_NOTICE_TARGET = 3003;//系统带参数的通知 public static final int MSG_TYPE_STATE = 9001;//消息发送的状态 - public static final int MSG_GROUP_MESSAGE = 102; public static final int MSG_SYSTEM_MESSAGE = 103; public static final int MSG_SYSTEM_GROUP_MESSAGE = 104; @@ -51,4 +59,5 @@ public class StatusCode { public static final String KEY_MSG_FROM = "msgBody"; public static final String KEY_UPCOMING_SYS_DATA = "upcomingMsgSys"; public static final String PUSH_DATA_KEY = "pushDataKey";//websocket推送过来的消息 key + } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/CameraEntity.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/CameraEntity.java new file mode 100644 index 0000000..093e814 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/CameraEntity.java @@ -0,0 +1,139 @@ +package com.tenlionsoft.baselib.core.beans; + +import java.io.Serializable; + +/** + * This class is about camera + * 摄像头实体类 + */ +public class CameraEntity implements Serializable +{ + /** + * camera status + * 摄像头状态 + */ + public static final int CAMERA_STATUS_CLOSED = 0; + public static final int CAMERA_STATUS_OPENED = 1; + public static final int CAMERA_STATUS_RESUMED = 2; + public static final int CAMERA_STATUS_PAUSED = 4; + + /** + * camera index + * 摄像头索引 + */ + private int index; + + /** + * device ID + * 设备id + */ + private long deviceID; + + /** + * device name + * 设备名称 + */ + private String deviceName; + + /** + * user ID + * 用户id + */ + private long userID; + + /** + * device status + * 设备状态 + */ + private int deviceStatus; + + /** + * camera status + * 摄像头状态 + */ + private int cameraStatus = CAMERA_STATUS_CLOSED; + + + public int getIndex() + { + return index; + } + + public void setIndex(int index) + { + this.index = index; + } + + public long getDeviceID() + { + return deviceID; + } + + public void setDeviceID(long deviceID) + { + this.deviceID = deviceID; + } + + public String getDeviceName() + { + return deviceName; + } + + public void setDeviceName(String deviceName) + { + this.deviceName = deviceName; + } + + public long getUserID() + { + return userID; + } + + public void setUserID(long userID) + { + this.userID = userID; + } + + public int getDeviceStatus() + { + return deviceStatus; + } + + public void setDeviceStatus(int deviceStatus) + { + this.deviceStatus = deviceStatus; + } + + public int getCameraStatus() + { + return cameraStatus; + } + + public void setCameraStatus(int cameraStatus) + { + this.cameraStatus = cameraStatus; + } + + @Override + public boolean equals(Object o) + { + if (null != o){ + if (o instanceof CameraEntity){ + CameraEntity cameraEntity = (CameraEntity) o; + return deviceID == cameraEntity.getDeviceID(); + }else { + return false; + } + + }else { + return false; + } + + } + + @Override + public int hashCode() + { + return (int) deviceID; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/Member.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/Member.java new file mode 100644 index 0000000..2d255b6 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/Member.java @@ -0,0 +1,568 @@ +package com.tenlionsoft.baselib.core.beans; + + +import com.huawei.ecterminalsdk.base.TsdkAttendee; +import com.huawei.ecterminalsdk.base.TsdkAttendeeBaseInfo; +import com.huawei.ecterminalsdk.base.TsdkAttendeeStatusInfo; +import com.huawei.ecterminalsdk.base.TsdkConfParticipantStatus; +import com.huawei.ecterminalsdk.base.TsdkConfRole; +import com.tenlionsoft.baselib.constant.ConfConstant; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * This method is used to conf member info. + * 与会者信息 + */ +public class Member implements Serializable { + + // 与会者列表排序字段 + private String sort; + + /** + * SMC3.0 会议室必传字段 + */ + private String tpSpeed; + + /** + * SMC3.0 区分会议室和与会人 + */ + private String attendeeType; + + /** + * 与会者号码 + */ + private String number; + /** + * 与会者标识 + */ + private int userId; + /** + * 是否选看 + */ + private boolean isWatching = false; + + + /** + * 组织名称 + */ + private String organizationName; + + /** + * 与会人用户绑定的终端 + */ + private String uri; + + /** + * 终端类型 + */ + private String terminalType; + + public String getTerminalType() { + return terminalType; + } + + public void setTerminalType(String terminalType) { + this.terminalType = terminalType; + } + + public String getOrganizationName() { + return organizationName; + } + + public void setOrganizationName(String organizationName) { + this.organizationName = organizationName; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + private boolean isOpenCamera = true; + + public String getAttendeeType() { + return attendeeType; + } + + public void setAttendeeType(String attendeeType) { + this.attendeeType = attendeeType; + } + + public String getTpSpeed() { + return tpSpeed; + } + + public void setTpSpeed(String tpSpeed) { + this.tpSpeed = tpSpeed; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + /** + * 来电姓名 + */ + private String displayName; + + /** + * email + * 邮箱 + */ + private String email; + + /** + * email + * 邮箱 + */ + private String mobile; + + + /** + * SMS + */ + private String sms; + + /** + * 帐号 + */ + private String accountId; + + /** + * 与会者状态 + */ + private ConfConstant.ParticipantStatus status; + + /** + * 与会者角色 + */ + private TsdkConfRole role; + + /** + * 是否静音 + */ + private boolean isMute; + + /** + * 是否举手 + */ + private boolean isHandUp; + + /** + * 是否申请发言 + */ + private boolean isReqTalk; + + /** + * 是否已在数据会议中 + */ + private boolean inDataConference; + + /** + * 是否是主席 + */ + private boolean isHost; + + /** + * 是否主讲人 + */ + private boolean isPresent; + + /** + * 用户id + */ + private long dataUserId; + + /** + * 与会者id + */ + private String participantId; + + /** + * 是否是自己 + */ + private boolean isSelf; + + /** + * 是否自动邀请 + */ + private boolean isAutoInvite; + + /** + * 是否广播自己 + */ + private boolean isBroadcastSelf; + /** + * 是否语音入会 + */ + private boolean isAudio; + + /** + * 摄像头列表 + */ + private List cameraEntityList = new ArrayList<>(); + /** + * 点名 + */ + private boolean rollCall = false; + + private int decodeSsrc; + + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public boolean isRollCall() { + return rollCall; + } + + public void setRollCall(boolean rollCall) { + this.rollCall = rollCall; + } + + public Member() { + + } + + public Member(String number, String accountId, TsdkConfRole role, String displayName) { + this.number = number; + this.accountId = accountId; + this.role = role; + this.displayName = displayName; + } + + public boolean isWatching() { + return isWatching; + } + + public void setWatching(boolean watching) { + isWatching = watching; + } + + public Member(String number) { + this.number = number; + } + + public boolean isReqTalk() { + return isReqTalk; + } + + public void setReqTalk(boolean reqTalk) { + isReqTalk = reqTalk; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getDisplayName() { + if ((displayName == null) || (displayName.equals(""))) { + return number; + } + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getSms() { + return sms; + } + + public void setSms(String sms) { + this.sms = sms; + } + + public String getAccountId() { + return accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } + + public boolean isMute() { + return isMute; + } + + public void setMute(boolean mute) { + isMute = mute; + } + + public boolean isAutoInvite() { + return isAutoInvite; + } + + public void setAutoInvite(boolean autoInvite) { + isAutoInvite = autoInvite; + } + + public boolean isBroadcastSelf() { + return isBroadcastSelf; + } + + public void setBroadcastSelf(boolean broadcastSelf) { + isBroadcastSelf = broadcastSelf; + } + + public TsdkConfRole getRole() { + return role; + } + + public void setRole(TsdkConfRole role) { + this.role = role; + } + + public void setIsAudio(boolean audio) { + isAudio = audio; + } + + public boolean getIsAudio() { + return isAudio; + } + + + public boolean isHandUp() { + return isHandUp; + } + + public void setHandUp(boolean handUp) { + isHandUp = handUp; + } + + + public ConfConstant.ParticipantStatus getStatus() { + return status; + } + + public void setStatus(ConfConstant.ParticipantStatus status) { + this.status = status; + } + + public boolean isSelf() { + return isSelf; + } + + public void setSelf(boolean self) { + isSelf = self; + } + + + public List getCameraEntityList() { + return cameraEntityList; + } + + public void setCameraEntityList(List cameraEntityList) { + this.cameraEntityList = cameraEntityList; + } + + public void replaceCamera(CameraEntity cameraEntity) { + int index = cameraEntityList.indexOf(cameraEntity); + if (index == -1) { + cameraEntityList.add(cameraEntity); + } else { + cameraEntityList.set(index, cameraEntity); + } + } + + public void updateCamera(long deviceID, int status) { + for (CameraEntity cameraEntity : cameraEntityList) { + if (cameraEntity.getDeviceID() == deviceID) { + cameraEntity.setCameraStatus(status); + return; + } + } + } + + public CameraEntity getOpenedCamera() { + for (CameraEntity cameraEntity : cameraEntityList) { + if (cameraEntity.getCameraStatus() == CameraEntity.CAMERA_STATUS_OPENED) { + return cameraEntity; + } + } + return null; + } + + public boolean isHost() { + return isHost; + } + + public void setHost(boolean host) { + isHost = host; + } + + public boolean isPresent() { + return isPresent; + } + + public void setPresent(boolean present) { + this.isPresent = present; + } + + public boolean isInDataConference() { + return inDataConference; + } + + public void setInDataConference(boolean inDataConference) { + this.inDataConference = inDataConference; + } + + public long getDataUserId() { + return dataUserId; + } + + public void setDataUserId(long dataUserId) { + this.dataUserId = dataUserId; + } + + + public String getParticipantId() { + return participantId; + } + + public void setParticipantId(String participantId) { + this.participantId = participantId; + } + + public void update(TsdkAttendee attendeeInfo) { + TsdkAttendeeStatusInfo attendeeStatusInfo = attendeeInfo.getStatusInfo(); + TsdkAttendeeBaseInfo attendeeBaseInfo = attendeeInfo.getBaseInfo(); + setParticipantId(attendeeStatusInfo.getParticipantId()); + setNumber(attendeeBaseInfo.getNumber()); + setDisplayName(attendeeBaseInfo.getDisplayName()); + setAccountId(attendeeBaseInfo.getAccountId()); + setEmail(attendeeBaseInfo.getEmail()); + setSms(attendeeBaseInfo.getSms()); + setMute(attendeeStatusInfo.getIsMute() == 1); + setHandUp(attendeeStatusInfo.getIsHandup() == 1); + setReqTalk(attendeeStatusInfo.getIsReqTalk() == 1); + TsdkConfRole role = (TsdkConfRole.enumOf(attendeeBaseInfo.getRole())); + setRole(role); + setBroadcastSelf(attendeeStatusInfo.getIsBroadcast() == 1); + TsdkConfParticipantStatus participantStatus = TsdkConfParticipantStatus.enumOf(attendeeStatusInfo.getState()); + if (participantStatus != null) { + setStatus(convertConfctrlParticipantStatus(participantStatus)); + } + + setSelf((attendeeStatusInfo.getIsSelf() == 1)); + setInDataConference(attendeeStatusInfo.getIsJoinDataconf() == 1); + setPresent(attendeeStatusInfo.getIsPresent() == 1); + + } + public ConfConstant.ParticipantStatus convertConfctrlParticipantStatus(TsdkConfParticipantStatus state) { + ConfConstant.ParticipantStatus status = ConfConstant.ParticipantStatus.UNKNOWN; + switch (state) { + case TSDK_E_CONF_PARTICIPANT_STATUS_IN_CONF: + status = ConfConstant.ParticipantStatus.IN_CONF; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_CALLING: + status = ConfConstant.ParticipantStatus.CALLING; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_JOINING: + status = ConfConstant.ParticipantStatus.JOINING; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_LEAVED: + status = ConfConstant.ParticipantStatus.LEAVED; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_NO_EXIST: + status = ConfConstant.ParticipantStatus.NO_EXIST; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_BUSY: + status = ConfConstant.ParticipantStatus.BUSY; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_NO_ANSWER: + status = ConfConstant.ParticipantStatus.NO_ANSWER; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_REJECT: + status = ConfConstant.ParticipantStatus.REJECT; + break; + + case TSDK_E_CONF_PARTICIPANT_STATUS_CALL_FAILED: + status = ConfConstant.ParticipantStatus.CALL_FAILED; + break; + + default: + break; + } + return status; + } + public boolean isOpenCamera() { + return isOpenCamera; + } + + public void setOpenCamera(boolean openCamera) { + isOpenCamera = openCamera; + } + + public int getDecodeSsrc() { + return decodeSsrc; + } + + public void setDecodeSsrc(int decodeSsrc) { + this.decodeSsrc = decodeSsrc; + } + + @Override + public int hashCode() { + return number.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if ((obj == null) || (obj.getClass() != this.getClass())) { + return false; + } + + Member member = (Member) obj; + + return member.number.equals(this.number); + } + +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/SubtitleLanguage.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/SubtitleLanguage.java new file mode 100644 index 0000000..168de3a --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/SubtitleLanguage.java @@ -0,0 +1,30 @@ +package com.tenlionsoft.baselib.core.beans; + +/** + * 字幕源语言实体类 + */ +public class SubtitleLanguage { + private int id; + private String name; + + public SubtitleLanguage(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/listener/ScreenListener.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/listener/ScreenListener.java new file mode 100644 index 0000000..251e302 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/listener/ScreenListener.java @@ -0,0 +1,110 @@ +package com.tenlionsoft.baselib.core.listener; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.PowerManager; + +/** + * @Time: 2021/8/2 + * @Author: isoftstone + * @Description:屏幕状态监听器 + */ +public class ScreenListener { + private final Context mContext; + private final ScreenBroadcastReceiver mScreenReceiver; + private ScreenStateListener mScreenStateListener; + + public ScreenListener(Context context) { + mContext = context; + mScreenReceiver = new ScreenBroadcastReceiver(); + } + + /** + * screen状态广播接收者 + */ + private class ScreenBroadcastReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Intent.ACTION_SCREEN_ON.equals(action)) { + // 开屏 + mScreenStateListener.onScreenOn(); + } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { + // 锁屏 + mScreenStateListener.onScreenOff(); + } else if (Intent.ACTION_USER_PRESENT.equals(action)) { + // 解锁 + mScreenStateListener.onUserPresent(); + } + } + } + + /** + * 开始监听screen状态 + * + * @param listener 监听器 + */ + public void begin(ScreenStateListener listener) { + mScreenStateListener = listener; + registerListener(); + getScreenState(); + } + + /** + * 获取screen状态 + */ + private void getScreenState() { + PowerManager manager = (PowerManager) mContext + .getSystemService(Context.POWER_SERVICE); + if (manager.isInteractive()) { + if (mScreenStateListener != null) { + mScreenStateListener.onScreenOn(); + } + } else { + if (mScreenStateListener != null) { + mScreenStateListener.onScreenOff(); + } + } + } + + /** + * 停止screen状态监听 + */ + public void unregisterListener() { + mContext.unregisterReceiver(mScreenReceiver); + } + + /** + * 启动screen状态广播接收器 + */ + private void registerListener() { + IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_SCREEN_ON); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_USER_PRESENT); + mContext.registerReceiver(mScreenReceiver, filter); + } + + /** + * 返回给调用者屏幕状态信息 + */ + public interface ScreenStateListener { + /** + * 开屏 + */ + void onScreenOn(); + + /** + * 锁屏 + */ + void onScreenOff(); + + /** + * 解锁 + */ + void onUserPresent(); + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java index 83df0a4..a9a73f2 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java @@ -18,6 +18,7 @@ public class BaseUrlApi { public static final String SYS_SECURITY = "systembase/";/*社会治安*/ public static final String SYS_TASK = "systemtask/";/*任务系统*/ public static final String SYS_LIBRARY = "library/";/*知识库系统*/ + public static final String SYS_VISITS = "systemvisits/";/*信访系统*/ public static final String TEMP_IP = "http://192.168.0.120:8080/"; public static final String BASE_MAIN_IP = IP + SYS_USERCENTER; @@ -26,7 +27,8 @@ public class BaseUrlApi { public static final String BASE_HOUSE_IP = "http://192.168.0.111:8083/" + SYS_HOUSE; public static final String BASE_LIBRARY_IP = "http://192.168.0.109:9000/" + SYS_LIBRARY; public static final String BASE_PERSON_IP = "http://192.168.0.109:8080/" + SYS_POPULATION; - public static final String BASE_TASK_IP = "http://192.168.0.0.111:8080/" + SYS_TASK; + public static final String BASE_TASK_IP = "http://192.168.0.111:8080/" + SYS_TASK; + public static final String BASE_VISITS = "http://192.168.0.111:8084/" + SYS_VISITS; public static final String BASE_URL = BASE_MAIN_IP;//基础URL public static final String SOCKET_IP = "http://192.168.0.155:1991/websocket";/*SocketIP*/ @@ -46,4 +48,8 @@ public class BaseUrlApi { public static final int CAMERA_REQUEST_VIDEO = 0x2223;//相机视频 public static final int CAMERA_REQUEST_PHOTO = 0x2224;//相册视频 + + public static final int HW_CLOUD_PORT = 5061; + public static final String HW_CLOUD_URL = "123.60.231.50"; + public static final String SMART_CONSULT_URL = "https://www.cispirit.com/IntelligentConsulting"; } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/RetrofitManager.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/RetrofitManager.java index 7c88445..5c167c3 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/RetrofitManager.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/RetrofitManager.java @@ -20,7 +20,7 @@ public class RetrofitManager { /** * 超时时间 */ - public static final int TIMEOUT = 60; + public static final int TIMEOUT = 2; private static volatile RetrofitManager mInstance; private Retrofit mRetrofit; @@ -57,9 +57,9 @@ public class RetrofitManager { private OkHttpClient.Builder getOkBuilder() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); // 设置超时 - builder.connectTimeout(TIMEOUT, TimeUnit.SECONDS); - builder.readTimeout(TIMEOUT, TimeUnit.SECONDS); - builder.writeTimeout(TIMEOUT, TimeUnit.SECONDS); + builder.connectTimeout(TIMEOUT, TimeUnit.MINUTES); + builder.readTimeout(TIMEOUT, TimeUnit.MINUTES); + builder.writeTimeout(TIMEOUT, TimeUnit.MINUTES); //封装公共参数 builder.addInterceptor(new AreaInterceptor()); //builder.addInterceptor(new CommInterceptor()); diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/conver/BaseUrlInterceptor.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/conver/BaseUrlInterceptor.java index b571102..84239d7 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/conver/BaseUrlInterceptor.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/conver/BaseUrlInterceptor.java @@ -2,8 +2,6 @@ package com.tenlionsoft.baselib.core.retrofit_net.conver; import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; -import com.tenlionsoft.baselib.utils.LogUtils; -import com.tenlionsoft.baselib.utils.UserLgUtils; import java.io.IOException; import java.util.List; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java index 3434795..9700863 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java @@ -23,6 +23,7 @@ import android.text.TextWatcher; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; +import android.view.MotionEvent; import android.view.TouchDelegate; import android.view.View; import android.view.ViewGroup; @@ -114,6 +115,7 @@ public abstract class BaseActivity extends AppCompatActivity { protected AfxTextView mTvSearchBack; private boolean mIsExpand;//搜索框是否展开 + @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -513,6 +515,24 @@ public abstract class BaseActivity extends AppCompatActivity { hideSoftKeyboard(getCurrentFocus()); } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (ev.getAction() == MotionEvent.ACTION_DOWN) { + View v = getCurrentFocus(); + if (v != null) { + InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (im != null) { + im.hideSoftInputFromWindow(v.getWindowToken(), 0); + } + } + return super.dispatchTouchEvent(ev); + } + if (getWindow().superDispatchTouchEvent(ev)) { + return true; + } + return onTouchEvent(ev); + } + public void hideSoftKeyboard(View view) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (view != null) { diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseFragment.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseFragment.java index 251e3fa..8f4a85a 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseFragment.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseFragment.java @@ -14,6 +14,7 @@ import android.widget.TextView; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.LogUtils; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java new file mode 100755 index 0000000..9376426 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java @@ -0,0 +1,176 @@ +package com.tenlionsoft.baselib.core.widget.views; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.RadioGroup; + +import com.bigkoo.pickerview.view.TimePickerView; +import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.R; + +import java.text.SimpleDateFormat; + + +/** + * 作者 : Adam on 2018/7/23. + * 邮箱 : itgaojian@163.com + * 描述 : 时间加输入 + */ +public class CenterInputChooseView extends Dialog { + + private boolean iscancelable; + private boolean isBackCancelable; + private View view; + private Context context; + private int gravity; + private OnChoseListener mListener; + private boolean mIsShow; + private boolean mIsShowOther; + private TimePickerView mTimePicker; + private EditText mEtContent; + private String mNoticeWay = "NOTICE"; + + private CenterInputChooseView(Context context, boolean isCancelable, boolean isBackCancelable, int gravity, boolean isShow, boolean isShowOther) { + super(context, R.style.dialog_center_alpha); + this.context = context; + this.gravity = gravity; + this.iscancelable = isCancelable; + this.isBackCancelable = isBackCancelable; + this.mIsShow = isShow; + this.mIsShowOther = isShowOther; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + view = LayoutInflater.from(context).inflate(R.layout.dialog_input_radio_oversee, null); + setContentView(view); + setCancelable(iscancelable); + setCanceledOnTouchOutside(isBackCancelable); + mEtContent = view.findViewById(R.id.et_content); + RadioGroup rgWay = view.findViewById(R.id.rg_way); + rgWay.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.rb_way_1) { + //站内通知 + mNoticeWay = "NOTICE"; + } else if (checkedId == R.id.rb_way_2) { + //站内通知+短信 + mNoticeWay = "NM"; + } + }); + view.findViewById(R.id.btn_cancel).setOnClickListener(v -> this.dismiss()); + view.findViewById(R.id.btn_confirm).setOnClickListener(v -> doConfirm()); + DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + Window window = this.getWindow(); + window.setGravity(Gravity.CENTER); + window.setWindowAnimations(R.style.dialog_center_alpha); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = (int) (displayMetrics.widthPixels * 0.9); + params.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(params); + window.setBackgroundDrawable(new ColorDrawable()); + } + + public void HideSoftKeyBoardDialog(Activity activity) { + try { + InputMethodManager imm = (InputMethodManager) activity.getSystemService(activity.INPUT_METHOD_SERVICE); + imm.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0); + } catch (Exception ex) { + + + } + } + + private void doConfirm() { + if (checkParams()) { + String content = mEtContent.getText().toString().trim(); + mListener.doConfirm(mNoticeWay, content); + } + } + + /** + * 校验参数 + */ + private boolean checkParams() { + String content = mEtContent.getText().toString().trim(); + if (TextUtils.isEmpty(content)) { + ToastUtils.show("请输入督办内容"); + return false; + } + return true; + } + + + public void addOnChoseListener(OnChoseListener listener) { + this.mListener = listener; + } + + /** + * 选择 + * + * @param i + */ + private void choseType(int i) { + this.dismiss(); + } + + public interface OnChoseListener { + void doConfirm(String list, String ids); + } + + public static class DialogBuilder { + private Context mContext; + private boolean isCancelable; + private boolean mIsBackable; + private int mGravity = Gravity.BOTTOM; + private OnChoseListener mListener; + private boolean mIsShowOther; + + public DialogBuilder(Context context) { + this.mContext = context; + } + + public DialogBuilder setIscancelable(boolean iscancelable) { + this.isCancelable = iscancelable; + return this; + } + + public DialogBuilder setIsBackCancelable(boolean isBackCancelable) { + this.mIsBackable = isBackCancelable; + return this; + } + + public DialogBuilder setShowLocation(int gravity) { + this.mGravity = gravity; + return this; + } + + private boolean mIsShow; + + public DialogBuilder setIsShowFile(boolean isShowFile) { + mIsShow = isShowFile; + return this; + } + + public DialogBuilder setIsShowOther(boolean isShow) { + mIsShowOther = isShow; + return this; + } + + public CenterInputChooseView build() { + return new CenterInputChooseView(this.mContext, this.isCancelable, this.mIsBackable, this.mGravity, mIsShow, mIsShowOther); + } + } +} \ No newline at end of file diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/EditOrDelPopup.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/EditOrDelPopup.java index 1df2c80..8430537 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/EditOrDelPopup.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/EditOrDelPopup.java @@ -9,6 +9,7 @@ import com.tenlionsoft.baselib.R; import razerdp.basepopup.BasePopupWindow; + /** * 作者: adam * 日期: 2021/9/30 - 2:58 下午 diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LoadingDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LoadingDialog.java index bc63ce5..5cb670e 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LoadingDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LoadingDialog.java @@ -12,6 +12,11 @@ public class LoadingDialog extends ProgressDialog { this.setCanceledOnTouchOutside(false); } + public LoadingDialog setLoadingText(String hint) { + this.setMessage(hint); + return this; + } + public void showDialog() { this.show(); } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/AppUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/AppUtils.java index 64ec0c1..4e6eed5 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/AppUtils.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/AppUtils.java @@ -128,7 +128,8 @@ public final class AppUtils { */ public static boolean isSupportCall() { String cpuSupportAbi = getCpuSupportAbi(); - return cpuSupportAbi.contains("arm64-v8a"); + boolean isSupport = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && cpuSupportAbi.contains("arm64-v8a"); + return isSupport; } /** diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedPreferencesUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedPreferencesUtils.java new file mode 100644 index 0000000..963db26 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedPreferencesUtils.java @@ -0,0 +1,20 @@ +package com.tenlionsoft.baselib.utils; + + +import com.pddstudio.preferences.encrypted.EncryptedPreferences; +import com.tenlionsoft.baselib.app.BaseAppContext; + +public class EncryptedPreferencesUtils { + + private static EncryptedPreferences instance; + + private EncryptedPreferencesUtils() { + } + + public static synchronized EncryptedPreferences getInstance() { + if (instance == null) { + instance = new EncryptedPreferences.Builder(BaseAppContext.getInstance()).withEncryptionPassword("citygovernance").build(); + } + return instance; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedSPTool.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedSPTool.java new file mode 100644 index 0000000..baaf610 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/EncryptedSPTool.java @@ -0,0 +1,344 @@ +package com.tenlionsoft.baselib.utils; + +import android.content.Context; +import android.content.SharedPreferences; +import android.net.Uri; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonParser; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.pddstudio.preferences.encrypted.EncryptedPreferences; +import com.tenlionsoft.baselib.constant.ConstantsV2; + +import java.lang.reflect.Type; +import java.util.LinkedList; + + +/** + * 加密本地缓存 + */ +public class EncryptedSPTool { + + /** + * SP中写入String类型value + * + * @param key 键 + * @param value 值 + */ + public static void putString(Context context, String key, String value) { + EncryptedPreferences.EncryptedEditor editor = EncryptedPreferencesUtils.getInstance().edit(); + editor.putString(key, value); + editor.apply(); + } + + /** + * SP中写入String类型value + * + * @param key 键 + * @param value 值 + */ + public static void putString(String key, String value) { + EncryptedPreferences.EncryptedEditor editor = EncryptedPreferencesUtils.getInstance().edit(); + editor.putString(key, value); + editor.apply(); + } + + /** + * SP中读取String + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值{@code defaultValue} + */ + public static String getString(Context context, String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + String value; + value = sp.getString(key, ""); + return value; + } + + /** + * SP中读取String + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值{@code defaultValue} + */ + public static String getString(String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + String value; + value = sp.getString(key, ""); + return value; + } + + /** + * SP中写入int类型value + * + * @param key 键 + * @param value 值 + */ + public static void putInt(String key, int value) { + EncryptedPreferences encryptedPreferences = EncryptedPreferencesUtils.getInstance(); + EncryptedPreferences.EncryptedEditor editor = encryptedPreferences.edit(); + editor.putInt(key, value); + editor.apply(); + } + + /** + * SP中读取int + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值-1 + */ + public static int getInt(Context context, String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + int value; + value = sp.getInt(key, -1); + return value; + } + + /** + * SP中读取int + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值0 + */ + public static int getInt(String key, int defaultValue) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + int value; + value = sp.getInt(key, defaultValue); + return value; + } + + /** + * SP中写入long类型value + * + * @param key 键 + * @param value 值 + */ + public static void putLong(Context context, String key, long value) { + EncryptedPreferences encryptedPreferences = EncryptedPreferencesUtils.getInstance(); + EncryptedPreferences.EncryptedEditor editor = encryptedPreferences.edit(); + editor.putLong(key, value); + editor.apply(); + } + + /** + * SP中读取long + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值-1 + */ + public static long getLong(Context context, String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + long value; + value = sp.getLong(key, -1L); + return value; + } + + /** + * SP中写入float类型value + * + * @param key 键 + * @param value 值 + */ + public static void putFloat(Context context, String key, float value) { + EncryptedPreferences encryptedPreferences = EncryptedPreferencesUtils.getInstance(); + EncryptedPreferences.EncryptedEditor editor = encryptedPreferences.edit(); + editor.putFloat(key, value); + editor.apply(); + } + + /** + * SP中读取float + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值-1 + */ + public static float getFloat(Context context, String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + float value; + value = sp.getFloat(key, -1F); + return value; + } + + /** + * SP中写入boolean类型value + * + * @param key 键 + * @param value 值 + */ + public static void putBoolean(String key, boolean value) { + EncryptedPreferences encryptedPreferences = EncryptedPreferencesUtils.getInstance(); + EncryptedPreferences.EncryptedEditor editor = encryptedPreferences.edit(); + editor.putBoolean(key, value); + editor.apply(); + } + + + /** + * SP中读取boolean + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值{@code defaultValue} + */ + public static boolean getBoolean(String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + boolean value; + value = sp.getBoolean(key, false); + return value; + } + + /** + * SP中读取boolean + * + * @param key 键 + * @return 存在返回对应值,不存在返回默认值{@code defaultValue} + */ + public static boolean getBoolean(String key, boolean b) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + boolean value; + value = sp.getBoolean(key, b); + return value; + } + + /** + * SP中移除该key + * + * @param key 键 + */ + public static void remove(String key) { + EncryptedPreferences sp = EncryptedPreferencesUtils.getInstance(); + sp.edit().remove(key).apply(); + } + + + /** + * 清除指定的信息 + * + * @param context 上下文 + * @param name 键名 + * @param key 若为null 则删除name下所有的键值 + */ + public static void clearPreference(Context context, String name, String key) { + EncryptedPreferences encryptedPreferences = EncryptedPreferencesUtils.getInstance(); + EncryptedPreferences.EncryptedEditor editor = encryptedPreferences.edit(); + if (key != null) { + editor.remove(key); + } else { + editor.clear(); + } + editor.apply(); + } + + /** + * 用于保存集合 + * + * @param context 上下文 + * @param key key + * @param list 集合数据 + * @return 保存结果 + */ + public static boolean putListData(Context context, String key, LinkedList list) { + boolean result; + SharedPreferences sp = context.getSharedPreferences(ConstantsV2.PREFS_ACCOUNT, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + JsonArray array = new JsonArray(); + if (list.size() <= 0) { + editor.putString(key, array.toString()); + editor.apply(); + return false; + } + String type = list.get(0).getClass().getSimpleName(); + try { + switch (type) { + case "Boolean": + for (int i = 0; i < list.size(); i++) { + array.add((Boolean) list.get(i)); + } + break; + case "Long": + for (int i = 0; i < list.size(); i++) { + array.add((Long) list.get(i)); + } + break; + case "Float": + for (int i = 0; i < list.size(); i++) { + array.add((Float) list.get(i)); + } + break; + case "String": + for (int i = 0; i < list.size(); i++) { + array.add((String) list.get(i)); + } + break; + case "Integer": + for (int i = 0; i < list.size(); i++) { + array.add((Integer) list.get(i)); + } + break; + default: + Gson gson = new GsonBuilder() + .registerTypeAdapter(Uri.class, new UriSerializer()) + .create(); + for (int i = 0; i < list.size(); i++) { + JsonElement obj = gson.toJsonTree(list.get(i)); + array.add(obj); + } + break; + } + editor.putString(key, array.toString()); + result = true; + } catch (Exception e) { + result = false; + e.printStackTrace(); + } + editor.apply(); + return result; + } + + /** + * 获取保存的List + * + * @param context 上下文 + * @param key key + * @return 对应的Lis集合 + */ + public static LinkedList getListData(Context context, String key, Class cls) { + LinkedList list = new LinkedList<>(); + SharedPreferences sp = context.getSharedPreferences(ConstantsV2.PREFS_ACCOUNT, + Context.MODE_PRIVATE); + String json = sp.getString(key, ""); + if (!json.equals("") && json.length() > 0) { + Gson gson = new GsonBuilder() + .registerTypeAdapter(Uri.class, new UriSerializer()) + .create(); + JsonArray array = new JsonParser().parse(json).getAsJsonArray(); + for (JsonElement elem : array) { + list.add(gson.fromJson(elem, cls)); + } + } + return list; + } + + + public static class UriSerializer implements JsonSerializer, JsonDeserializer { + @Override + public JsonElement serialize(Uri src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src.toString()); + } + + @Override + public Uri deserialize(final JsonElement src, final Type srcType, + final JsonDeserializationContext context) throws JsonParseException { + return Uri.parse(src.getAsString()); + } + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/FileUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/FileUtils.java index 4b0ced9..458e8b5 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/FileUtils.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/FileUtils.java @@ -4,6 +4,8 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; +import com.tenlionsoft.baselib.app.BaseAppContext; + import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -1331,4 +1333,42 @@ public final class FileUtils { } } } + /** + * 将asset文件写入缓存 + */ + public static boolean copyAssetToFiles(String dirsName, String fileName) { + try { + File cacheDir = new File(BaseAppContext.getInstance().getFilesDir().getAbsolutePath() + "/" + dirsName); + if (!cacheDir.exists()) { + cacheDir.mkdirs(); + } + File outFile = new File(cacheDir, fileName); + if (!outFile.exists()) { + boolean res = outFile.createNewFile(); + if (!res) { + return false; + } + } else { + if (outFile.length() > 10) {//表示已经写入一次 + return true; + } + } + InputStream is = BaseAppContext.getInstance().getAssets().open(dirsName + "/" + fileName); + FileOutputStream fos = new FileOutputStream(outFile); + byte[] buffer = new byte[1024]; + int byteCount; + while ((byteCount = is.read(buffer)) != -1) { + fos.write(buffer, 0, byteCount); + } + fos.flush(); + is.close(); + fos.close(); + return true; + } catch (IOException e) { + e.printStackTrace(); + } + + return false; + } + } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/KeyBoardListener.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/KeyBoardListener.java new file mode 100644 index 0000000..63b2616 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/KeyBoardListener.java @@ -0,0 +1,71 @@ +package com.tenlionsoft.baselib.utils; + +import android.app.Activity; +import android.graphics.Rect; +import android.view.View; +import android.widget.FrameLayout; + +/** + * 作者: adam + * 日期: 2021/12/6 - 6:13 下午 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class KeyBoardListener { + private Activity activity; + private View mChildOfContent; + private int usableHeightPrevious; + private FrameLayout.LayoutParams frameLayoutParams; + + private static KeyBoardListener keyBoardListener; + + + public static KeyBoardListener getInstance(Activity activity) { + keyBoardListener = new KeyBoardListener(activity); + return keyBoardListener; + } + + + public KeyBoardListener(Activity activity) { + super(); + this.activity = activity; + } + + + public void init() { + FrameLayout content = activity + .findViewById(android.R.id.content); + mChildOfContent = content.getChildAt(0); + mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener( + () -> possiblyResizeChildOfContent()); + frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent + .getLayoutParams(); + + + } + + + private void possiblyResizeChildOfContent() { + int usableHeightNow = computeUsableHeight(); + if (usableHeightNow != usableHeightPrevious) { + int usableHeightSansKeyboard = mChildOfContent.getRootView() + .getHeight(); + int heightDifference = usableHeightSansKeyboard - usableHeightNow; + if (heightDifference > (usableHeightSansKeyboard / 4)) { + frameLayoutParams.height = usableHeightSansKeyboard + - heightDifference; + } else { + frameLayoutParams.height = usableHeightSansKeyboard; + } + mChildOfContent.requestLayout(); + usableHeightPrevious = usableHeightNow; + } + } + + + private int computeUsableHeight() { + Rect r = new Rect(); + mChildOfContent.getWindowVisibleDisplayFrame(r); + return (r.bottom - r.top); + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/LogUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/LogUtils.java index 3b986bb..84ecf8e 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/LogUtils.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/LogUtils.java @@ -1067,4 +1067,6 @@ public final class LogUtils { } return objClass; } + + } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java index 348afce..a9ccc0b 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java @@ -10,6 +10,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; @@ -123,6 +124,20 @@ public final class TimeUtils { return format.format(date); } + public static String getCurrentMonth() { + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); + return format.format(date); + } + + public static String getMonthEnd() { + Date date = new Date(); + GregorianCalendar cal = new GregorianCalendar(); + cal.setTime(date); + int actualMaximum = cal.getActualMaximum(Calendar.DAY_OF_MONTH); + return actualMaximum + ""; + } + /** * 获取当前时间 * diff --git a/baselib/src/main/res/drawable-xhdpi/ic_edit_gray_icon.png b/baselib/src/main/res/drawable-xhdpi/ic_edit_gray_icon.png new file mode 100644 index 0000000..ba32653 Binary files /dev/null and b/baselib/src/main/res/drawable-xhdpi/ic_edit_gray_icon.png differ diff --git a/baselib/src/main/res/drawable/shp_circle_blue.xml b/baselib/src/main/res/drawable/shp_circle_blue.xml new file mode 100644 index 0000000..918a08a --- /dev/null +++ b/baselib/src/main/res/drawable/shp_circle_blue.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/drawable/shp_top_shadow_white.xml b/baselib/src/main/res/drawable/shp_top_shadow_white.xml new file mode 100644 index 0000000..85c70a7 --- /dev/null +++ b/baselib/src/main/res/drawable/shp_top_shadow_white.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/drawable/shp_top_shadow_white_no_radius.xml b/baselib/src/main/res/drawable/shp_top_shadow_white_no_radius.xml new file mode 100644 index 0000000..c212de3 --- /dev/null +++ b/baselib/src/main/res/drawable/shp_top_shadow_white_no_radius.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/layout/dialog_input_radio_oversee.xml b/baselib/src/main/res/layout/dialog_input_radio_oversee.xml new file mode 100755 index 0000000..8b32766 --- /dev/null +++ b/baselib/src/main/res/layout/dialog_input_radio_oversee.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +