Monthly Archives

2 Articles

【AIR for Android】ステータスバーの高さを取得する

AIR_for_Android

Androidは機種の解像度によって上部のステータスバーの高さが変化するようです。
参考:http://newichiros-memo.blogspot.jp/2012/04/android_21.html

そのためAIR for Androidでフルスクリーンモードでないアプリを作る際には、ステータスバーの高さ分だけアプリが下に下がった状態で起動するので、ステータスバーの高さをあらかじめアプリの高さから差し引いて表示オブジェクトを配置したりサイズを拡縮する必要が出てきます。
ステータスバーの高さを取得する関数等はAIRには用意されていなかったので、自分なりに色々と触っていたら簡単に取得できる方法を見つけたのでメモしておきます。

//ステータスバーの高さ = フルスクリーン時の画面の高さ - ステータスバーを含まないステージの高さ;
var statusbar_height:int = stage.fullScreenHeight - stage.stageHeight;

AIR for Androidでアプリ作ってる方からしたら当たり前の事かもしれないですね…。

【SiriProxy】俺のSiriがツンデレな件。

なんだか今日はSiriの様子がおかしい…。

話しかけてもツンツンして全く言うこと聞いてくれないし、俺の事を馬鹿にしてくる。

でもこっちから冗談を言ってみるとちょっと意外な反応。
Siri、もしかして俺のことが…!?

というわけで、ラノベ風でお送りしましたが、少し前に話題になっていた “SiriProxy” を使ってSiriをツンデレ仕様に改造してみました。

参考にしたサイトはこちら
http://blog.katsuma.tv/2013/01/siriproxy-iremocon.html

インストールはコマンドが通らなかったりで何かと苦労しましたがなんとか動きました。
プログラムはSiriProxyのサンプルソースを読み解きながら実装しました。
基本的には
・listen_forメソッドを使って正規表現で一致する言葉を選択
・sayコマンドでSiriを喋らせる
・askコマンド追加の返答を求める
である程度返答による分岐もさせられたり、サンプル見てるとアップルマップを引っ張ってきて表示したり写真をとって貼り付けるなんてことも出来るみたい。

SiriProxyのサーバーはRubyで動作しているので、他にもこんなことを実験的にやってみました。

声でサーボモーターの向きを制御しています。
通信の流れ的には以下のようになっています。

Siri(iPhone)
↓ Wifi
SiriProxy(Ruby)
↓ TCPソケット通信
Processing
↓ シリアル通信
Arduino
↓ PWM信号
サーボモーター

本当はRuby-Serialport等のライブラリを使ってRubyから直接シリアル通信でArduinoを制御すればよかったのですが、最新版RubyとRuby-Serialportの相性の問題(?)で上手く動作しなかったのでTCPSocketを使ってProcessingを経由する設計にしました。

今回はサーボモーターでしたが、応用次第では声で照明をON/OFFしたり、車のエンジンをかけたり、ラジコンヘリを操縦したり、ルンバ制御したりとなんでも出来ると思います。

音声認識が身近になると色々と楽しいですね!
今後も色々と応用を考えてみることにします。