導入方法や基本的な使い方はGithubのREADMEを見て頂くとして、
今回は、READMEにはないけど、便利な使い方について説明します。
■ライブラリの場所
ライブラリは以下で公開されています。
https://github.com/Abidarma-dev/qisdk_wrapper
■連続で発話、アニメーションを行いたい
Chregrapheの時はボックスを線で繋ぐことで発話を連鎖させることが出来ましたが、本ライブラリでも容易に発話を連鎖させることが出来ます。
以下のように実装し実行すると、「こんにちは」、「今日はいい天気ですね」、「良かったら僕と遊んでくださいね」を順番に実行します。
1 2 3 4 5 |
QLPepper.getInstance().buildSay() .addPhrase("こんにちは") .addPhrase("今日はいい天気ですね") .addPhrase("良かったら僕と遊んでくださいね") .run(); |
■実行できる状態になったら実行させたい
今の発話が完了してから「こんにちは」と言いたい場合や「GoToアクション完了後に、Trajectoryを動かしたい」場合などはrunメソッドを呼ぶ際に引数としてfalseを渡しましょう。
以下のように実装すると「こんにちは」、「今日はいい天気ですね」、「良かったら僕と遊んでくださいね」の後に聞き取りを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
QLPepper.getInstance().buildSay("こんにちは").run(false); QLPepper.getInstance().buildSay("今日はいい天気ですね").run(false); QLPepper.getInstance().buildSay("良かったら僕と遊んでくださいね").run(false); List<String> list = Arrays.asList("おはよう", "グッドモーニング", "おは"); QLPepper.getInstance().buildListen(list).run(new QLActionCallback<String>() { @Override public void onSuccess(String s) { Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { } @Override public void onError(String s) { } }, false); |
また、RobotFocusを獲得する前に、runを実行した場合は、RobotFocus獲得後に、アクションを実行します。
■アクションの並列実行について
発話とアニメーションを同時に実行させたい場合には2つの方法があります。
1 2 3 4 5 |
// パターン1 QLPepper.getInstance().buildSay("こんにちは", R.raw.motion_001).run(); // パターン2 QLPepper.getInstance().buildSay("こんにちは").run(); QLPepper.getInstance().buildAnimate(R.raw.motion_001).run(); |
SayとAnimateは並列に実行できるのでrunの引数にfalseがあってもなくても同時に実行されます。runの引数のfalseはあくまで同じ系統のアクション実行時にのみ影響します。
例えば、SayとChatとListenやGoToとTrajectoryといった組み合わせです。
■QLTrajectoryとQLAnimationクラスについて
どちらもQiSDKのAnimateアクションを実行しておりほぼほぼ同じ動きをしますが、QLTrajectoryは移動系のアクションとして実行されますので、以下のような実装すると、GoTo完了後にTrajectoryを実行します。
1 2 |
QLPepper.getInstance().buildGoTo(1.0, 1.0).run(); QLPepper.getInstance().buildTrajectory().addResourceId(R.raw.trajectory_001).run(false); |