Kotlin で Pepper SDK for Android を試す


はじめに

Pepper SDK for Android を試してみるのと、そのチュートリアルの「Say "Hello, world!"」を Kotlin で書いてみました。

環境

  • macOS Sierra (10.12.1)
  • Android Studio 2.2.3
  • Pepper SDK 0.9.0
  • Kotlin Plugin 1.0.5

参考記事

Say "Hello, world!"

チュートリアルの「Say "Hello, world!"」です。

コード

基本的には Java のコードを元に「Convert Java File to Kotlin File」で変換したものなのですが、Qi.onUiThread() でエラーになるため、キャストして型を合わせて動かしています。そのため FutureFunction が表に出てきしまい、元の Java のコードより無駄な部分があります。

何かもっと良い書き方があるのではないかと思うのですが、教えてください。

SayActivity.kt
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

import com.aldebaran.qi.QiCallback
import com.aldebaran.qi.sdk.Qi
import com.aldebaran.qi.sdk.`object`.interaction.Say
import com.aldebaran.qi.FutureFunction

class SayActivity : AppCompatActivity() {
    companion object {
        private val TAG = "SayActivity"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_say)

        val say = Say(this)
        say.run("Hello, world!").then(Qi.onUiThread(object : QiCallback<Void>() {
            override fun onResult(ignore: Void) {
                Log.d(TAG, "result on thread " + Thread.currentThread().name)
            }

            override fun onError(error: Throwable?) {
                Log.e(TAG, "error", error)
            }

            override fun onCancel() {
                Log.w(TAG, "cancel")
            }
        }) as FutureFunction<Void, Void>)
    }
}

実行結果

Robot View

Android Monitor

QiCallback の onResult の出力です。

12-24 02:01:56.661 2096-2130/jp.sandpit.sayhelloworld D/SayActivity: result on thread Thread-191

感想

  • (・8・) < Android も Java も Kotlin もまだまだちゅん