开发 AIoT 智能眼镜SDK 常见问题

常见问题 最后更新时间: 2026年08月19日

1、agent回复“不理解”等回复

  • 当前是否处于多轮状态
  • 顺路搜和泛搜需要将第一轮的选点数据传进去(存储的时候做好置空等逻辑)

2、顺路去xxx,最后是修改终点

  • 服务的策略原因
  • 如果有修改途径点,是因为服务记录了之前的行为,换一个地点还是会改成终点

3、app链路不生效,保证destination是否设置了app链路

AgentClient.AgentCommandDestination mAgentCommandDestination = AgentClient.AgentCommandDestination.AMAP_APP;

4、泛搜/顺路搜支持多轮、泛搜支持打断的实现

泛搜和顺路搜支持多轮

if (queryResult.actionType != null && queryResult.actionType != AMapAgentQueryResult.ActionType.NONE) {
                mCurrentActionType = queryResult.actionType;
            }

            if (queryResult.actionType == AMapAgentQueryResult.ActionType.SEARCH_POI) {
                mCurrentPoiResult = (PoiResultWrapper) queryResult.resultObj;
            } else if (queryResult.actionType == AMapAgentQueryResult.ActionType.ROUTE_SEARCH) {
                mRoutePOIItemList = (List<RoutePOIItem>) queryResult.resultObj;
            }

泛搜支持打断

/**
     * 填充上下文参数(用于选择场景)
     */
    private void fillContextParam(AMapAgentQueryParam param) {
        if (mCurrentActionType == AMapAgentQueryResult.ActionType.SEARCH_POI) {
            param.selectedObject = mCurrentPoiResult;
            param.lastActionType = AMapAgentQueryResult.ActionType.SEARCH_POI;
            // 泛搜支持打断
            mAMapApi.getAgentClient().resetAgentStatus();
        } else if (mCurrentActionType == AMapAgentQueryResult.ActionType.ROUTE_SEARCH) {
            param.selectedObject = mRoutePOIItemList;
            param.lastActionType = AMapAgentQueryResult.ActionType.ROUTE_SEARCH;
        }
    }

其他指令例如select poi work flow不需要填充上下文,直接进行多轮即可

5、排查问题,需要提供日志和时间点、adiu

5.1 LBS SDK侧全链路日志

  • agent/link 日志,接入流程如下:
mAMapContext.setLogger(new ILogger() {
    @Override
    public void onLog(int level, String msg) {
      Log.i(TAG, msg);
    }
});
  • lbs的全链路日志
AMapNavi.setFullLinkLogCallback(new FullLinkLogCallback() {
    @Override
    public void onLogCallback(String s, long l) {
        Log.i(TAG, "onLogCallback: " + s + ", " + l);
    }
});

5.2 定位引擎OPT日志

# opt/alc 日志路径都在这里
adb pull /sdcard/Android/data/<wow包名>/files/autonavi/alc/

5.3 导航ALC日志

参考文档 ALC 日志开关使用说明

5.4 adiu获取方法

  • 获取adiu方式: AMapNavi#getDeviceId可以获取

6、跳转到高德app的授权应用名配置

在application android:label中配置即可

7、支持后台导航能力

Android

自己new AMapNaviView对象,但是记得调用onCreate方法

// mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);
// 不挂activity,自己创建navi view,支持service后台导航
mAMapNaviView = new AMapNaviView(getApplicationContext());

mAMapNaviView.onCreate(savedInstanceState);

iOS

自己new mAMapNaviView对象,不往父视图上添加

self.mAMapNaviView = [[AMapNaviDriveView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
// **不往视图栈上添加
//    [self.view addSubview:self.mAMapNaviView];
    [self.mAMapNavi addDataRepresentative:self.mAMapNaviView];
   

8、如果路线数据太大,可以先裁剪发送小数据过去

type 2是路线数据,距离长就会比较大,可以先裁剪,然后再发完整的数据过去

// 参数是点的个数,返回值是裁剪后的pb数据
NaviInfo partialRouteInfo = mAMapApi.getNaviClient().getPartialRouteGroup
NaviInfo partialRouteInfo = mAMapApi.getLinkClient().getPartialRouteGroup

partialRouteInfo就是type 2类型的数据,直接传递给rtos即可

9、PB Data Type协议

enum AMapNaviDataType {
    AMapNaviDataTypeNone = 0;                          // 无
    AMapNaviDataCalcSuccess = 1;                       // 算路成功 since 3.0.0(算路成功回调,但是路线可能不会使用)
    AMapNaviDataTypeUpdateRouteGroup = 2;              // 路线数据更新 since 3.0.0(重算路成功且路线真正应用;备选路线更新)AMap Trigger By C++
    AMapNaviDataCalcFailed = 3;                        // 算路失败 since 3.0.0
    AMapNaviDataTypeUpdateNaviInfo = 4;                // 行中导航信息 since 3.0.0
    AMapNaviDataTypeUpdateTurnIcon = 5;                // 导航中的转向图标更新(Amap 黑卡)
    AMapNaviDataTypeUpdateNextTurnIcon = 6;            // 导航中的下下个转向图标更新(本期不需要)
    AMapNaviDataTypeStartNavi = 7;                    // 开始导航since 3.0.0(驾车、骑行、步行,第一次有路线真正开始导航)
    AMapNaviDataTypePlayNaviSound = 8;                 // 播报导航信息(AMap Trigger By C++)
    AMapNaviDataTypeArrivedWayPoint = 9;               // 到达途经点 since 3.0.0
    AMapNaviDataTypeShowRearApprVehicle = 10;          // 后方来车提醒 since 3.0.0(AMap Trigger By C++)
    AMapNaviDataTypeHideRearApprVehicle = 11;          // 后方来车提醒信息隐藏 since 3.0.0 (AMap Trigger By C++)
    AMapNaviDataTypeShowTrafficSignal = 12;            // 红绿灯倒计时,实时更新 since 3.0.0 (AMap Trigger By C++)
    AMapNaviDataTypeHideTrafficSignal = 13;            // 红绿灯倒计时信息隐藏 since 3.0.0 (AMap Trigger By C++)
    AMapNaviDataTypeShowLaneInfo = 14;                 // 车道线数据 since 3.0.0
    AMapNaviDataTypeHideLaneInfo = 15;                 // 车道线隐藏 since 3.0.0
    AMapNaviDataTypeUpdateNaviLocation = 16;           // 定位信息 since 3.0.0 (AMap Trigger By C++)
    AMapNaviDataTypeTrafficBarInfo = 17;               // 光柱图信息(本期不需要)(AMap Trigger By C++)
    AMapNaviDataTypeTrackingModeInfo = 18;             // 跟随模式 since 3.0.0
    AMapNaviDataTypeReset = 19;                        // 重置(开平侧重置眼镜数据,amap侧不用关注)
    AMapNaviDataHighLightChanged = 20;                 // 高亮路线变更 since 3.0.0(重算路成功且路线真正应用;切换路线)
    AMapNaviDataTypeVUIStructuredInfo= 21;             //结构化数据(agent发送指令后,AMap返回)
    AMapNaviDataTypeStopNavi = 100;                    // 结束导航 since 3.0.0
    AMapNaviDataTypeArrivedDestination = 200;          // 到达目的地 since 3.0.0
}

// AMapNaviDataType enum
enum AMapNaviDataSource {
    AMapNaviDataSourceOpen = 0;      // 用户App内集成开平SDK,并导航
    AMapNaviDataSourceOpenAgent = 1; // 数据来自开平Agent SDK
    AMapNaviDataSourceAMap = 2;      // 数据来自AMap
}

// AMapNaviData 定义包含类型和数据的消息
message AMapNaviData {
    AMapNaviDataType type = 1;                          // 类型
    AMapNaviDataSource source = 2;                      // 数据来源
    bytes data = 3;                                     // 数据,使用 bytes 类型处理 NSData
    uint64 len = 4;                                     // 数据长度
    string version = 5;                                 // 数据版本号
}

10、常量(错误码、场景等)

package com.amap.llm.agent.api;

public class AMapConstants {
    public enum Status {
        STATUS_SILENT, // silent初始状态
        STATUS_TRANSLATE, // 意图识别状态
        STATUS_AUTOLISTEN // 多轮状态
    }

    public static class SceneType {
        // 行前场景 - 主图
        public static final String HOME = "home";
        // 行前场景 - 路线规划
        public static final String ROUTE = "route";
        // 行中场景
        public static final String NAVI = "navi";
        // 搜索场景
        public static final String SEARCH = "search";
    }

    public static final String TRAVEL_TYPE_CAR = "0";
    public static final String TRAVEL_TYPE_BUS = "1";
    public static final String TRAVEL_TYPE_WALK = "2";
    public static final String TRAVEL_TYPE_RIDE = "3";

    public static final String POI_TYPE_POI = "0";
    public static final String POI_TYPE_HOME = "1";
    public static final String POI_TYPE_COMPANY = "2";

    public static final String ERROR_CODE_GENERAL_STR = "-10001";
    // 状态机状态不合法
    public static final String ERROR_CODE_ILLEGAL_STATUS_STR = "-10002";
    // so加载失败
    public static final String ERROR_CODE_SO_LOAD_FAILED_STR = "-10003";
    public static final String ERROR_CODE_AGENT_NOT_INIT = "-10004";

    // 当前命令不支持
    public static final int ERROR_CODE_CMD_NOT_SUPPORT = -20001;
    // query超时
    public static final int ERROR_CODE_QUERY_TIMEOUT = -20002;
    // home未设置
    public static final int ERROR_CODE_HOME_NOT_SET = -20003;
    // company未设置
    public static final int ERROR_CODE_COMPANY_NOT_SET = -20004;
    // 当前命令执行超时
    public static final int ERROR_CODE_CMD_TIMEOUT = -20005;

    // cxx代码返回的错误码,和cxx错误码(AIDErrorCode)保持一致
    public static final int AID_SUCCESS_CODE = 0;
    public static final int AID_ERROR_CODE_NETWORK_ERROR = -30001;
    public static final int AID_ERROR_CODE_NETWORK_DATA_EMPTY = -30002;
    public static final int AID_ERROR_CODE_NETWORK_PARSE_FAILED = -30003;
    public static final int AID_ERROR_CODE_LAST_DIALOG_ERROR = -30004;
}

11、版本信息

当前SDK版本可通过以下方式获取:

// Agent SDK 业务版本
NSString *version = [[AMapAgentClientManager shareInstance] version];
NSLog(@"SDK版本: %@", version);

// Link SDK 业务版本
NSString *linkVersion = [[AMapLinkManager sharedInstance] linkVersion];
返回顶部 示例中心 常见问题 智能客服 公众号
二维码