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
参考記事
- Pepper SDK for Android — Pepper SDK for Android documentation
- Pepper SDK for Android Studioを使ってみた - Qiita
- Android開発ではじめるKotlin - Qiita
Say "Hello, world!"
チュートリアルの「Say "Hello, world!"」です。
コード
基本的には Java のコードを元に「Convert Java File to Kotlin File」で変換したものなのですが、Qi.onUiThread() でエラーになるため、キャストして型を合わせて動かしています。そのため FutureFunction が表に出てきしまい、元の Java のコードより無駄な部分があります。
何かもっと良い書き方があるのではないかと思うのですが、教えてください。
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 もまだまだちゅん
Author And Source
この問題について(Kotlin で Pepper SDK for Android を試す), 我々は、より多くの情報をここで見つけました https://qiita.com/Suna/items/235708f9833a92dd598d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .