常见问题FAQ

1、在线指令如何生效

请联系优必选技术服务工程师。

2、物体靠近检测接口

在实际场景中,如需知道是否有物体靠近或远离机器人,可以在传感器监听中,传human_detect的参数来获取,方法如下:

public class SensorActivity extends AppCompatActivity {

    private static final String TAG = SensorActivity.class.getSimpleName();
    private SensorManager sensorManager;
    private SensorListener sensorListener;

    private boolean mHumanIn = false;
    public static final String SENSOR_HUMAN_DETECT = "human_detect"; //人体检测传感器ID
    public static final int HUMAN_CLOSER = 1; // 有物体靠近
    public static final int HUMAN_AWAY = 2; //有物体离开
    public static final float HUMAN_DETECT_DISTANT_THRESHOLD = 1.3f; // 认为有人进入距离阈值

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor);
        GlobalContext robotContext = Robot.globalContext();
        sensorManager = robotContext.getSystemService(SensorManager.SERVICE);
    }

    public boolean isHumanIn() {
        return mHumanIn;
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(sensorListener);
    }

    @Override
    protected void onResume() {
        super.onResume();
        sensorListener = new SensorListener() {
            @Override
            public void onSensorChanged(SensorDevice sensorDevice, SensorEvent sensorEvent) {
                //此处查看传感器变化事件
                try {
                    int direction = Math.round(sensorEvent.getValues()[0]);
                    switch (direction) {
                        case HUMAN_AWAY:
                            if (mHumanIn) {
                                mHumanIn = false;
                                Log.i(TAG, "HUMAN_AWAY: wakeup");
                            }
                            break;
                        case HUMAN_CLOSER:
                            float distance = sensorEvent.getValues()[1];
                            if (distance < HUMAN_DETECT_DISTANT_THRESHOLD) {
                                if (!mHumanIn) {
                                    mHumanIn = true;
                                    Log.i(TAG, "HUMAN_CLOSER: wakeup");
                                }
                            }
                            break;
                    }
                } catch (Exception e) {
                    Log.w(TAG, "HumanDetectListener Error: " + e.getMessage());
                }
            }
        };
        sensorManager.registerListener(SENSOR_HUMAN_DETECT, sensorListener);
    }
}

3、替换语音引擎示例——使用google语音服务

针对海外的合作伙伴替换不同语言的语音引擎的需求,我们提供了示例代码,请见文件夹overriding-speech-service。

这个demo是针对google cloud的语音服务,请在https://cloud.google.com登录您的账号,获取语音服务(ASR,NLP,TTS)的json密钥,替换demo中对应的文件即可。