環境光センサーと近接センサーとWebAudioで楽器アプリを作る(2)
近接センサーで近接検知したら音を止める
最後に、一定以上デバイスに手を近づけると音声を止める部分を作ります。
近接センサーAPIは、環境光センサーと同様windowオブジェクトのuserproximityイベントにイベントハンドラを登録して利用します。
イベント名 | userproximity |
---|---|
イベントハンドラのインターフェイス | function userproximityHandler(UserProximityEvent event); |
イベント引数の型 | UserProximityEvent |
イベント引数のプロパティ | near:接近時true、離脱時falseとなるboolean値 |
ミュートはゲインの接続と切断で実現します。ゲインの接続はconnect、ゲインの切断はdisconnectで行います。
audio.gainNode.connect(audio.context.destination);
メソッド名 | AudioNode.connect(destination) |
---|---|
引数 | destination:接続先のAudioNodeオブジェクト |
返り値 | なし |
audio.gainNode.disconnect();
メソッド名 | AudioNode.disconnect() |
---|---|
引数 | なし |
返り値 | なし |
音声の止め方、再開の仕方がわかったので、近接センサーAPIと組み合わせます。
window.addEventListener('userproximity', approximation); // 近接センサーが反応したらミュートする function approximation(e) { if (e.near) { // ミュート audio.gainNode.disconnect(audio.context.destination); } else { // ミュート解除 audio.gainNode.connect(audio.context.destination); } }
これで一通りの機能が実装できました。あとはアイコンを変えたり視覚効果を入れたりとアプリの体裁を整えれば完成です。
「Fx0」を使ってみて
筆者はこれまでKeon、Flame、Fx0といくつかのFirefox OS端末を使ってきました。Keonは普段使いには耐えられないのでさておくとして、Flameと比較してもFx0はタッチレスポンスなど操作感の点で快適にできています。過去の端末がFx0よりハード性能が低いのを加味しても、Fx0は応答性に気を使っていることをうかがわせます。普段使いの点では電池持ちがいいのも大きなメリットで、ちょくちょくTwitterやFacebookを確認したり、一日中テザリングしても電池が枯渇しません(※2)。
ハード性能が高い分、処理速度についても頭一つ抜けている点も気に入っていて、これまでの端末では、getUserMediaでカメラプレビューしながら3D処理や画像処理を重ねるのは重たくて辛い処理でしたが、Fx0では十分に動くので、ARやVRの可能性が広がります。センサーを使って現実の世界とスマホの画面を協調させたり、現実の世界に何らかの機能を拡張していくのに十分な処理能力があると思います。電池持ちがいいのも、ハードウェアを使ったプログラミングにはメリットですね。
Androidなどと比べると基本的な機能で差異があまりないので、細かい点になりますが、Fx0を使っていて他のOSにない部分では、画面端からのスワイプでアプリが切り替えられるのはとても好きなUXです。Firefox OSはUXについても挑戦的な姿勢を見せていて、v1.xからv2.0、v2.xからv3.0とバージョンを重ねるごとに新しいUXを提案してくれます。これからはTVに搭載されたり、Matchstickのようなテレビに接続する端末も増えていくと思うので、スマホと違った画面からのフィードバックも出てくるでしょう。
これまでは日本語で使えるアプリがほぼなく、日常的に使うアプリについても不満がありましたが、Fx0の登場でアプリがひと通り出揃いました。アミューズメントなどの面でAndroidやiOSに劣ることは否めませんが、逆に捉えればこれからみんなで楽しくしていける余地があります。Firefox OSコミュニティ全体で楽しくしていきましょう!
※2 テザリングは、別途オプション料500円(税別)がかかります。また、お客様のご利用環境や通信環境により、使用可能時間は異なります。
まとめ
これまで見てきたとおりFirefox OSでハードウェアにアクセスするのは容易です。全てのAPIを紹介することはできませんでしたが、今回の概要だけでもハードウェアを使ったアプリケーションの開発が大変なものではないことは感じていただけたのではないかと思います。皆さんも是非試しにハードウェアにアクセスしてみてください。何か新しいアプリのアイデアが得られるかもしれませんよ。
そして是非何か作ったらアプリマーケットに出品してください。楽しいアプリがたくさん増えることを期待しています。
Mozilla公式のアプリマーケットはこちら。
KDDIが運営するアプリや制作物の紹介・配布サイトはこちら。
下記サイトにて、KDDIが開催を予定しているFirefox OSに関連するイベントや、最新のHTML5技術、Webプラットフォームを用いた新たな楽しみ方についての情報を発信しています。
「Fx0」の取扱い店舗についても下記サイトからご覧いただけます。