Pepper SDK入門(2) はじめてのロボアプリ開発①


発話を行うロボアプリの開発をしながら、開発手順について説明していきたいと思います。Androidプロジェクトを作成し、ロボアプリの初期設定を行い、ActivityがPepperを操作するために必要な実装について見ていきます。

1.プロジェクト作成

ロボアプリ開発にあたって、まず初めに標準的なAndroidプロジェクトを作成し、それにロボアプリの設定を追加します。Android StudioのFileメニューのNewからNew Projectを選択し、Androidプロジェクトを作成してください。プロジェクト作成時のTarget Android DeviceではPhone and TabletのAndroid 6.0 (Marshmallow)が選択してください。

2.ロボアプリの初期設定

作成したAndroidプロジェクトにロボアプリの初期設定を行います。

<手順>
1.FileメニューのNewからRobot Applicationを選択します。
2.サポートするRobot SDKのバージョンと追加するモジュールを選び、OKをクリックしてください。
3.Sync Project with Gradle Fileボタン(下図の参照)をクリックし、プロジェクトとGradleファイルを同期させます。

結果
これでロボアプリの初期設定が完了しました。以下のファイルが更新されていることが確認できます。

  • assetsにrobotディレクトリとrobotsdk.xmlファイルが追加されます。robotsdk.xmlファイルには、選択したRobot SDKのバージョンが含まれています。

  • appのbuild.gradle fileのdependenciesにQiSKDのモジュールが追加されます。これにより、アプリからQiSDKが利用できるようになります。

  • AndroidManifest.xmlにuses-featureタグが追加されます。追加されたuses-featureタグはアプリがPepperを使用することを示しています。

3.QiSDK実装とロボットのライフサイクル

ActivityからPepperを操作するために必要となる共通の実装について見ていきます。

<手順>
1.onCreateメソッドの中で、QiSDKにActivityを登録します。


protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
  QiSDK.register(this, this);
}

2.onDestroyメソッドの中でActivityの登録を解除します。


protected void onDestroy() {
    QiSDK.unregister(this, this);
    super.onDestroy();
}

※ QiSDK.unregister(this)を使用した場合は、ActivityのすべてのRobotLifecycleCallbacksの登録が解除されます。登録したままにしておくべきコールバックを解除してしまうことのないよう注意してください。

3.作成したActivityにRobotActivityを継承させます。これにより、Activityは会話の内容を画面に表示するSpeechBarを利用できるようになります。


public class MainActivity extends RobotActivity

4.追加したActivityにRobotLifecycleCallbacksを実装してください。


public class MainActivity extends RobotActivity implements RobotLifecycleCallbacks

このインターフェースはロボットフォーカスの獲得と喪失の通知を受けるためのものです。

5.onRobotFocusGained、onRobotFocusLost、onRobotFocusRefusedメソッドをオーバーライドで実装します。


@Override
public void onRobotFocusGained(QiContext qiContext) {}

@Override
public void onRobotFocusLost() {}

@Override
public void onRobotFocusRefused(String reason) {}

onRobotFocusGainedはActivityがロボットフォーカスを獲得した時に呼ばれます。ロボットフォーカスを獲得した時、ActivityはPepperに様々な動きをさせることが出来ます。 onRobotFocusLostはActivityがロボットフォーカスを失った時に呼ばれます。ロボットフォーカスを失った時、ActivityはPepperを動かすことが出来なくなります。

重要
onRobotFocusGainedとonRobotFocusLostメソッドはバックグラウンドスレッドで実行されるため、UIスレッドをブロックすることはありません。