导航菜单

页面标题

页面副标题

Petal Maps v4.7.0.310001 - VoiceKitSdk.java 源代码

正在查看: Petal Maps v4.7.0.310001 应用的 VoiceKitSdk.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.huawei.hiassistant.platform.base.northinterface;

import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.huawei.agconnect.apms.APMS;
import com.huawei.hiassistant.platform.base.BaseSdk;
import com.huawei.hiassistant.platform.base.module.ModuleInstanceFactory;
import com.huawei.hiassistant.platform.base.northinterface.Constants;
import com.huawei.hiassistant.platform.base.northinterface.VoiceKitSdk;
import com.huawei.hiassistant.platform.base.northinterface.asr.KitAsrInterface;
import com.huawei.hiassistant.platform.base.northinterface.idsdata.DataServiceInterface;
import com.huawei.hiassistant.platform.base.northinterface.obs.KitObsInterface;
import com.huawei.hiassistant.platform.base.northinterface.postoperation.KitOperationInterface;
import com.huawei.hiassistant.platform.base.northinterface.recognize.KitRecognizeInterface;
import com.huawei.hiassistant.platform.base.northinterface.recognize.RecognizerIntent;
import com.huawei.hiassistant.platform.base.northinterface.service.DecisionServiceInterface;
import com.huawei.hiassistant.platform.base.northinterface.tts.KitTtsInterface;
import com.huawei.hiassistant.platform.base.northinterface.ui.KitUiInterface;
import com.huawei.hiassistant.platform.base.northinterface.visible.VisibleInterface;
import com.huawei.hiassistant.platform.base.northinterface.wakeup.KitWakeupInterface;
import com.huawei.hiassistant.platform.base.policy.OfflineReportManager;
import com.huawei.hiassistant.platform.base.report.OperationReportUtils;
import com.huawei.hiassistant.platform.base.util.DeviceUtil;
import com.huawei.hiassistant.platform.base.util.IAssistantConfig;
import com.huawei.hiassistant.platform.base.util.KitLog;
import com.huawei.hiassistant.platform.base.util.SecureIntentUtil;
import com.huawei.hiassistant.platform.framework.VoiceKitSdkBootstrap;
import java.util.Optional;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;

public abstract class VoiceKitSdk implements KitAsrInterface, DataServiceInterface, KitObsInterface, KitOperationInterface, KitRecognizeInterface, DecisionServiceInterface, KitTtsInterface, KitUiInterface, VisibleInterface, KitWakeupInterface {
    private static final int COUNT_DOWN_TIME = 650;
    private static final Object LOCK = new Object();
    private static final String SDK_CLASSNAME = "com.huawei.hiassistant.platform.framework.VoiceKitSdkBootstrap";
    private static final String TAG = "VoiceKitSdk";
    protected static boolean isSdkCreated;
    protected static CountDownLatch latch;

    private static void addCountDown() {
        Optional empty = Optional.empty();
        synchronized (LOCK) {
            try {
                if (latch == null) {
                    latch = new CountDownLatch(1);
                } else {
                    KitLog.info(TAG, "wait lock");
                    empty = Optional.ofNullable(latch);
                }
            } catch (Throwable th) {
                throw th;
            }
        }
        empty.ifPresent(new Consumer() {
            @Override
            public final void accept(Object obj) {
                VoiceKitSdk.lambda$addCountDown$0((CountDownLatch) obj);
            }
        });
    }

    public static void create(Context context, Intent intent, VoiceKitSdkListener voiceKitSdkListener) {
        create(context, intent, voiceKitSdkListener, null);
    }

    private static void handleError(VoiceKitSdkListener voiceKitSdkListener) {
        voiceKitSdkListener.onError(0, "create sdk failed::catch exception");
        releaseCountDown();
        OperationReportUtils.getInstance().getKitLifeCycleRecord().setError(String.valueOf(0));
        OperationReportUtils.getInstance().getKitLifeCycleRecord().setEndTime(System.currentTimeMillis());
        OperationReportUtils.getInstance().reportKitLifeCycleRecord();
    }

    private static boolean isParamsValid(Context context, Intent intent, VoiceKitSdkListener voiceKitSdkListener) {
        if (voiceKitSdkListener == null) {
            KitLog.error(TAG, "VoiceKitSdk listener is null");
            releaseCountDown();
            return false;
        }
        if (context == null) {
            KitLog.error(TAG, "context is null");
            voiceKitSdkListener.onError(3, "param is invalid::context is null");
            releaseCountDown();
            return false;
        }
        if (intent != null && !TextUtils.isEmpty(SecureIntentUtil.getSecureIntentString(intent, RecognizerIntent.EXT_AUTH_AK)) && !TextUtils.isEmpty(SecureIntentUtil.getSecureIntentString(intent, RecognizerIntent.EXT_AUTH_SK))) {
            return true;
        }
        KitLog.error(TAG, "ignore create::empty ak sk");
        voiceKitSdkListener.onError(3, "empty ak sk");
        releaseCountDown();
        return false;
    }

    public static void lambda$addCountDown$0(CountDownLatch countDownLatch) {
        try {
            KitLog.info(TAG, "await sdk create.");
            countDownLatch.await(650L, TimeUnit.MILLISECONDS);
        } catch (InterruptedException unused) {
            KitLog.error(TAG, "interruptException");
        }
    }

    private static void logCreateInterfaceParams(Intent intent) {
        StringBuilder sb = new StringBuilder();
        if (TextUtils.isEmpty(SecureIntentUtil.getSecureIntentString(intent, RecognizerIntent.EXT_AUTH_CERT))) {
            sb.append("cert is empty, ");
        }
        if (TextUtils.isEmpty(SecureIntentUtil.getSecureIntentString(intent, "sessionId"))) {
            sb.append("session id is empty, ");
        }
        sb.append("disCallback is ");
        sb.append(SecureIntentUtil.getSecureIntentBoolean(intent, RecognizerIntent.EXT_IS_NEED_DIS_CALLBACK, false));
        sb.append(", ");
        sb.append("countryCode is ");
        sb.append(SecureIntentUtil.getSecureIntentString(intent, RecognizerIntent.EXT_ISSUE_COUNTRY_CODE));
        sb.append(", ");
        sb.append("vtId is ");
        sb.append(SecureIntentUtil.getSecureIntentString(intent, RecognizerIntent.EXT_VTID));
        KitLog.debug(TAG, sb.toString(), new Object[0]);
    }

    public static void releaseCountDown() {
        Optional ofNullable;
        synchronized (LOCK) {
            ofNullable = Optional.ofNullable(latch);
            latch = null;
        }
        ofNullable.ifPresent(new Consumer() {
            @Override
            public final void accept(Object obj) {
                ((CountDownLatch) obj).countDown();
            }
        });
    }

    public abstract String getVersionInfo(String str);

    public abstract void release();

    public abstract void releaseRecognizeEngine();

    public abstract void releaseTtsEngine(Intent intent);

    public abstract void renewSession(Intent intent);

    public abstract void stopBusiness(Intent intent);

    public static void create(Context context, Intent intent, VoiceKitSdkListener voiceKitSdkListener, SdkConfig sdkConfig) {
        KitLog.info(TAG, "kitonCreate");
        OfflineReportManager.getInstance().setOfflineReportMode((intent == null || !intent.hasExtra("isOfflineReport")) ? false : SecureIntentUtil.getSecureIntentBoolean(intent, "isOfflineReport", false));
        APMS.getInstance().enableCollectionByUser(true);
        KitLog.info(TAG, "VoiceKit sdk version= 11.3.1.311");
        OperationReportUtils.getInstance().getKitLifeCycleRecord().setVoiceKitSdkVersion("11.3.1.311");
        if (isParamsValid(context, intent, voiceKitSdkListener)) {
            logCreateInterfaceParams(intent);
            OperationReportUtils.getInstance().getKitLifeCycleRecord().setAppPkgName(context.getPackageName());
            OperationReportUtils.getInstance().getKitLifeCycleRecord().setAppPkgVersion(IAssistantConfig.getInstance().getPkgVersion(context, context.getPackageName()));
            if (intent.hasExtra("deviceName")) {
                String secureIntentString = SecureIntentUtil.getSecureIntentString(intent, "deviceName", "phone");
                KitLog.info(TAG, "deviceName :" + secureIntentString);
                DeviceUtil.setDeviceName(secureIntentString);
            }
            if (isSdkCreated) {
                KitLog.warn(TAG, "ignore create::isClientCreated true");
                if (intent.hasExtra(Constants.UserData.PRIVACY_AGREEMENT)) {
                    ModuleInstanceFactory.State.platformState().getSessionState().setPrivacyAgreement(SecureIntentUtil.getSecureIntentBoolean(intent, Constants.UserData.PRIVACY_AGREEMENT, false));
                }
                voiceKitSdkListener.onError(1, "Sdk created already");
                return;
            }
            addCountDown();
            if (isSdkCreated) {
                KitLog.warn(TAG, "ignore create::isClientCreated true");
                if (intent.hasExtra(Constants.UserData.PRIVACY_AGREEMENT)) {
                    ModuleInstanceFactory.State.platformState().getSessionState().setPrivacyAgreement(SecureIntentUtil.getSecureIntentBoolean(intent, Constants.UserData.PRIVACY_AGREEMENT, false));
                }
                voiceKitSdkListener.onError(1, "Sdk created already");
                return;
            }
            try {
                Object newInstance = VoiceKitSdkBootstrap.class.newInstance();
                if (newInstance instanceof BaseSdk) {
                    ((BaseSdk) newInstance).initSdk(context, intent, voiceKitSdkListener, sdkConfig);
                    OperationReportUtils.getInstance().getKitLifeCycleRecord().setStartTime(System.currentTimeMillis());
                } else {
                    KitLog.error(TAG, "object not VoiceKitSdk");
                }
            } catch (ClassNotFoundException e) {
                e = e;
                KitLog.error(TAG, "create sdk exception" + e.getMessage());
                handleError(voiceKitSdkListener);
            } catch (IllegalAccessException e2) {
                e = e2;
                KitLog.error(TAG, "create sdk exception" + e.getMessage());
                handleError(voiceKitSdkListener);
            } catch (InstantiationException e3) {
                e = e3;
                KitLog.error(TAG, "create sdk exception" + e.getMessage());
                handleError(voiceKitSdkListener);
            }
        }
    }
}