TaiyiManager.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.taiyi.tyusbsdk.pulse;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.app.Application;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.os.Build;
  8. import androidx.annotation.Nullable;
  9. import com.taiyi.tyusbsdk.ResultListener;
  10. import com.taiyi.tyusbsdk.pulse.net.HttpImpl;
  11. import com.taiyi.tyusbsdk.pulse.net.HttpUtil;
  12. import com.taiyi.tyusbsdk.pulse.ui.SuccessActivity;
  13. import com.taiyi.tyusbsdk.pulse.util.AppManager;
  14. import org.greenrobot.eventbus.EventBus;
  15. import java.lang.reflect.Constructor;
  16. import java.lang.reflect.Field;
  17. import java.lang.reflect.Method;
  18. /**
  19. * Created by zbh on 2021/11/23.
  20. * Version: 1.0
  21. */
  22. public class TaiyiManager {
  23. private String appId;
  24. private String appSecret;
  25. private String uid;
  26. private static TaiyiManager instance;
  27. private static TaiyiConfig _config;
  28. private Context context;
  29. public static final int CAPTURE_REQUEST = 10101;
  30. public static final String CAPTURE_IMG_PATH = "img_path";
  31. private String pulseResult;
  32. private String pulseReport;
  33. private ResultListener mResultListener;
  34. public void setResultListener(ResultListener listener) {
  35. mResultListener = listener;
  36. }
  37. public String getPulseReport() {
  38. return pulseReport;
  39. }
  40. public void setPulseReport(String pulseReport) {
  41. this.pulseReport = pulseReport;
  42. }
  43. public String getPulseResult() {
  44. return pulseResult;
  45. }
  46. public void setPulseResult(String pulseResult) {
  47. this.pulseResult = pulseResult;
  48. }
  49. public void onResult(String pr,String measureId,String reportData) {
  50. if (mResultListener != null) {
  51. mResultListener.onResult(pr, measureId,reportData);
  52. }
  53. }
  54. public void onSkip() {
  55. if (mSkipInterface != null) {
  56. mSkipInterface.onSkip();
  57. }
  58. }
  59. public String getUrl(String measureId) {
  60. return "https://hybrid.reborn-tech.com/report.html#/?mid=" + measureId + "&access_session=" + HttpUtil.AuthorizationValue + "&appId=" + appId;
  61. }
  62. public void getAsyncUrl(String measureId, final HttpImpl<String> callback) {
  63. HttpUtil.getInstance().webViewCheck(new HttpImpl<String>() {
  64. @Override
  65. public void showError(String error) {
  66. callback.showError(error);
  67. }
  68. @Override
  69. public void showResponse(String response) {
  70. HttpUtil.AuthorizationValue = response;
  71. callback.showResponse(getUrl(measureId));
  72. }
  73. });
  74. }
  75. private TaiyiManager() {
  76. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
  77. closeAndroid10Dialog();
  78. }
  79. }
  80. @SuppressLint({"SoonBlockedPrivateApi", "PrivateApi", "DiscouragedPrivateApi"})
  81. private void closeAndroid10Dialog() {
  82. try {
  83. Class aClass = Class.forName("android.content.pm.PackageParser$Package");
  84. Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class);
  85. declaredConstructor.setAccessible(true);
  86. } catch (Exception e) {
  87. e.printStackTrace();
  88. }
  89. try {
  90. Class cls = Class.forName("android.app.ActivityThread");
  91. Method declaredMethod = cls.getDeclaredMethod("currentActivityThread");
  92. declaredMethod.setAccessible(true);
  93. Object activityThread = declaredMethod.invoke(null);
  94. Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown");
  95. mHiddenApiWarningShown.setAccessible(true);
  96. mHiddenApiWarningShown.setBoolean(activityThread, true);
  97. } catch (Exception e) {
  98. e.printStackTrace();
  99. }
  100. }
  101. public static TaiyiManager getInstance() {
  102. if (instance == null) {
  103. synchronized (TaiyiManager.class) {
  104. if (instance == null) {
  105. instance = new TaiyiManager();
  106. }
  107. }
  108. }
  109. return instance;
  110. }
  111. public static TaiyiConfig getConfig() {
  112. return _config;
  113. }
  114. public void init(Application application) {
  115. this.init(application, null);
  116. }
  117. public void init(String appId, String appSecret, Application application) {
  118. this.init(application, new TaiyiConfig(appId, appSecret));
  119. }
  120. public void init(Application application, @Nullable TaiyiConfig config) {
  121. this.context = application;
  122. _config = config == null ? TaiyiConfig.getDefault(context.getApplicationContext()) : config;
  123. this.appId = _config.getAppId();
  124. this.appSecret = _config.getAppSecret();
  125. ProxyManager.getInstance().init(_config.proxy, _config.agencyOfOSS);
  126. }
  127. public void toGoMeasure(boolean isLeft) {
  128. if (isLeft) {
  129. EventBus.getDefault().post(new EventTestMaiMessage(0));
  130. } else {
  131. EventBus.getDefault().post(new EventTestMaiMessage(1));
  132. }
  133. }
  134. private SkipInterface mSkipInterface;
  135. public SkipInterface getSkipInterface() {
  136. return mSkipInterface;
  137. }
  138. public interface SkipInterface {
  139. void onSkip();
  140. }
  141. public String getAppId() {
  142. return appId;
  143. }
  144. public String getUid() {
  145. return uid;
  146. }
  147. public String getAppSecret() {
  148. return appSecret;
  149. }
  150. public void toMeasure(String uid, Activity activity,Class target, TaiyiManager.SkipInterface skipInterface, ResultListener listener) {
  151. this.uid = uid;
  152. Intent intent = new Intent(activity, target);
  153. activity.startActivity(intent);
  154. mSkipInterface = skipInterface;
  155. setResultListener(listener);
  156. }
  157. public void clearMeasure() {
  158. AppManager.finishActivity(SuccessActivity.class);
  159. }
  160. }