Pepperがハローワールドするまで

ペッパーがハローワールドするまでの一連の流れを記述していきます。 ※pepperのエミュレータが動く前提で説明を行うのでまだの方は下記のリンクから設定をお願いします

Pepper SDK for Android — QiSDK

1.はじめにプロジェクトの作成から行います。ここは通常と変わらずなんでも大丈夫です。
f:id:harumi_sagawa:20180807123742p:plain 2.次にSDKですが、Marshmallowを選択して進めてください
f:id:harumi_sagawa:20180807123834p:plain 3.プロジェクトはエンプティアクティビティで作成します
f:id:harumi_sagawa:20180807124008p:plain 4.作成を行ったら下記の画像にあるようにFile →New→LobotAplication..を選択してください。
f:id:harumi_sagawa:20180807124037p:plain 5.するとこのようなポップアップが画面に表示されるので、okを選択します
f:id:harumi_sagawa:20180807124201p:plain 6.これで前準備はokです。MainActivityに移って継承するクラスを変更します
f:id:harumi_sagawa:20180807125105p:plain 7.継承してもそのままではimportできないのでリフレッシュボタン?見たいのなのを押してimportできるようにします
f:id:harumi_sagawa:20180807125153p:plain 8.これでimportができるようになったので、電球マークをクリックでインポートするかalt + enterのどちらかでインポートを行うとエラーが消えます
f:id:harumi_sagawa:20180807125329p:plain> 9.次にQiSDK.registerを記述します。onCreateないでこいつを呼ぶことによって、ペッパーを操作する関数に飛ばしていろんな命令ができます(たぶん)ここでAndroid Studioが自動生成してくれるので下記の画像のように進めましょう
f:id:harumi_sagawa:20180807130244p:plain f:id:harumi_sagawa:20180807130402p:plain すると3つの関数が@Overrideされて作成されます。

onRobotFocusGained()基本的にはこいつの中に入って来ます。アニメーションをさせたりペッパーに何かを話させるのはこの中です。
onRobotFocusLost()これはロボットが対象を見失ってしまったり何か問題が発生してしまった場合に通ります。
onRobotFocusRefusedこれはアプリが閉じられた際に行う処理だと思います。
私もまだpepperプログラミングを始めたばかりなので、上記の3つ認識が正しいのかどうかはちょっと不明ですが、基本的にはonRobotFocusGained()こいつでやっとけばいいってことです。 f:id:harumi_sagawa:20180807131241p:plain 10.QiSDK.registerを起動したらonDestroyでメモリの解放をしてあげる必要があります。公式リファレンスの中でも何回か説明がされていたのできっと大事なことなんだと思います。
f:id:harumi_sagawa:20180807131417p:plain

ここまで来たらあとはHallo Worldするだけです!

11.SayBuilderメソッドを使ってペッパーを喋らせて見ましょう。よく忘れてしまうのですが.run ()をしないと実行されないので注意してください。 f:id:harumi_sagawa:20180807132006p:plain

コード全文

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) {

    }
}