スキップしてメイン コンテンツに移動

投稿

3月, 2019の投稿を表示しています

Pepper SDK入門(6) アクション

ロボットフォーカスとロボットライフサイクルに関しては、前回学習しました。今回はPepperのアクションについて掘り下げます。 Pepperでのアクション実行 Pepperは、話す・聞く・動く・アニメーションを再生する・人間を見つめる・チャットを行う・視線を動かす・特定の地点に留まる・写真を撮るといった動作が可能です。アプリを開発する際、これらのアクションがメインの構成要素になります。 前提条件 このページで説明しているアクションの利用方法を理解するためには、Javaの非同期やスレッドに関する知識が必要です。 1.アクションの作成 ビルダーを用いて、アクションを同期もしくは非同期で作成します。以下が各アクションをビルドする手順です。 アクションのビルダーにQiContextを渡す ビルダーへアクションのパラメータを渡す buildメソッドかbuildAsyncメソッドを呼び、アクションを作成する 同期 アクションを同期で作成するため、ビルダーのbuildメソッドを呼びます。 Say say = SayBuilder.with(qiContext) .withText("こんにちは") .build(); 警告 アクションを同期で作成した際はPepperとタブレットが通信するため、UI上で実行するとNetworkOnMainThreadExceptionがスローされる可能性があります。 非同期 アクションを非同期で作成するため、ビルダーのbuildAsyncメソッドを呼びます。 Future<say>sayActionFuture = SayBuilder.with(qiContext) .withText("Hello!") .buildAsync(); アクションを非同期で作成すると、非同期処理と連携するためのFutureインスタンスが取得できます。 2.アクションの実行 1で作成したアクションを実行してみまし

Pepper SDK入門(5) Robot focus と Robot lifecycle

Pepper SDK Plugin導入から始まり、簡単なロボアプリの開発を行ってきました。今回は、QiSDKの基本となるRobot focus と Robot lifecycleについて説明します。 1.フォーカスを理解する まずはロボットフォーカスについての簡単な説明です。 Activityがロボットのアクションを実行するためには、ロボットフォーカスが必要です。ロボットフォーカスはフォアグラウンドのActivityだけが保持することができ、ロボットフォーカスオーナーと呼ばれます。ロボットフォーカスはQiSDKに管理されており、Activityはいつでもロボットフォーカスを獲得したり喪失したりする可能性があります。  2.ロボットライフサイクル Pepper SDK入門(2) はじめてのロボアプリ開発①で登場したロボットライフサイクルについてです。 QiSDKがそれぞれのActivity用のロボットフォーカスを渡すために、RobotLifecycleCallbacksインタフェースを実装したオブジェクトが必要になります。以下はActivityにRobotLifecycleCallbacksインタフェースを実装した例です。 public class MyActivity extends RobotActivity implements RobotLifecycleCallbacks また、RobotLifecycleCallbacksオブジェクトにコールバックさせるにはonCreateメソッドでActivityとRobotLifecycleCallbacksオブジェクトをQiSDKに登録する必要があります。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); QiSDK.register(this, this); } その上で、onDestroyメソッドでの登録解除も必要です。  @Override protected void onDestroy() { QiSDK.unregister(this, this); super.onDestroy(