Pepper机器人运行两周不同的进程:
一个在平板是,
一个在机器人头部中.
在两个CPU之间有通过USB使用TCP/IP协议的信息传递交换 :
您可以灵活地设计代码,并决定是要同步还是异步处理此通信.
但是,存在*佳的方式,同步或异步工作之间的选择取决于我们将在下面描述的一些因素.
在UI线程中
Android系统允许您使用不同的Activity生命周期回调访问UI线程,例如:
@Override
protected void onCreate(Bundle savedInstanceState){
// Executes on the UI thread.
}
@Override
protected void onResume() {
// Executes on the UI thread.
}
...
pepper外观介绍
(Pepper机器人)
如果在UI线程上执行同步调用,则会阻塞UI并导致糟糕的用户体验.
为了防止这种情况,当您处理UI线程时,必须使用QiSDK异步调用,否则NetworkOnMainThreadException 将抛出.
在实践中
不做:
// UI thread.
Say say = SayBuilder.with(qiContext)
.withText("Hello")
.build(); // Throws a NetworkOnMainThreadException.
// UI thread.
goTo.run(); // Throws a NetworkOnMainThreadException.
做:
// UI thread.
Future sayBuilding = SayBuilder.with(qiContext)
.withText("Hello")
.buildAsync(); // OK.
// UI thread.
goTo.async().run(); // OK.
更多详情:互动机器人 人机交互
- 下一篇:当软银pepper学会了说“垃圾话”
- 上一篇:pepper老师在线为你解答疑难!