LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-03

発話を行うロボアプリの開発をしながら、開発手順について説明していきたいと思います。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ファイルを同期させます。
WS000001.png

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

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

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

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

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スレッドをブロックすることはありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0