Commit 24f41902 by 浦耀宗

修改了文档

parent ff679532
## Integrated AAR file instructions
## [中文文档点我](http://gitlab.csjbot.com/jingweicheng/csjsdkdemo/blob/master/README_zh.md)
## [中文文档点我](http://gitlab.csjbot.com/open/RobotSDKForYingbin-Android-Sample/blob/master/Android-Sample/README_zh.md)
### Step 1 import AAR file
##### Add AAR file to LIBS file
```gradle
......
......@@ -38,16 +38,16 @@ implementation 'io.netty:netty-all:4.1.23.Final'
```java
CsjRobot.authentication(this,"yourkey", "yoursecret", new OnAuthenticationListener() {
@Override
public void success() {
Log.d("TAG","授权成功!");
}
@Override
public void success() {
Log.d("TAG","授权成功!");
}
@Override
public void error() {
Log.d("TAG","授权失败!");
}
});
@Override
public void error() {
Log.d("TAG","授权失败!");
}
});
```
只需联网授权一次即可,后续使用无需联网授权,会做本地验证
......@@ -115,54 +115,54 @@ CsjRobot.getInstance().registerConnectListener(new OnConnectListener() {
功能可以参考 [Demo的AsrNlpActivity.java](http://gitlab.csjbot.com/open/RobotSDKForYingbin-Android-Sample/blob/master/Android-Sample/app/src/main/java/com/demo/csjbot/csjsdkdemo/future/AsrNlpActivity.java)
1. 打开、关闭语音服务(默认打开,enableAsr 需要置为true)
1打开、关闭语音服务(默认打开,enableAsr 需要置为true)
```java
CsjRobot.getInstance().getSpeech().startSpeechService();
```
```java
CsjRobot.getInstance().getSpeech().startSpeechService();
```
2. 注册机器人语音识别和语义理解事件
2注册机器人语音识别和语义理解事件
```java
private OnSpeechListener onSpeechListener = new OnSpeechListener() {
@Override
public void speechInfo(final String s, final int i) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 简单解析示例
if (Speech.SPEECH_RECOGNITION_RESULT == i) { // 识别到的信息
...
} else if (Speech.SPEECH_RECOGNITION_AND_ANSWER_RESULT == i) {// 识别到的信息与的回答
...
}
}
});
}
};
```
3. 打开多次语音识别
```java
private OnSpeechListener onSpeechListener = new OnSpeechListener() {
@Override
public void speechInfo(final String s, final int i) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 简单解析示例
if (Speech.SPEECH_RECOGNITION_RESULT == i) { // 识别到的信息
...
} else if (Speech.SPEECH_RECOGNITION_AND_ANSWER_RESULT == i) {// 识别到的信息与的回答
...
}
}
});
}
};
```
```java
CsjRobot.getInstance().getSpeech().startIsr();
```
3、打开多次语音识别
注意:此方法默认不会调用,调用之后,SDK将独占麦克风
```java
CsjRobot.getInstance().getSpeech().startIsr();
```
如果想要停止识别
4. 停止语音识别
注意:此方法默认不会调用,调用之后,SDK将独占麦克风
```
CsjRobot.getInstance().getSpeech().stopIsr();
```
如果想要停止识别
5. 关闭
4、停止语音识别
```java
CsjRobot.getInstance().getSpeech().closeSpeechService();
```
```
CsjRobot.getInstance().getSpeech().stopIsr();
```
5、关闭
```java
CsjRobot.getInstance().getSpeech().closeSpeechService();
```
#### 唤醒事件
......@@ -185,92 +185,92 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
#### 第一次开机
1. 寻找一个合适的地方安放充电桩,并且给充电桩上电
​ 1、寻找一个合适的地方安放充电桩,并且给充电桩上电
2. 机器人在充电桩充电、开机
​ 2、机器人在充电桩充电、开机
3. 等待进入系统之后,利用RobotStuido软件进行建立地图
​ 3、等待进入系统之后,利用RobotStuido软件进行建立地图
4. 调用保存地图接口,地图默认名字是 map.map
​ 4、调用保存地图接口,地图默认名字是 map.map
```java
mCsjBot.getAction().saveMap();
```
```java
mCsjBot.getAction().saveMap();
```
5. 随后可以调用查看地图恢复状态
​ 5、随后可以调用查看地图恢复状态
```java
public void queryMapState(View view) {
mCsjBot.getAction().getMapState(onMapStateListener);
}
private OnMapStateListener onMapStateListener = new OnMapStateListener() {
@Override
public void mapState(String s) {
...
}
};
```
```java
public void queryMapState(View view) {
mCsjBot.getAction().getMapState(onMapStateListener);
}
private OnMapStateListener onMapStateListener = new OnMapStateListener() {
@Override
public void mapState(String s) {
...
}
};
```
6. 利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标1
```java
public void getAndSavePose1(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
​ 6、利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标1
7. 利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标2
```java
public void getAndSavePose1(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
```java
public void getAndSavePose2(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
8. 想要去往点位1,则可以调用去往点位,参见调用方法
​ 7、利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标2
```java
public void goPose1(View view) {...}
```
```java
public void getAndSavePose2(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
```java
private void goPose(final RobotPose pose) {...}
```
9. 如果想要中途取消,则可以调用取消导航方法
​ 8、想要去往点位1,则可以调用去往点位,参见调用方法
```java
public void cancelNavi(View view) {
mCsjBot.getAction().cancelNavi(new OnNaviListener() {
@Override
public void moveResult(String s) {}
@Override
public void messageSendResult(String s) {}
@Override
public void cancelResult(String s) {
//在此回调中获取状态
}
@Override
public void goHome() {}
});
}
```
```java
public void goPose1(View view) {...}
```
```java
private void goPose(final RobotPose pose) {...}
```
​ 9、如果想要中途取消,则可以调用取消导航方法
```java
public void cancelNavi(View view) {
mCsjBot.getAction().cancelNavi(new OnNaviListener() {
@Override
public void moveResult(String s) {}
@Override
public void messageSendResult(String s) {}
@Override
public void cancelResult(String s) {
//在此回调中获取状态
}
@Override
public void goHome() {}
});
}
```
#### 再次开机导航流程
......@@ -328,361 +328,66 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
#### 其他运动接口
1. 点动,调用接口可以让机器人往前、后、左、右运动,注意:这些方法传感器将不起作用,也不会导航
```java
public void forward(View view) {
mCsjBot.getAction().moveForward();
}
public void backward(View view) {
mCsjBot.getAction().moveBack();
}
public void turnLeft(View view) {
mCsjBot.getAction().moveLeft();
}
public void turnRight(View view) {
mCsjBot.getAction().moveLeft();
}
```
Tips:如果想要做App控制机器人运动,可以调用这些方法
2. 转身,转特定角度,以机器人目前朝向作为参考
```java
public void turnRight60Degrees(View view) {
mCsjBot.getAction().moveAngle(-60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
public void turnLeft60Degrees(View view) {
mCsjBot.getAction().moveAngle(60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
```
1、点动,调用接口可以让机器人往前、后、左、右运动,注意:这些方法传感器将不起作用,也不会导航
Tips:可以利用这个来做声源定位的转身
```java
public void forward(View view) {
mCsjBot.getAction().moveForward();
}
转到特定的角度,以机器人开机朝向作为参考
public void backward(View view) {
mCsjBot.getAction().moveBack();
}
```java
public void turnTo60(View view) {
mCsjBot.getAction().goAngle(60);
}
```
public void turnLeft(View view) {
mCsjBot.getAction().moveLeft();
}
3.
public void turnRight(View view) {
mCsjBot.getAction().moveLeft();
}
```
​ Tips:如果想要做App等远程控制机器人运动,可以调用这些方法
​ 2、转身,转特定角度,以机器人目前朝向作为参考
```java
public void turnRight60Degrees(View view) {
mCsjBot.getAction().moveAngle(-60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
### 注册机器人实时图像传输事件
```java
// 摄像头实时图片传输
CsjRobot.getInstance().registerCameraListener(new OnCameraListener() {
@Override
public void response(Bitmap bitmap) {
public void turnLeft60Degrees(View view) {
mCsjBot.getAction().moveAngle(60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
});
}
```
### 注册机器人综合人体检测事件
```java
// 综合人体检测
CsjRobot.getInstance().registerDetectPersonListener(new OnDetectPersonListener() {
@Override
public void response(int i) {
if(i == 0){ // 无人
Log.d("TAG","registerDetectPersonListener:无人");
}else if(i == 1){ // 有人
Log.d("TAG","registerDetectPersonListener:有人");
}
}
});
```
​ Tips:可以利用这个来做声源定位的转身
### 注册人脸信息事件
```java
// 人脸信息
CsjRobot.getInstance().registerFaceListener(new OnFaceListener() {
@Override
public void personInfo(String s) {
// 人脸识别到的会员信息(人脸一直在就会持续触发)
Log.d("TAG","registerFaceListener:s:"+s);
}
@Override
public void personNear(boolean b) {
if(b){// 有人脸靠近
Log.d("TAG","registerFaceListener:有人脸靠近");
}else{// 人脸消失
Log.d("TAG","registerFaceListener:人脸消失");
}
}
});
```
​ 3、转到特定的角度,以机器人开机朝向作为参考
### 注册机器人头部传感器事件(小雪)
```java
// 机器人头部传感器(小雪)
CsjRobot.getInstance().registerHeadTouchListener(new OnHeadTouchListener() {
@Override
public void response() {
Log.d("TAG","registerHeadTouchListener:头部传感器触发");
}
});
public void turnTo60(View view) {
mCsjBot.getAction().goAngle(60);
}
```
### 机器人动作
```java
// 机器人动作
Action action = CsjRobot.getInstance().getAction();
// 动作重置
action.reset();
// 肢体动作(bodyPart:肢体部位,action:对应动作)
action.action(2,6);// 低头
// 开始左右摆手(intervalTime:间隔时间)
action.startWaveHands(1000);
// 停止左右摆手
action.stopWaveHands();
// 开始跳舞
action.startDance();
// 停止跳舞
action.stopDance();
// 获取当前机器人的位置信息
action.getPosition(new OnPositionListener() {
@Override
public void positionInfo(String s) {
// 返回json
/*{
"msg_id":"NAVI_GET_CURPOS_RSP",
"x":”0”,
"y":”0”,
"z":”0”,
"rotation":”0”,
"error_code":0
}*/
}
});
// 移动方法(direction:方向 0:前 1:后 2:左 3:右)
// 移动距离较短
action.move(0);
// 导航方法(机器人导航到某个点)
String json = "";
/*{
"x":2,
"y":1,
"z":0,
"rotation":30
}*/
action.navi(json, new OnNaviListener() {
@Override
public void moveResult(String s) {
// 到达后通知
}
@Override
public void messageSendResult(String s) {
// 导航消息发送成功后的通知
}
@Override
public void cancelResult(String s) {
}
@Override
public void goHome() {
}
});
// 机器人取消当前导航
action.cancelNavi(new OnNaviListener() {
@Override
public void moveResult(String s) {
}
@Override
public void messageSendResult(String s) {
}
@Override
public void cancelResult(String s) {
// 机器人取消导航通知
}
@Override
public void goHome() {
}
});
// 转至特定角度()
action.goAngle(180);
// 步进角度(Rotation>0:向左转,Rotation<0:向右转)
action.moveAngle(180, new OnGoRotationListener() {
@Override
public void response(int i) {
// 到达角度通知
}
});
// 回去充电
action.goHome(new OnNaviListener() {
@Override
public void moveResult(String s) {
}
@Override
public void messageSendResult(String s) {
}
@Override
public void cancelResult(String s) {
}
@Override
public void goHome() {
// 充电通知
}
});
// 保存当前机器人的地图信息
action.saveMap();
action.saveMap(String name);
// 加载保存的机器人地图信息
action.loadMap();
action.loadMap(String name);
// 机器人速度设置(0.1-0.7,默认0.5)
action.setSpeed(0.6f);
// 获取所有地图
action.getMapList(new OnMapListListener() {
@Override
public void response(String s) {
}
});
// 导航状态查询
action.search(new OnNaviSearchListener() {
@Override
public void searchResult(String s) {
/*{
"msg_id":"NAVI_GET_STATUS_RSP",
"state":0,
"error_code":0
}*/
// state:0空闲,1:正在导航
}
});
// 点头动作
action.nodAction();
// 小雪右臂摆动
action.snowRightArm();
// 小雪左臂摆动
action.snowLeftArm();
// 小雪双臂摆动
action.snowDoubleArm();
// 爱丽丝抬头
action.AliceHeadUp();
// 爱丽丝头低头
action.AliceHeadDown();
// 爱丽丝头部重置
action.AliceHeadHReset();
// 爱丽丝左手臂抬起
action.AliceLeftArmUp();
// 爱丽丝左手臂放下
action.AliceLeftArmDown();
// 爱丽丝右手臂抬起
action.AliceRightArmUp();
// 爱丽丝右手臂放下
action.AliceRightArmDown();
// 小雪左臂摆动次数
action.SnowLeftArmSwing(20);
// 小雪右臂摆动次数
action.SnowRightArmSwing(20);
// 小雪双臂摆动次数
action.SnowDoubleArmSwing(20);
// 向左转
action.turnLeft(new OnGoRotationListener() {
@Override
public void response(int i) {
// 完成通知
}
});
// 向右转
action.turnRight(new OnGoRotationListener() {
@Override
public void response(int i) {
// 完成通知
}
});
// 向左移动
action.moveLeft();
// 向右移动
action.moveRight();
// 前进
action.moveForward();
// 后退
action.moveBack();
```
### TTS(语音合成)
```java
// 机器人TTS
ISpeechSpeak speak = CsjRobot.getInstance().getTts();
......@@ -716,40 +421,7 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
CsjRobot.getInstance().setTts(null);
```
### 语音识别
```java
// 机器人语音
Speech speech = CsjRobot.getInstance().getSpeech();
// 开启讯飞语音服务(默认开启,无需手动调用)
speech.startSpeechService();
// 关闭讯飞语音服务
speech.closeSpeechService();
// 开启多次识别
speech.startIsr();
// 关闭多次识别
speech.stopIsr();
// 开启单次识别
speech.startOnceIsr();
// 关闭单次识别
speech.stopOnceIsr();
// 手动唤醒机器人
speech.openMicro();
// 手动去获取问题的答案
speech.getResult("你叫什么名字?", new OnSpeechGetResultListener() {
@Override
public void response(String s) {
}
});
```
### 人脸识别信息
```java
......@@ -815,188 +487,27 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
### 机器人状态
```java
// 机器人状态
State state = CsjRobot.getInstance().getState();
// 机器人的连接状态
state.isConnect();
// 机器人的电量值
state.getElectricity();
// 机器人当前充电状态
state.getChargeState();
// 机器人关机
state.shutdown();
// 机器人重启
state.reboot();
// 获取机器人电量信息
state.getBattery(new OnRobotStateListener() {
@Override
public void getBattery(int i) {
// 返回的电量值
}
@Override
public void getCharge(int i) {
}
});
// 获取机器人的充电状态
state.getCharge(new OnRobotStateListener() {
@Override
public void getBattery(int i) {
}
@Override
public void getCharge(int i) {
// 返回的充电状态
}
});
// 机器人检查信息
state.checkSelf(new OnWarningCheckSelfListener() {
@Override
public void response(String s) {
// 返回机器人的检查信息
}
});
// 手动获取综合人体检测的信息
state.getPerson(new OnDetectPersonListener() {
@Override
public void response(int i) {
// 返回的状态
// i==0 无人 i==1 有人
}
});
// 获取机器人的SN信息
state.getSN(new OnSNListener() {
@Override
public void response(String s) {
// 返回的SN信息
}
});
```
### 机器人表情
```java
// 机器人表情
Expression expression = CsjRobot.getInstance().getExpression();
// 获取机器人表情
expression.getExpression(new OnExpressionListener() {
@Override
public void response(int i) {
// 返回的表情
}
});
// 开心
expression.happy();
// 悲伤
expression.sadness();
// 惊讶
expression.surprised();
// 微笑
expression.smile();
// 正常
expression.normal();
// 愤怒
expression.angry();
// 闪电
expression.lightning();
// 困倦
expression.sleepiness();
```
### 机器人版本
```java
// 机器人版本信息
Version version = CsjRobot.getInstance().getVersion();
// 获取机器人版本信息
version.getVersion(new OnGetVersionListener() {
@Override
public void response(String s) {
// 返回的版本信息
}
});
// 底层软件检查
version.softwareCheck(new OnUpgradeListener() {
@Override
public void checkRsp(int i) {
if (i == 60002) {//已是最新版本
} else if (i == 60001) {//没有获取到版本信息,请检查网络
} else if (i == 0) {//正常更新
}
}
@Override
public void upgradeRsp(int i) {
}
@Override
public void upgradeProgress(int i) {
}
});
// 机器人版本信息
Version version = CsjRobot.getInstance().getVersion();
// 底层软件更新
version.softwareUpgrade(new OnUpgradeListener() {
@Override
public void checkRsp(int i) {
}
@Override
public void upgradeRsp(int i) {
}
@Override
public void upgradeProgress(int i) {
// 更新进度
}
});
// 获取机器人版本信息
version.getVersion(new OnGetVersionListener() {
@Override
public void response(String s) {
// 返回的版本信息
}
});
```
### 其他功能
```java
// 其他功能
Extra extra = CsjRobot.getInstance().getExtra();
// 获取机器人的热词列表
extra.getHotWords(new OnHotWordsListener() {
@Override
public void hotWords(List<String> list) {
// 返回的热词列表
}
});
// 设置热词功能
extra.setHotWords(null);
// 恢复出厂设置
extra.resetRobot();
```
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论