package com.edufound.reader.base; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.LinearInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.alibaba.ailabs.genie.assistant.sdk.asr.ASRClient; import com.alibaba.ailabs.genie.assistant.sdk.asr.ASRCommandReturn; import com.alibaba.ailabs.genie.assistant.sdk.asr.AppContextData; import com.alibaba.ailabs.genie.assistant.sdk.asr.OnASRCommandListener; import com.alibaba.ailabs.genie.assistant.sdk.asr.OnGetMediaPolicyListener; import com.alibaba.fastjson.JSONObject; import com.baidu.duer.bot.directive.payload.AmountInfo; import com.baidu.duer.botsdk.BotIntent; import com.baidu.duer.botsdk.IAccountChargeMsgListener; import com.baidu.duer.membersdk.MemberSdkManager; import com.baidu.duer.membersdk.view.FloatingView; import com.edufound.reader.R; import com.edufound.reader.activity.TextActivity; import com.edufound.reader.annotation.BindView; import com.edufound.reader.apiserver.UserApiServerImpl; import com.edufound.reader.application.EApplication; import com.edufound.reader.bean.BaiDuUserInfo; import com.edufound.reader.bean.ChannelCodeEnum; import com.edufound.reader.bean.HttpResultBean; import com.edufound.reader.bean.SignBean; import com.edufound.reader.bean.UserBean; import com.edufound.reader.botsdk.BotRegisterListener; import com.edufound.reader.botsdk.IBotIntentCallback; import com.edufound.reader.cusview.CusToast; import com.edufound.reader.receiver.HomeKeyEventReceiver; import com.edufound.reader.receiver.NetworkChangeReceiver; import com.edufound.reader.receiver.ScreenListener; import com.edufound.reader.receiver.ShowFollowReceiver; import com.edufound.reader.receiver.ShowPageLoadingReceiver; import com.edufound.reader.tmailsdk.TMailSDKUtil; import com.edufound.reader.util.Consts; import com.edufound.reader.util.DeviceUuidFactory; import com.edufound.reader.util.EfunboxUtil; import com.edufound.reader.util.LiuHaiScreenUtil; import com.edufound.reader.util.MMKVEncodeKey; import com.edufound.reader.util.MMKVUtil; import com.edufound.reader.util.SizeUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.jakewharton.rxbinding4.view.RxView; import com.okhttplib.HttpInfo; import com.okhttplib.callback.Callback; import com.orhanobut.logger.Logger; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import io.reactivex.rxjava3.annotations.Nullable; import io.reactivex.rxjava3.disposables.CompositeDisposable; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.functions.Consumer; public abstract class BaseActivity extends AppCompatActivity { private static final int SHOW_FOLLOW = 0x5512; private static final int SHOW_FIRST_TIP = 0x5513; private static final int TMAIL_INIT_SUCCESS = 0x5514; private static final int TMAIL_INIT_ERROR = 0x5515; public CompositeDisposable mCompositeDisposable; //按home键的receiver HomeKeyEventReceiver mHomeReceiver; //登录广播action //Gson Gson mGson; View mFirstIntoView; ImageView pageLoading; boolean pageLoadingShow = false; //百度浮窗 private FloatingView mFloating; private boolean hasResume = false; ScreenListener screenListener; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // EfunboxUtil.setCustomDensity(this, Consts.getmApplicAtion()); EApplication.mActivityList.add(this); EfunboxUtil.initDesignSize(this); setContentView(this.getLayoutId()); initBase(); bindViews(this); initView(); if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) { mAliTVASRManager = new ASRClient(this); if (Consts.getTmailUserId().equals("-1")) { TMailSDKUtil.getUserId(getBaseContext()); TMailSDKUtil.getDevieId(getBaseContext()); } } } void initBase() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { LiuHaiScreenUtil.openFullScreenModel(this); } mGson = new Gson(); //获取录音权限 // PermissionsUtil.verifyAudioPermissions(this); if (Consts.getScreenSize() == null) { DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); int widthPixels = outMetrics.widthPixels; int heightPixels = outMetrics.heightPixels; int arr[] = {widthPixels, heightPixels}; Consts.setScreenSize(arr); } mCompositeDisposable = new CompositeDisposable(); mHomeReceiver = new HomeKeyEventReceiver(); //注册home广播 registerReceiver(mHomeReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); // 注册网络广播 NetworkChangeReceiver.registerReceiver(this); NetworkChangeReceiver.registerObserver(NetStateChangeObserver); //注册百度广播 BotRegisterListener.registerListener(mBotIntentCallBack, mIAccountChargeMsgListener); //注册小红花广播 ShowFollowReceiver.registerReceiver(this); ShowFollowReceiver.registerObserver(showFollow); ShowPageLoadingReceiver.registerReceiver(this); ShowPageLoadingReceiver.registerObserver(pageLoadingReceiver); screenListener = new ScreenListener(this); screenListener.begin(new ScreenListener.ScreenStateListener() { @Override public void onScreenOn() { Logger.e("onScreenOn"); } @Override public void onScreenOff() { Logger.e("onScreenOff"); onAppScreenOff(); } @Override public void onUserPresent() { onScreenUserPresent(); } }); } /** * 设置布局 * * @return */ public abstract int getLayoutId(); /** * 初始化视图 */ public abstract void initView(); public static void bindViews(Activity activity) { Class activityClass = activity.getClass();//获取activity的class Field[] fields = activityClass.getDeclaredFields();//获取activity的字段 //遍历所有的字段 for (Field field : fields) { //获取该字段的注解 BindView bindView = field.getAnnotation(BindView.class); //!=null 说明该字段有注解并且是指定的注解 if (bindView != null) { //获取到注解总传入的数值value int viewId = bindView.id(); if (viewId != -1) { try { //获取到activity中findViewById的方法 Method findViewByIdMethod = activityClass.getMethod("findViewById", int.class); try { //执行findViewById方法 Object resView = findViewByIdMethod.invoke(activity, viewId); //允许通过反射访问私有变量 field.setAccessible(true); //把字段的值设置该view的实例 field.set(activity, resView); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } catch (NoSuchMethodException e) { e.printStackTrace(); } } } } } /** * 添加订阅 */ public void addDisposable(Disposable mDisposable) { if (mCompositeDisposable == null) { mCompositeDisposable = new CompositeDisposable(); } mCompositeDisposable.add(mDisposable); } /** * 取消所有订阅 */ public void clearDisposable() { if (mCompositeDisposable != null) { mCompositeDisposable.clear(); } } @SuppressLint("AutoDispose") public void addUiClickListener(View view, Consumer onNext) { addDisposable(RxView.clicks(view).throttleFirst(2, TimeUnit.SECONDS).subscribe(onNext)); } public abstract void onGetDisconnect(); public abstract void onGetMobileConnect(); public abstract void onGetWifiConnect(); NetworkChangeReceiver.NetStateChangeObserver NetStateChangeObserver = new NetworkChangeReceiver.NetStateChangeObserver() { @Override public void onDisconnect() { //断网了 onGetDisconnect(); // CusToast.getInstance(Consts.getmApplicAtion()).show("网络异常,请检查网络。", 2000); Toast.makeText(Consts.getmApplicAtion(), "网络异常,请检查网络。", Toast.LENGTH_SHORT).show(); } @Override public void onMobileConnect() { //有网了(移动网络) onGetMobileConnect(); } @Override public void onWifiConnect() { //有网了(wifi) onGetWifiConnect(); } }; protected void onLoginSuccess() { } public ViewGroup getRootView() { return findViewById(android.R.id.content); } public void showFollowCountAnim(String count) { // View mFollowView = LayoutInflater.from(this).inflate(R.layout.anim_getfollow, null); // FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); // ((TextView) mFollowView.findViewById(R.id.anim_getfollow_followcount)).setText("+" + count); // params.gravity = Gravity.CENTER; // mFollowView.setLayoutParams(params); // ObjectAnimator mRotationImgAnim = ObjectAnimator.ofFloat(mFollowView, "translationY", 0, -150); // mRotationImgAnim.setDuration(1500); // LinearInterpolator interpolator = new LinearInterpolator(); // mRotationImgAnim.setInterpolator(interpolator); //设置匀速旋转,不卡顿 icon_anim.start(); // ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(mFollowView, "alpha", 1f, 0f); // alphaAnim.setDuration(1500); // getRootView().addView(mFollowView); // AnimatorSet animatorSet = new AnimatorSet(); // animatorSet.play(mRotationImgAnim).with(alphaAnim); // animatorSet.addListener(new AnimatorListenerAdapter() { // @Override // public void onAnimationEnd(Animator animation) { // super.onAnimationEnd(animation); // getRootView().removeView(mFollowView); // } // }); // animatorSet.start(); // for (int i = 0; i < Integer.valueOf(count); i++) { Message message = new Message(); message.what = SHOW_FOLLOW; message.arg1 = i; baseHandler.sendMessageDelayed(message, i * 250); } } Handler baseHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(@NonNull Message message) { switch (message.what) { //region Description 显示花朵 case SHOW_FOLLOW: ImageView imageView = new ImageView(getBaseContext()); imageView.setImageResource(R.drawable.testhua); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 50), SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 50)); params.gravity = Gravity.RIGHT | Gravity.CENTER; params.topMargin = SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 80); if (Integer.valueOf(message.arg1) % 2 == 0) { //双数 } else { params.rightMargin = SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 20); params.rightMargin = SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 60); } imageView.setLayoutParams(params); getRootView().addView(imageView); ObjectAnimator mTranslationY = ObjectAnimator.ofFloat(imageView, "translationY", 0, -200); mTranslationY.setDuration(1500); ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(imageView, "alpha", 1f, 0f); alphaAnim.setDuration(1500); ObjectAnimator mRotationImgAnim = ObjectAnimator.ofFloat(imageView, "rotation", 0.0F, 359.0F); mRotationImgAnim.setRepeatCount(-1); mRotationImgAnim.setDuration(1000); ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(imageView, "scaleX", 1f, 2f); ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(imageView, "scaleY", 1f, 2f); scaleXAnim.setDuration(1000); scaleYAnim.setDuration(1000); LinearInterpolator rotation_interpolator = new LinearInterpolator(); mRotationImgAnim.setInterpolator(rotation_interpolator); //设置匀速旋转,不卡顿 icon_anim.start(); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(mTranslationY).with(alphaAnim).with(mRotationImgAnim).with(scaleXAnim).with(scaleYAnim); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); getRootView().removeView(imageView); } }); animatorSet.start(); break; //endregion //region 第一次进入时提示 case SHOW_FIRST_TIP: if (mFirstIntoView == null) { mFirstIntoView = LayoutInflater.from(getBaseContext()).inflate(R.layout.first_tip, null); ImageView touch = mFirstIntoView.findViewById(R.id.first_touch); FrameLayout.LayoutParams first_params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); first_params.gravity = Gravity.RIGHT | Gravity.CENTER; first_params.rightMargin = SizeUtils.dp2px(Consts.getmApplicAtion().getBaseContext(), 30); mFirstIntoView.setLayoutParams(first_params); ObjectAnimator translationYUp = ObjectAnimator.ofFloat(touch, "translationY", 80, -30, 80); // ObjectAnimator translationYDown = ObjectAnimator.ofFloat(touch, "translationY", -30, 80); translationYUp.setDuration(1500); // translationYDown.setDuration(1500); translationYUp.setRepeatCount(-1); // translationYDown.setRepeatCount(-1); LinearInterpolator interpolator = new LinearInterpolator(); translationYUp.setInterpolator(interpolator); //设置匀速旋转,不卡顿 // translationYDown.setInterpolator(interpolator); //设置匀速旋转,不卡顿 getRootView().addView(mFirstIntoView); AnimatorSet first_animatorSet = new AnimatorSet(); // first_animatorSet.addListener(new AnimatorListenerAdapter() { // @Override // public void onAnimationEnd(Animator animation) { // super.onAnimationEnd(animation); // if (first_animatorSet != null) { // first_animatorSet.start(); // } // // } // }); mFirstIntoView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { first_animatorSet.pause(); removeFirstTipView(); return true; } }); // first_animatorSet.playSequentially(translationYUp, translationYDown); first_animatorSet.play(translationYUp); first_animatorSet.start(); } MMKVUtil.getInstance().encode("first_into", false); break; //endregion //region 天猫精灵初始化 case TMAIL_INIT_SUCCESS: //天猫初始化成功 Toast.makeText(getBaseContext(), message.obj.toString(), Toast.LENGTH_SHORT).show(); break; case TMAIL_INIT_ERROR: //天猫初始化失败 Toast.makeText(getBaseContext(), message.obj.toString(), Toast.LENGTH_SHORT).show(); break; //endregion } return false; } }); public void showFirstTouchView() { baseHandler.sendEmptyMessage(SHOW_FIRST_TIP); } public void removeFirstTipView() { if (mFirstIntoView != null) { getRootView().removeView(mFirstIntoView); mFirstIntoView = null; } } public void showPageLoading() { if (pageLoading == null) { pageLoading = new ImageView(this); pageLoading.setImageResource(R.drawable.page_loading); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(SizeUtils.dp2px(this, 60), SizeUtils.dp2px(this, 60)); params.gravity = Gravity.CENTER; pageLoading.setLayoutParams(params); ObjectAnimator mRotationImgAnim = ObjectAnimator.ofFloat(pageLoading, "rotation", 0.0F, 359.0F); mRotationImgAnim.setRepeatCount(-1); mRotationImgAnim.setDuration(1000); mRotationImgAnim.start(); } if (pageLoadingShow) { return; } getRootView().addView(pageLoading); pageLoadingShow = true; } public void hidePageLoading() { if (pageLoading == null) { return; } if (pageLoadingShow) { getRootView().removeView(pageLoading); pageLoadingShow = false; } } public Gson getGson() { return mGson; } public void toNextActivity(Class clazz) { Intent intent = new Intent(this, clazz); startActivity(intent); } public void toNextActivity(Class clazz, Bundle bundle) { Intent intent = new Intent(this, clazz); intent.putExtra("params_bundle", bundle); startActivity(intent); } public void toNextActivityForResult(Class clazz, Bundle bundle, int resultCode) { Intent intent = new Intent(this, clazz); intent.putExtra("params_bundle", bundle); startActivityForResult(intent, resultCode); } @Override protected void onPause() { super.onPause(); if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) { mAliTVASRManager.release(); } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) { Logger.e("隐藏弹窗"); hasResume = false; if (mFloating != null) { // 隐藏 mFloating.dismissFloatView(); } } } @Override protected void onResume() { super.onResume(); if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) { try { mAliTVASRManager.setOnASRCommandListener(mASRCommandListener); mAliTVASRManager.setASRListenerType(OnASRCommandListener.ASRListenerType.DEFAULT_LISTENER); mAliTVASRManager.setAliTVASREnable(true); mAliTVASRManager.setOnGetMediaPolicyListener(mOnGetMediaPolicyListener); mAliTVASRManager.init(getBaseContext(), true); } catch (Exception e) { e.printStackTrace(); } } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) { hasResume = true; if (mFloating != null) { mFloating.dismissFloatView(); } mFloating = MemberSdkManager.getInstance().showFloatView(this); } } @Override protected void onDestroy() { super.onDestroy(); Runtime.getRuntime().gc(); System.gc(); if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) { mAliTVASRManager.release(); } EApplication.mActivityList.remove(this); BotRegisterListener.removeListener(mBotIntentCallBack); clearDisposable(); unregisterReceiver(mHomeReceiver); NetworkChangeReceiver.unRegisterReceiver(this); NetworkChangeReceiver.unRegisterObserver(NetStateChangeObserver); ShowFollowReceiver.unRegisterReceiver(this); ShowFollowReceiver.unRegisterObserver(showFollow); ShowPageLoadingReceiver.unRegisterReceiver(this); ShowPageLoadingReceiver.unRegisterObserver(pageLoadingReceiver); } ShowFollowReceiver.ShowFollow showFollow = new ShowFollowReceiver.ShowFollow() { @Override public void showFollow(Intent intent) { showFollowCountAnim(intent.getStringExtra("follow_count")); } }; ShowPageLoadingReceiver.PageLoading pageLoadingReceiver = new ShowPageLoadingReceiver.PageLoading() { @Override public void show(Intent intent) { showPageLoading(); } @Override public void hide(Intent intent) { hidePageLoading(); } }; //region Description 百度的回调逻辑代码块 protected void botHandleIntent(BotIntent intent, String customData) { } protected void botOnClickLink(String url, HashMap paramMap) { } protected void botOnHandleScreenNavigatorEvent(int event) { } protected void botOnLinkAccountSucceed(String s, String s1) { } protected void refUserInfo(UserBean bean) { } /** * 支付状态改变的通知 * * @param purchaseResult 支付结果 SUCCESS 支付成功 - ERROR 支付发生错误 * @param authorizationAmount 应收金额信息 * @param capturedAmount 实际扣款信息 * @param creationTimestamp 订单创建时间戳 * @param baiduOrderReferenceId 此次交易百度生成的订单Id * @param sellerOrderId 对应支付的订单ID * @param msg 订单信息 */ protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) { } /** * 购买结果更新 * * @param purchaseResult 支付结果,SUCCESS 支付成功 -ERROR 支付发生错误 * @param productId 商品id * @param baiduOrderId 百度侧订单id * @param sellerOrderId 卖家订单id * @param msg 订单备注信息 */ protected void botOnBuyStatusUpdated(@NonNull final String purchaseResult, @NonNull final String productId, @NonNull final String baiduOrderId, @NonNull final String sellerOrderId, @Nullable final String msg, String token) { } IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() { @Override public void handleIntent(BotIntent intent, String customData) { MemberSdkManager.getInstance().handleIntent(intent, customData); Logger.e("fragment---intent.name:" + intent.name); if (intent.name.equals("all_login")) { //用户主动要求登录 Consts.setIsNeedLogin(true); EfunboxUtil.userLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1)); return; } else if (intent.name.equals("user_info")) { //获取是不是百度VIP Consts.setmConstsBaiDuUserBean(mGson.fromJson(customData, BaiDuUserInfo.class)); Logger.e("json----" + mGson.toJson(Consts.getmConstsBaiDuUserBean())); if (Consts.getIsNeedLogin()) { BotRegisterListener.BaiDuLogin(); } else { Consts.setIsNeedLogin(true); } botHandleIntent(intent, customData); return; } Logger.e("intent:" + intent.name); if (BotRegisterListener.isNoLoginIntent(intent)) { //不是获取手机号 Logger.e("不是获取手机号--不是获取手机号:" + intent.name + "---" + intent.slots.toString()); botHandleIntent(intent, customData); } else { Logger.e("是获取手机号--是获取手机号"); //是获取手机号 if (intent.slots.get(0).value.equals("SUCCESS")) { //获取手机号Token成功 String token = intent.slots.get(1).value; UserApiServerImpl userApiServer = new UserApiServerImpl(); Activity topActivity = EApplication.mActivityList.get(EApplication.mActivityList.size() - 1); userApiServer.getBaiDuUserPhone(topActivity, token, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { JSONObject object = JSONObject.parseObject(info.getRetDetail().toString()); String phone = JSONObject.parseObject(object.getString("data")).getString("phone"); Logger.e("获取的手机号:" + phone); if (EfunboxUtil.isMobileNO(phone)) { Map map = new HashMap<>(); map.put("deviceCode", DeviceUuidFactory.getUuid()); map.put("channel", Consts.getUmengChannel()); map.put("mobileNo", phone); map.put("nickName", EfunboxUtil.setPhoneMiddle(phone)); Logger.e("Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId():" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId()); map.put("userId", Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId()); if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) { //如果没有,默认给一年级 map.put("grade", "PRIMARY_FIRST_GRADE"); } else { map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)); } String json = mGson.toJson(map); Logger.e("json:" + json); userApiServer.registerUserId(topActivity, json, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { Logger.e("手机号注册成功:" + info.getRetDetail()); HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Consts.setUID(bean.getData().getUid()); //用户是否登录,登录了,创建Consts的userbean String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile()); bean.getData().setNickName(nickName); Consts.setmConstsUserBean(bean.getData()); Logger.e("看看到底对没有:" + mGson.toJson(Consts.getmConstsUserBean())); refUserInfo(Consts.getmConstsUserBean()); Toast.makeText(topActivity, "注册登录成功", Toast.LENGTH_SHORT).show(); userApiServer.loginSign(topActivity, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { Logger.e("info:" + info.getRetDetail()); HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); if (bean.getData().getIsSign()) { CusToast.getInstance(topActivity).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000); } } @Override public void onFailure(HttpInfo info) throws IOException { } }); //检查活动 EfunboxUtil.checkEvents(topActivity, getRootView()); } @Override public void onFailure(HttpInfo info) throws IOException { Logger.e("手机号注册失败:" + info.getRetDetail()); // CusToast.getInstance(topActivity).show("注册失败", 2000); Toast.makeText(topActivity, "注册失败", Toast.LENGTH_SHORT).show(); } }); } else { // CusToast.getInstance(topActivity).show("手机号不正确", 2000); Toast.makeText(topActivity, "手机号不正确", Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(HttpInfo info) throws IOException { } }); } else if (intent.slots.get(0).value.equals("FAIL")) { //获取手机号Token失败 } } } @Override public void onClickLink(String url, HashMap paramMap) { botOnClickLink(url, paramMap); } @Override public void onHandleScreenNavigatorEvent(int event) { botOnHandleScreenNavigatorEvent(event); } }; IAccountChargeMsgListener mIAccountChargeMsgListener = new IAccountChargeMsgListener() { @Override public void onLinkAccountSucceed(String s, String s1) { botOnLinkAccountSucceed(s, s1); } @Override public void onChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) { botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg); } @Override public void onBuyStatusUpdated(@NonNull final String purchaseResult, @NonNull final String productId, @NonNull final String baiduOrderId, @NonNull final String sellerOrderId, @Nullable final String msg, String token) { Consts.setIsNeedLogin(false); //处理支付回调 Logger.e("purchaseResult:" + purchaseResult); Logger.e("productId:" + productId); Logger.e("baiduOrderId:" + baiduOrderId); Logger.e("sellerOrderId:" + sellerOrderId); Logger.e("msg:" + msg); Logger.e("token:" + token); if (purchaseResult.equals("SUCCESS")) { //成功 BotRegisterListener.getBaiDuVipInfo(); } else if (purchaseResult.equals("ERROR")) { //支付失败 } botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token); } }; //endregion //region Description 天猫精灵的代码 private ASRClient mAliTVASRManager; OnASRCommandListener mASRCommandListener = new OnASRCommandListener() { @Override public void onASRStatusUpdated(ASRStatus asrStatus, Bundle bundle) { Logger.e("mASRCommandListener"); } @Override public void onASRServiceStatusUpdated(ASRServiceStatus asrServiceStatus) { Logger.e("onASRServiceStatusUpdated"); Message message = new Message(); if (asrServiceStatus == ASRServiceStatus.ASR_SERVICE_STATUS_CONNECTED) { message.what = TMAIL_INIT_SUCCESS; message.obj = "语音服务注册成功...(" + Thread.currentThread().getId() + ")"; } else { message.what = TMAIL_INIT_ERROR; message.obj = "语音服务注册失败...(" + Thread.currentThread().getId() + ")"; } baseHandler.dispatchMessage(message); } /** * 重要!!!接收到有限的语音指令结果并进行处理。 */ @Override public ASRCommandReturn onNLUResult(String commandDomain, String command, String commandParams, Bundle nlpResult) { Logger.e("ASRCommandReturn"); return null; } @Override public void getAppContextData(AppContextData appContextData) { Logger.e("AppContextData"); } @Override public Bundle getSceneInfo(Bundle bundle) { return null; } @Override public Bundle asrToClient(Bundle bundle) { return null; } }; OnGetMediaPolicyListener mOnGetMediaPolicyListener = new OnGetMediaPolicyListener() { @Override public int onGetMediaPolicy() { return OnGetMediaPolicyListener.POLICY_CALL_PHONE; } }; //endregion protected void onScreenUserPresent() { } protected void onAppScreenOff() { } }