常见问题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中对应的文件即可。