TaiyiManager.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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 android.text.TextUtils;
  9. import androidx.annotation.Nullable;
  10. import com.taiyi.tyusbsdk.ResultListener;
  11. import com.taiyi.tyusbsdk.pulse.ui.SuccessActivity;
  12. import com.taiyi.tyusbsdk.pulse.util.AppManager;
  13. import org.greenrobot.eventbus.EventBus;
  14. import java.lang.reflect.Constructor;
  15. import java.lang.reflect.Field;
  16. import java.lang.reflect.Method;
  17. /**
  18. * Created by zbh on 2021/11/23.
  19. * Version: 1.0
  20. */
  21. public class TaiyiManager {
  22. private String appId;
  23. private String appSecret;
  24. private String uid;
  25. private static TaiyiManager instance;
  26. private static TaiyiConfig _config;
  27. private Context context;
  28. public static final int CAPTURE_REQUEST = 10101;
  29. public static final String CAPTURE_IMG_PATH = "img_path";
  30. private String pulseResult;
  31. private ResultListener mResultListener;
  32. public void setResultListener(ResultListener listener) {
  33. mResultListener = listener;
  34. }
  35. public String getPulseResult() {
  36. return pulseResult;
  37. }
  38. public void setPulseResult(String pulseResult) {
  39. this.pulseResult = pulseResult;
  40. }
  41. public void onResult(String pr,String measureId,String reportData) {
  42. if (mResultListener != null) {
  43. mResultListener.onResult(pr, measureId,reportData);
  44. }
  45. }
  46. private TaiyiManager() {
  47. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
  48. closeAndroid10Dialog();
  49. }
  50. }
  51. @SuppressLint({"SoonBlockedPrivateApi", "PrivateApi", "DiscouragedPrivateApi"})
  52. private void closeAndroid10Dialog() {
  53. try {
  54. Class aClass = Class.forName("android.content.pm.PackageParser$Package");
  55. Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class);
  56. declaredConstructor.setAccessible(true);
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. try {
  61. Class cls = Class.forName("android.app.ActivityThread");
  62. Method declaredMethod = cls.getDeclaredMethod("currentActivityThread");
  63. declaredMethod.setAccessible(true);
  64. Object activityThread = declaredMethod.invoke(null);
  65. Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown");
  66. mHiddenApiWarningShown.setAccessible(true);
  67. mHiddenApiWarningShown.setBoolean(activityThread, true);
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. public static TaiyiManager getInstance() {
  73. if (instance == null) {
  74. synchronized (TaiyiManager.class) {
  75. if (instance == null) {
  76. instance = new TaiyiManager();
  77. }
  78. }
  79. }
  80. return instance;
  81. }
  82. public static TaiyiConfig getConfig() {
  83. return _config;
  84. }
  85. public void init(Application application) {
  86. this.init(application, null);
  87. }
  88. public void init(String appId, String appSecret, Application application) {
  89. this.init(application, new TaiyiConfig(appId, appSecret));
  90. }
  91. public void init(Application application, @Nullable TaiyiConfig config) {
  92. this.context = application;
  93. _config = config == null ? TaiyiConfig.getDefault(context.getApplicationContext()) : config;
  94. this.appId = _config.getAppId();
  95. this.appSecret = _config.getAppSecret();
  96. ProxyManager.getInstance().init(_config.proxy);
  97. }
  98. public void toGoMeasure(boolean isLeft) {
  99. if (isLeft) {
  100. EventBus.getDefault().post(new EventTestMaiMessage(0));
  101. } else {
  102. EventBus.getDefault().post(new EventTestMaiMessage(1));
  103. }
  104. }
  105. private SkipInterface mSkipInterface;
  106. public SkipInterface getSkipInterface() {
  107. return mSkipInterface;
  108. }
  109. public interface SkipInterface {
  110. void onSkip();
  111. }
  112. public String getAppId() {
  113. return appId;
  114. }
  115. public String getUid() {
  116. return uid;
  117. }
  118. public String getAppSecret() {
  119. return appSecret;
  120. }
  121. public void toMeasure(String uid, Activity activity,Class target, TaiyiManager.SkipInterface skipInterface, ResultListener listener) {
  122. this.uid = uid;
  123. Intent intent = new Intent(activity, target);
  124. activity.startActivity(intent);
  125. mSkipInterface = skipInterface;
  126. setResultListener(listener);
  127. }
  128. public void clearMeasure() {
  129. AppManager.finishActivity(SuccessActivity.class);
  130. }
  131. }