Pepperがハローワールドするまで
ペッパーがハローワールドするまでの一連の流れを記述していきます。 ※pepperのエミュレータが動く前提で説明を行うのでまだの方は下記のリンクから設定をお願いします
Pepper SDK for Android — QiSDK
1.はじめにプロジェクトの作成から行います。ここは通常と変わらずなんでも大丈夫です。
2.次にSDKですが、Marshmallowを選択して進めてください
3.プロジェクトはエンプティアクティビティで作成します
4.作成を行ったら下記の画像にあるようにFile →New→LobotAplication..を選択してください。
5.するとこのようなポップアップが画面に表示されるので、okを選択します
6.これで前準備はokです。MainActivityに移って継承するクラスを変更します
7.継承してもそのままではimportできないのでリフレッシュボタン?見たいのなのを押してimportできるようにします
8.これでimportができるようになったので、電球マークをクリックでインポートするかalt + enterのどちらかでインポートを行うとエラーが消えます
>
9.次にQiSDK.registerを記述します。onCreateないでこいつを呼ぶことによって、ペッパーを操作する関数に飛ばしていろんな命令ができます(たぶん)ここでAndroid Studioが自動生成してくれるので下記の画像のように進めましょう
すると3つの関数が@Overrideされて作成されます。
・onRobotFocusGained()基本的にはこいつの中に入って来ます。アニメーションをさせたりペッパーに何かを話させるのはこの中です。
・onRobotFocusLost()これはロボットが対象を見失ってしまったり何か問題が発生してしまった場合に通ります。
・onRobotFocusRefusedこれはアプリが閉じられた際に行う処理だと思います。
私もまだpepperプログラミングを始めたばかりなので、上記の3つ認識が正しいのかどうかはちょっと不明ですが、基本的にはonRobotFocusGained()こいつでやっとけばいいってことです。
10.QiSDK.registerを起動したらonDestroyでメモリの解放をしてあげる必要があります。公式リファレンスの中でも何回か説明がされていたのできっと大事なことなんだと思います。
ここまで来たらあとはHallo Worldするだけです!
11.SayBuilderメソッドを使ってペッパーを喋らせて見ましょう。よく忘れてしまうのですが.run ()をしないと実行されないので注意してください。
コード全文
package com.example.pepper.hellopepper; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.aldebaran.qi.sdk.QiContext; import com.aldebaran.qi.sdk.QiSDK; import com.aldebaran.qi.sdk.RobotLifecycleCallbacks; import com.aldebaran.qi.sdk.builder.SayBuilder; import com.aldebaran.qi.sdk.design.activity.RobotActivity; import com.aldebaran.qi.sdk.object.conversation.Say; public class MainActivity extends RobotActivity implements RobotLifecycleCallbacks { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); QiSDK.register(this, this); } @Override protected void onDestroy(){ super.onDestroy(); QiSDK.unregister(this, this); } @Override public void onRobotFocusGained(QiContext qiContext) { Say say = SayBuilder.with(qiContext) .withText("Hello World") .build(); say.run(); } @Override public void onRobotFocusLost() { } @Override public void onRobotFocusRefused(String reason) { } }