LoginSignup
12

More than 5 years have passed since last update.

Pepper SDK for Android Studio使ってみた - エミュ設定、QiChat

Last updated at Posted at 2016-06-10

Pepper SDK for Android Studio をインストールして、QiChat(choregrapheでいうDialogボックス)の動作確認までしてみました。
途中、エミュレータの設定などで気づいた点を書きます。Qiita初投稿です!

検証した環境

・AndroidStudio 2.1.1
・OS Windows10

インストール

ここのとおりに行なうとインストールされます。所要時間30分~1時間程度です。
https://android.aldebaran.com/doc/installation.html
1.SDK Manager image で Android SDK version 5.1.1 (API 22, Lollipop)、SDK Build-Tools22.0.1を追加
2.File > Settings > Plugins でBrowse repositoriesボタンをクリック、Pepperと入力して検索して Pepper SDK を入手
3.案内に従い、AndroidStudioを再起動すると、Robot SDK Manager image が追加されるので、クリックして Robot SDK を入手
※Androidエミュレータはとても動作が遅いので、Intelが提供しているHAXMを導入し、SDK Manager で高速エミュレータをダウンロードしておきましょう(Intel x86 Atom System Image。又は Atom_64)。Pepperのタブレットエミュレータの起動、動作がとても早くなります。HAXMの導入については「haxm android」で検索してください。
image

プログラム作成

参考 https://android.aldebaran.com/doc/create_project.html#create-project

プロジェクトの新規作成

File > New > New Project で新規プロジェクトを作成。
Targetは Phone and Tablet、Minimun SDK は API22:Android5.1(Lolipop)を選択、Activity は Empty Activity を選択しました。
プロジェクトが作成されたら、File > New > Robot Application で、Pepperアプリの作成準備完了です。

QiChat

参考 https://android.aldebaran.com/doc/dialog_editor.html?highlight=qichat

1.プロジェクトの app > res で右クリックして、New > Chat Topic をクリック

2.Japanese(ja)を選択して、Create をクリック
 image

3.res/raw 配下(実際には raw-ja フォルダ)に chat1.top ファイルが作成されます。内容を記述します。

chat1.top
topic: ~chat1()
language: ja

u:(こんにちは) おっす!

4.MainActivity.javaに追記
参考 の下の方の記述を参考に、MainActivity.javaに記述

MainActivity.java
public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    QiChatPlayer qiChatPlayer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Instantiate a QiChatPlayer
        qiChatPlayer = new QiChatPlayer(this);

        // Register QiChatPlayer listener.
        qiChatPlayer.init(new QiChatPlayerListener() {

            @Override
            public void onQiChatPlayerServiceConnected() {
                // Load the topic file.
                qiChatPlayer.loadTopicFile("chat1");
            }

            @Override
            public void onLoadCompleted() {
                // The player is ready to play!
                qiChatPlayer.startTalk();
            }

            @Override
            public void onError(int error) {
                //QiChatPlayer.ERROR_FILE_NOT_EXIST
                Log.d(TAG, "NO="+error);
                //...
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        qiChatPlayer.stopTalk();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        qiChatPlayer.destroy();
    }
}

実行

準備

1.robot app image> Edit Configurations で CPU/ABi を x86 にして Apply をクリックします。
2.Emulator image でPepperエミュレータを起動します。タブレット側に以下のメッセージが表示されますが、これはインストールの欄で記述したHAXMエミュレータを導入すれば早いですよ、という意味です(だと思います)。導入済なら、 Never show this again にチェックを入れてかまいません。
image

デバッグ実行(失敗)

1.デバッグ image で実行します。アプリが実行されますがすぐ終了します。Android Monitor を見ると、public void onError(int error) で記述したエラーログが出力されています。
 ...D/MainActivity: NO=-6
2.APIリファレンスによると、エラーコードは、QiChatPlayer.ERROR_xxx で定義されています。-6は ERROR_FILE_NOT_EXIST(ファイルが存在しない)という意味のようです。

QiChatPlayer.class(抜粋)
public static final int ERROR_SERVICE_IS_ALREADY_CONNECTED = -1;
public static final int ERROR_SERVICE_DISCONNECTED = -2;
public static final int ERROR_SERVICE_CONNECTION_IS_NOT_READY = -3;
public static final int ERROR_CURRENT_LOADING_TASK_IS_NOT_FINISHED_YET = -4;
public static final int ERROR_LOAD_IS_NOT_COMPLETED = -5;
public static final int ERROR_FILE_NOT_EXIST = -6;

3.Chat Topi を作成したとき Japanese を選択したので raw-ja フォルダに chat1.top ファイルが作成されました。しかし、タブレットの言語設定は English のままなので raw-en を探す、FILE_NOT_EXIST、ということのようです(Androidっぽい!)。タブレットのエミュレータの Setting をタップします。Language&input > Language で 日本語 を選択します。

デバッグ実行(成功)

1.もう一度、実行してみます。今度はうまく動いているようです。Robot Viewer の Dialog view から「こんにちは」と入力してみます。
image

2.pepperが返してくれました。成功です!
image

最後に

私はPepper Java SDK(java-naoqi-sdk)で、リモコン(こんなの)とか作ってみてたので、そんなに違和感なく入れましたが、若干ハマリました。その他所感です。

・Choregraphe(Python)とメソッド名が違う
・でも情報量が少ないPepper SDK for AndroidStudio ぐらい(?)
・Choregrapheでステートマシンデザインを使ってサクッと作れてたアプリはどうするか(動作レイヤ毎にFragmentを分けて遷移させたらよいのかな)

Pepper SDK for AndroidStudio で開発手段の選択肢が増えました。Choregrapheも捨てがたいですが、これからも両方楽しんで行きたいと思います。

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
12