Files
Obsidian/项目文档/徐工/语音/应用列表JSON组装说明.md
2026-11-05 14:35:04 +08:00

2.6 KiB

项目 值 类型
请求名称 syncAppList String
参数名称 appList String
参数内容 应用列表 JSON 字符串 String
BundleMutablePayload params = new BundleMutablePayload();
params.putString("appList", appListJson);

Request request = new Request("syncAppList", params);
sendCommandTxz(request);

注意:appList 参数本身是一个字符串,字符串内容才是应用列表 JSON,不是直接向参数中放入 JSON 对象。

##应用列表 JSON 格式

{
  "list": [
    {
      "app.name": "空调",
      "app.package": "com.yaxon.hvac"
    },
    {
      "app.name": "音乐",
      "app.package": "com.yaxon.music"
    }
  ]
}

3.3 字段定义

字段 类型 是否必填 说明
list JSON Array 是 应用信息数组
app.name String 是 提供给语音识别使用的应用名称
app.package String 是 应用包名或约定的应用功能标识

每个应用元素当前只包含 app.name 和 app.package 两个字段。

private void scanNativeApp() {
    mThreadPoolTool.execute(() -> {
        JsonHelper jsonHelper = new JsonHelper();
        PackageManager packageManager =
                YxApplication.getApplication().getPackageManager();
        List<PackageInfo> packageInfoList =
                packageManager.getInstalledPackages(0);
        JSONArray jsonArray = jsonHelper.createJsonArray();

        for (PackageInfo packageInfo : packageInfoList) {
            ApplicationInfo applicationInfo = packageInfo.applicationInfo;
            String appName = applicationInfo.loadLabel(packageManager).toString();
            String packageName = packageInfo.packageName;
            if (mAppInfoMap.containsKey(packageName)) {
                appName = mAppInfoMap.get(packageName);
            }
            JSONObject item = jsonHelper.createJsonObject(
                    new Pair<>("app.name", appName),
                    new Pair<>("app.package", packageName));
            if (item != null) {
                jsonArray.put(item);
            }
        }

        for (Map.Entry<String, String> app : mCustomAppMap.entrySet()) {
            JSONObject item = jsonHelper.createJsonObject(
                    new Pair<>("app.name", app.getValue()),
                    new Pair<>("app.package", app.getKey()));
            if (item != null) {
                jsonArray.put(item);
            }
        }

        jsonHelper.putJsonArray("list", jsonArray);
        VoiceManager.VOICE_EVENT_HELPER
                .sendAppListScanComplete(jsonHelper.toJson());
    });
}