Shogo's Blog

たぶんプログラミングとかについて書いていくブログ

夏だ!花火だ!Androidで遊ぼう!

さあ、皆さん!今年も長岡の大花火大会の季節がやって参りました!

花火大会といえば、 光と音の速度差を体感できる絶好の機会です。 というわけで、去年もこんなアプリを作って遊んでました。 このアプリを頑張って改良したので、改めて紹介したいと思います。

アプリをダウンロード

使い方

起動すると、こんな画面が表示されます。

起動画面

花火が開いたら画面をタップ! そして、花火が画面中央に来るよう素早く端末を動かします。 (※画像ははめ込み合成です)

花火をセンターに捉えたところ

花火の音がしたら、目標をセンターに入れてタップ!

結果

タップの間隔から花火までの距離を計算し表示してくれます。 さらに、加速度センサの値から端末の仰角を読み取り、花火の高さや水平距離などを算出してくれるという機能もついてます。

去年からの変更点

と、ここまでは、去年と一緒。 今年はさらにパワーアップしました。

地図へのマッピング

スマートフォンには磁気センサがついており、方位が分かります。 加えて、GPSもついているので、スマートフォンの現在位置も分かります。 これだけの情報が揃えば、地図にプロットできるはず!

地図へのマッピング

結果表示の画面で「地図を表示」を選ぶとマッピングしてくれます。 この画面でメニューキーを押すと、TwitterやGoogle+などで、花火の位置をみんなに知らせることもできます。

GPS測位ができない場合は、デフォルトの位置を使用します。 この位置は設定画面で変更できます。

自動花火検出

去年からの課題であった、花火の自動検出も試みてみました。 初期画面でメニューキーを押すと設定画面へ飛べます。

設定画面

ここで「花火を自動的に検出する」「花火の音を検出する」を選択すると、自動検出してくれるはずです(※理論値)。

花火が開いたことは、画面が明るくなったことで検出します。 明るさの検出は初期画面中央の四角の中が使われます。 設定画面でこの四角の大きさを変えることができます。 明るさの変化が閾値を超えたら測定開始です。

音は音量で検出します。 音声にDFTをかけて、周波数フィルタリングをかけてあります。 これで人ごみにまぎれても花火の音が検出できる・・・はず。 周波数0Hzにすると、周波数フィルタを通さずに振幅のみで判定します。

検出した値は、画面の右上に表示しているので、設定の時の参考にしてください。

ダウンロード

アプリをダウンロード

野良アプリなので、「設定→アプリケーション→提供元不明のアプリ」をチェックする必要があります。 スマートフォンの機能をフル活用するので権限をたくさん要求してきますが、きっとだいじょうぶ。 そろそろマーケットでの公開も試してみたいですね。

Google Play にリリースしました! Google Play からアプリをダウンロード FireworksMeasure

まとめ

それでは、大幅に機能UPしたアプリと一緒に、長岡の大花火大会をお楽しみください。

打ち上げはこのあたりらしいです。 ちゃんとマッピングできますかね?

Comments