どんなものを作ったのか。まずは動画をご覧ください。
皆様、Cocoroboはご存知ですか?
CocoroboはSHARPから出ている掃除機で部屋中を縦横無尽に走行し、自動的に綺麗にしてくれます。
また、シャープ開発のAIココロエンジンを搭載し、挨拶や会話をすることができます。
なぜ弊社がCocoroboを持っているかというと、Cocoroboの無料貸し出しキャンペーン 第二弾に応募して当選したからです。
本ブログではCocoroboとNexus5部分のTIPSを重点的にお伝えできればと思っております。
手順とTIPS
CocoroboRX200のAPIを利用する手順は下記COCOROBO API リファレンスに載ってます。
https://developer.cloudlabs.sharp.co.jp/clabsapi-web/document/api/cocorobo/
大まかに手順をお伝えすると
- SHARP Cloud Labs Developerでアカウント登録
- アカウントのマイページでAPI KEYの取得※Cocoroboの裏蓋に書かれているマックアドレスが必要です。
- Cocoroboのファームウェア変更→初期化→Wi-Fi接続→その他設定を行いAPI連携できるようにする。※初期化を忘れずに!また、Wi-Fi接続設定はUSBメモリを使ったマニュアル接続(USBメモリのRootディレクトリにWi-Fi情報を記載したtxtファイルを入れてCocoroboに挿す※ステルスWi-Fi環境では未検証)があるのでお試しください。
- お手持ちのスマホとCocoroboが同じWi-Fiにつながっている状態であれば後はAPIを叩くだけです。
Cocoroboと連携する方法は2通りある
一つはWebAPI
二つ目はスマートフォン向けAPIです。
前者は続【未完】シャープ製お掃除ロボット(cocorobo RX-V200)のAPIを叩くで詳細が書かれています。すばらしい。
弊社は後者のスマートフォン向けAPIを利用してみました。
仕組みは簡単で開発者用アプリをインストールし、そのアプリにaidl経由で命令を出すだけです。
- 開発者用アプリをインストール
- 開発者用アプリを起動し、Cocoroboとペアリングしておく
- 開発者用アプリとは別の自分で作っている開発中のアプリにaidlを追加する(COCOROBO API リファレンスに記載されているソースです)
- BindServiceするCOCOROBO API用クラスを作成する(COCOROBO API リファレンスに記載されているソースです)
ここでTipsですが、COCOROBO API用クラスをOS 5.0以上で実行しますと、
BindServiceするときに以下の問題が発生します。
java.lang.IllegalArgumentException: Service Intent must be explicit
OS5.0異常でBindServiceの引数に明示的インテントを指定しないと落ちるようです。
参考までに変更部分を上げておきます。
ソースコード変更前
public CocoroboApi(Context ctx) { ctx.bindService(new Intent(IOpenApiCocoroboService.class.getName()), mServiceConnection, Context.BIND_AUTO_CREATE); this.ctx = ctx; }
ソースコード変更後
public CocoroboApi(Context ctx) { Intent intent = new Intent(IOpenApiCocoroboService.class.getName()); intent.setPackage("jp.co.sharp.openapi.cocorobo"); ctx.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); this.ctx = ctx; }
次回に続きます。