c-brain-glass/app/src/main/java/com/nova/brain/glass/MyApplication.java
徐勤民 c2d8a0f40e docs(helper): 更新语音识别和图像解码工具类文档
- 为 AsrHelper 添加详细的类注释,说明工作流程、连接管理和场景路由机制
- 为 BitmapDecodeHelper 添加类注释,解释 AR 眼镜低内存场景下的优化策略
- 为 GlassMediaServiceHelper 添加类注释,说明双检锁懒加载缓存机制
- 为 MyApplication 添加类注释,详细说明多域名 AppComponent 初始化和 SDK 绑定流程
- 为各个关键方法添加详细的 KDoc 注释,包括参数说明和使用场景
- 优化代码注释的中文表达,使其更加清晰易懂
2026-04-21 22:30:53 +08:00

99 行
4.3 KiB
Java

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

package com.nova.brain.glass;
import com.blankj.utilcode.util.Utils;
import com.nova.brain.glass.helper.AsrHelper;
import com.nova.brain.glass.helper.OfflineCmdServiceHelper;
import com.nova.brain.glass.repository.HeaderInterceptor;
import com.rokid.security.glass3.open.sdk.GlassSdk;
import com.rokid.security.glass3.open.sdk.client.IServiceConnectionCallback;
import com.xuqm.base.App;
import com.xuqm.base.di.component.AppComponent;
import com.xuqm.base.di.manager.HttpManager;
/**
* 应用全局入口。
*
* <p>负责以下初始化工作:
* <ol>
* <li>为不同服务域名各自创建独立的 {@link AppComponent},避免 OkHttp 连接池跨域名串用。</li>
* <li>绑定 Rokid Glass SDK 安全服务;连接成功后顺序初始化离线关键词和在线语音模块。</li>
* </ol>
*
* <p>各 AppComponent 对应关系:
* <ul>
* <li>{@code appComponent} — 主后台(任务中心、决策中心、审阅等核心接口)</li>
* <li>{@code appComponent1} — 意图识别服务(将 ASR 文本映射为页面导航动作)</li>
* <li>{@code appComponent2} — 喷涂质检服务拍照上传、OCR 识别、结果保存)</li>
* <li>{@code appComponent3} — 单证检验服务(文件验证、质检判定、任务完成)</li>
* </ul>
*
* @author xuqm
*/
public class MyApplication extends App {
// 主后台服务地址(通过内网穿透暴露到公网)
public static String baseUrl = "http://22fs132201.imwork.net";
// public static String baseUrl = "http://192.168.6.20";
// 意图识别服务的 Dagger 网络组件
public static AppComponent appComponent1;
// 喷涂质检服务的 Dagger 网络组件
public static AppComponent appComponent2;
// 单证检验服务的 Dagger 网络组件
public static AppComponent appComponent3;
@Override
public void onCreate() {
super.onCreate();
// 为每个域名单独构建 OkHttpClient + Retrofit 实例,互不干扰
appComponent = HttpManager.getAppComponent(baseUrl, new HeaderInterceptor(getApplicationContext()));
appComponent1 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
appComponent2 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
appComponent3 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
// appComponent1 = HttpManager.getAppComponent("http://192.168.6.20:12119", new HeaderInterceptor(getApplicationContext()));
// appComponent2 = HttpManager.getAppComponent("http://192.168.6.156:10085", new HeaderInterceptor(getApplicationContext()));
// appComponent3 = HttpManager.getAppComponent("http://192.168.22.199:8820/", new HeaderInterceptor(getApplicationContext()));
initSdk();
}
@Override
public boolean showLog() {
return super.showLog();
}
/**
* 绑定 Rokid Glass 安全服务。
*
* <p>Glass SDK 需要通过系统 AIDL 服务完成硬件鉴权,绑定成功后才能使用离线关键词和相机等能力。
* 离线关键词({@link OfflineCmdServiceHelper})和在线语音({@link AsrHelper})必须在此回调中初始化,
* 否则底层 SDK 尚未就绪,调用会静默失败。
*/
void initSdk() {
// SDK 已就绪时无需重复绑定(进程保活场景下可能触发)
if (GlassSdk.isReady()) {
return;
}
GlassSdk.bindSecurityService(Utils.getApp(), new IServiceConnectionCallback() {
@Override
public void onServiceConnected() {
// 先注册离线关键词,再初始化在线语音ASR 唤醒词依赖离线服务)
OfflineCmdServiceHelper.INSTANCE.init();
AsrHelper.INSTANCE.init();
}
@Override
public void onServiceDisconnected() {
// 系统服务断开,硬件能力暂时不可用,等待系统自动重连
}
@Override
public void onBindingDied() {
// Binder 死亡(通常是系统进程崩溃),需要重新绑定;当前版本依赖系统自恢复
}
});
}
}