跳到内容 跳到主导航 跳到页脚

SDK接入

除少数老款机器人外,所有机器人统一使用同一套SDK

机器人的sdk现在是统一一套SDK,包含在demo程序中,请下载demo程序并在libs库中拷贝这个sdk库文件。

示例代码

demo程序下载(最新的sdk已包含在libs目录内):点击下载

配置默认启动程序

配置Manifest文件

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
     </intent-filter>
     <intent-filter>
         <action android:name="action.orionstar.default.app" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
</activity>

App如果需要在开机后默认启动进入,需要在Manifest中配置

<intent-filter>
    <action android:name="action.orionstar.default.app" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

并在设置(三指下拉点击设置进入)- 开发者设置 – 开机启动程序中设置

注意:开机启动程序设置功能在OTA3才正式上线

权限

SDK的完整接入,需要在AndroidManifest.xml中声明以下权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.ainirobot.coreservice.robotSettingProvider" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

SDK接入

1,创建接收语音请求及系统事件的回调

public class ModuleCallback extends ModuleCallbackApi {
    @Override
    public boolean onSendRequest(int reqId, String reqType, String reqText, String reqParam)
            throws RemoteException {
        //接收语音指令,
        //reqTyp : 语音指令类型
        //reqText : 语音识别内容
        //reqParam : 语音指令参数
        return true;
    }
    @Override 
    public void onRecovery() 
            throws RemoteException {
           //控制权恢复,收到该事件后,重新恢复对机器人的控制

    }
    @Override 
    public void onSuspend() 
            throws RemoteException {
           //控制权被系统剥夺,收到该事件后,所有Api调用无效

    }

2,连接server

RobotApi.getInstance().connectServer(this, new ApiListener() {
    @Override
    public void handleApiDisabled() {
    }
    @Override
    public void handleApiConnected() {
        //Server已连接,设置接收请求的回调,包含语音指令、系统事件等
        RobotApi.getInstance().setCallback(new ModuleCallback());
    }
    @Override
    public void handleApiDisconnected() {
        //连接已断开
    }
});

机器人SDK的初始化,标志着机器人把底盘能力权限移交给了当前正在运行的APP。机器人会在系统接管、发生故障、启动了其它带机器人SDK程序的时候发生连接已断开的回调。其中只有系统接管结束时,会重新connect上。

注意1:所有Api必须在连接server成功之后才能够调用

注意2:只有前台进程,在前台运行时能正确的连接并获取机器人底盘控制权限,服务进程不工作。

3,设置回调

RobotApi.getInstance().setCallback(new ModuleCallback());

4,结束指令

RobotApi.getInstance().finishModuleParser(reqId, result);

当收到的请求或语音指令处理完成后需调用finishModuleParser结束该指令,reqId 为onSendRequest回调里获得,result为执行结果

5,注册状态监听

StatusListener statusListener = new StatusListener(){
    @Override
    public void onStatusUpdate(String type, String data) throws RemoteException {
    }; 
}
//注册状态监听
RobotApi.getInstance().registerStatusListener(type, statusListener);
//解除状态监听
RobotApi.getInstance().unregisterStatusListener(statusListener);

type为需要监听的状态类型,type支持以下几种:

  • Definition.STATUS_POSE:机器人当前的坐标,持续上报
  • Definition.STATUS_POSE_ESTIMATE:当前定位状态,定位状态发生改变时上报
  • Definition.STATUS_BATTERY:当前电池状态信息,包括是否在充电、电量多少、是否低电量报警等

6、设置reqId

很多sdk的方法需要传入参数reqId,这是一个用于调试、跟踪日志的id。传入任何数字都能让函数正常工作,但为了日志追踪、调试的方便,建议把reqid做成一个自增长的static变量,或者根据业务需求,传入不同的reqId来做调用函数的区分。

如何正确的启动apk

启动APK时,为确保APK被机器人底盘正确的授权并使用机器人功能,请使用RobotOS Home调起(参见下面视频),如果想开机即启动某个apk,在设置中设置“开机启动apk“即可。

常见问题

1. 调用api返回资源使用冲突问题

sdk中提供的有关硬件使用的api,当同时使用两个接口操作同一个器件时,会发生资源使用冲突问题,比如当机器人导航时,不能使用左转右转api。

2. 机器人分辨率

豹小秘Mini招财豹豹小秘DP
1200×19201920×10801200×1920上屏1200×1920
下屏1080×1920

这篇文章是否有帮助?

-3