アイボットのサイトを暫定的に公開しました。Under Construction のページがあります。
ピノキオ android リリース版試作
先に、chromeのcordovaでリリース版を作成するときにエラーが出ると書いた。
-----------------
Execution failed for task ':CordovaLib:compileReleaseJava'.
> 1.7 は無効なソースバージョンです。
-----------------
javaのバージョンがあわないということは予想がつくが、いつも1.8で使っているのに・・・。と思ったら、ほとんど新しいjavaはnetbeans用なので、コマンドラインで使うときのpathが未だに、1.6を指していることに気付かなかった。JAVA_HOMEを変更したら、すんなりリリース版のコンパイルが成功しapkファイルができた。そして、
--------------------
adb install android-armv7-release.apk
---------------------
で、白ロムスマホに転送したら、うまく組込まれ起動できた。
可愛いアイコンがホーム画面に輝いていますね。
これで、androidの「プレイストア」にアップする準備は全て整ったけれど、まだまだ調整が必要です。でも、来週には、公開するかもしれません。
ただ「古くなるAPIを使っている」という警告が何度か出たが、これはたぶん、socket APIのことだろうと思うが、当面更新するつもりはない。
スマホのコントローラーページ
ピノキオのスマホバージョンを若干調整した。コントロールのページと、対話管理ページでサブメニューを開いた(背景がグレーレイヤーとなる)ところはこんな感じになる。他も、まあ、使用に差し障りはない。Xperiaの横ピクセルは、360pxだ。解像度は横780ピクセルくらいはあったはずだが。両者の調整はまた面倒なので、jqueryの$(window).width()でとっている。
スクリーンをポートレイト位置にしたときに、短い方の幅(横幅)が500pxよりも大きければ、コントローラーの画像は、 縦横520pxにして、小さければ、縦横360pxのものにする。コントローラーをはめ込む<canvas></canvas>要素のタッチ位置を微細にとらえて、どの指示がされたかを決定するのだが、それが3次元配列(2×4×8:縦横位置、四隅の位置、8つの方向)の超複雑なデータで計算するのだが、データを作り直すのは面倒なので、単純に割合のでデフレーター(普通のときは、1、小さいときは360.0/520.0の値)をかけて、やり過ごした。 続きを読む スマホのコントローラーページ
白ロムandroid、無理やりバージョンアップ
Nexus 7で問題なく動いたので、先日購入した白ロムスマホでもすぐに動くだろうと思ったのだが予想以上に苦労した。
(1)白ロムは2年前のsonyのXperia SO-04Dで、androidは、4.1.2と古いものだった。これでは、ChromeDevTool(cordva)がandroid上で正常に機能しない。これに気付き、理解するのにほぼ1日かけた。したがって、デバッグモードで、作成したアプリをandroidアプリを転送できずにデバグできない。
(2)すでに販売中止のスマフォで、andoroidのバージョンは4.1.2で打ち止めである。結構高かったので、買い替えるのはしんどい。4.3以上は、中古のスマホでも数万円はする。(ちなみに、手持ちのNexus7はver.4.3である。)
(3)そこで、無理無理、android 4.3にバージョンを上げることにした。インターネットにある情報を下に、flashtoolとか、いろいろ組み合わせて、4.3のディスクイメージをスマホに焼き付けた。自分でもこんなことができるとは信じられなかったが。普通ならばメーカー保証がなくなってしまうので「びく」つくのだが、こちらはもともと保証はないし、電話で使う予定もないので、何でもありである。
(4)バージョンアップ後、スマホは予定通り正常に動いている。また、ChromeDevToolをadbでインストールできた。そして、ピノキオを送り込んだところ、見事に成功。よかった。
(5)画面が小さくなるので、トップ画面などの調整は必要だが、使う感じはほぼNexusと同じように行けそうだ。画面サイズをプログラム上取得できれば、画面サイズを見ながら適切に表示できると思うが。
(6)あれこれやっている途中で、デバッグバージョンは、android上で動かすことができるが、releaseバージョン作成でこけることがわかった。とうめんリリースはないのでいいが、いずれもんだいになる。まあ、自分だけ使う限りにおいて、デバグバージョンでいいのだが。releaseの時にはまたやっかいなことになりそうだ。
アイコン
白ロム、赤ロム androidスマホ
携帯電話は、PHSのガラケー、その他の携帯端末は、ipod touch、ipad、android Nexsus 7、で、やり過ごしている。ピノキオは、Nexsusでは、ほぼ予定通り機能する。スマホにも対応させたいと、今日アキバで白ロムandroidスマホを1台買ってきた(電話機能なし、wifiで使う)。2年前に発売された中古だ。白ロムが欲しいとジャンバラの兄さんに言ったら、赤ロムもあるよって言われた。赤ロムとは、その携帯を売った人がまだ本体ローンを払い続けているものだと言う。なるほど、ローンは残っているのに新しいのが欲しくなったわけである。赤ロムを買っても肩代わりをするわけではないので、私には問題ないが、simを新たに入れたりするときなどに問題があるのだろう。赤ロムは保証を付けるらしいが、白ロムを買ってきた。
この調子だと、青ロムも黒ロムもあるのかもしれない。
SOCKET問題、revisited
先に、chrome app for android cordovaでは、socketの古いものしか動かないと書いた(ここ)が、数日前に、socketsが組込まれた新しいバージョンが発表されたようだ。これを変更すると、ftp.jsを書き換えなければならない。当面、機能に不都合は発生しないだろうから、変更しない。いずれやらなければならないかもしれない。
タブレットコントローラーがほぼできたので
衣装の紹介も兼ねてなのだけど。本当は赤のドレスの予定ですが、青が先に出来上がったのでそれを着せています。
タブレットでほとんどの作業ができるコントローラーピノキオの機能はすべて組み込みました。
(1)動作を管理できる
(2)対話を管理できる
(3)対話スクリプトを編集保存(端末内に)ができる
(4)ロボットステータスの取得、休み、起きる、停止、再起動などの管理システム
(5)アイボットモジュールのインストール機能
を備えています。(NAOでテストしていますが、pepperでも動くはずです)
ピノキオのFTP機能
ロボットコントロール用のモバイル端末(ピノキオ)で、iBotモジュールをジュールをサーバーからロボットに転送し、同時にautoload.iniを書き換えるための、FTP機能がほぼできた。苦労した。基本は、javascript用のftpプログラムになってこれがややこしい。
ピノキオはandroidアプリだが、cordova上で、html5でプログラミングする。そもそもjavascriptというのはクライアントサイドのプログラムであり、これが、ftp機能持つというのは普通あり得ない。明らかにセキュリティを犯してしまうからだ。chrome apps API for Mobileは、それでは困るので、独自のバークレーsocket機能を持たしている。それを使って、ftpを実現したのだが、そもそも普段はやらないところのなので、ネットにも情報がほとんどない。
あとは、プログレスバーをつけたり、インターフェイスを若干改良してこの機能については終わりにしよう。他の機能については、ほぼ、同様のjavascriptを作成済みなのでそれほど手がかからないはずである。
ただ、ロボットのビデオカメラの映像を、なんとか、ピノキオ端末上に映し出せないかと考えているので、そこがまたやっかい、というよりも、できないかもしれない。ただ、Choregrapheでは、できているので何とかなるのではないかと思っている。
Chrome.socketの話題
細かいことだが、chrome.socket.readは、バッファのオプションをつけると、読み込むデータがないときにブロックしてしまう。つける必要はない。半日はまった。
APIサイト