べるべる研究日誌

なんでもやる系エンジニアの日々

集中力を測定するCencentMeter

HVC-CというOMRONのセンシングデバイスのベータ版に申し込んでデバイスが来たのでアプリを一人ハッカソンをして作ってみました。

ConcentMeter

集中しなければいけない時についついサボり心がでてしまうアナタにオススメです。HVC-Cを正面においてアプリを起動するだけで、どのくらいの時間集中しているかをリアルタイムにメーターで表示します。よそ見をするとどんどん減っていくので( ゚д゚)ハッ!と気づく事ができます。

f:id:bellx2:20141206220759j:plain

とりあえず、作りかけで雑で恥ずかしいのですがgithubにおいておきます。別途SDKが必要となります。SDKの関係もあってさくっとcloneして動かないような気がしますが、Swiftで実行するサンプル程度にしてください。

bellx2/ConcentMeter · GitHub

ハマった点

今回はSwiftでコードを書いてみました。サンプルはObj-Cだけだったのですが、Bridge-Headerを入れるだけで、Swiftで書く事ができました。ハマった点は2点ありました(もしかしたら最新のSDKでは改善されているかもしれませんが)

1. HvcBLE.getDevicesでデバイスリストが取得できない

どうもデバイスリストを別スレッドで収集しているからなのか、すぐに参照するとnullが返ってきてハマりました。一応5秒間待ってからデバイス選択画面をだすようにしたら解決しました。

2. HvcBLE.ExecuteでHVC_ERROR_BUSY

何回やっても正常に送信されずにHVC_ERROR_BUSYが返ってきて悩みました。SDKのコードを追っていくと、SetParamがうまく完了していないようでしたが、どのくらいウエイトを入れてもダメ...。

正解は「dispatch_async(dispatch_get_main_queue()...」でメインスレッドでExecuteを実行してやる必要がありました。この辺りあまり詳しくないのですが...。

感想

思ったより簡単にデバイスから情報を取得する事ができました。年齢等もうちの娘や息子でやったらきちんと男女や年齢も近い数字が出たので、それなりに精度があるのも感じました。「スマホのフロントカメラでやればいいんじゃん」と思いがちですが、独立してデバイス化された事で取得部分と処理部分をわける事ができるのはおもしろいと思います。

Bluetoothの速度もあるかもしれませんが、処理前の画像が取得できないのが残念でした。位置合わせ等の問題もあるので、低解像度でも良いので画像が取得できると良いと思いました。