スマホの音量調整ボタン、もっと有効活用できないの?

スマホの音量調整ボタン、もっと有効活用できないの?

「カメラ女子」なんて言葉がもてはやされ、ミラーレス一眼レフカメラが爆発的に売れた時期もありましたが、今ではスマートフォンの普及、そしてSNSの普及により、国民総 “カメラ女子(男子)” になるのではないかという勢いすら見せています。

こんにちは、ricemanです!
スマホユーザの方であれば、端末を横向きにして音量調整ボタンで写真を撮る時ってありませんか?

この仕組みは非常にカンタンで、カメラアプリ側で音量調整ボタン押下のイベントを受けたら、そのままシャッターを切るという、単純明快な仕様になっているだけです。画面内のシャッターボタンを押すよりも、フレームにある物理ボタンを押したほうが、実際のカメラで撮影した感覚に似ていますよね。

観光客が使っているイメージの強いセルカ棒(自撮り棒)などにおいても、有線タイプのものであれば、イヤホンジャックにプラグを挿して利用することになります。
これは実は音量を変更して撮影しているだけなのです。

仕組みさえ分かってしまえばコッチのもの。
さっそく自作アプリに組み込んでみました。

実際の音量調整はどうする?

物理的な音量調整ボタンの機能を “別機能” として自作アプリ側に組み込む時に、核となるポイントは2つです。
ポイント1:NotificationCenterで音量チェンジイベントを受け取るようにする
ポイント2:音量操作UIを画面の外に追いやり見えなくする

YouTubeのような音量操作が重要になるようなアプリにおいてもデフォルトの音量表示UIを隠し、独自の音量表示UIを表示させています。
コレって一番のキモである動画が隠れないようにするための、ある種の “おもてなし” と言えますよね!

「ポイント1」について、まずは「Notification」の登録を行います。

続いて「ポイント2」ではこんな感じです。

色々試した結果、「AVAudioSession」の設定をしないとうまく隠れてくれないようです。

音量調整ボタンの意外な使い道!

今回の自作アプリへの組み込みのために調査をしている中、こんなコメントを見つけて驚愕しました。
<参照:はてなブックマーク

これは漫画アプリの開発コンテストに対してのコメントと見受けられるのですが、確かにビューワーアプリのページ送りって面倒な時があるんですよね。
これをボリュームボタンの操作でできるようならとっても快適でしょうね。そもそもの音量操作が不要とされるアプリであればなおさらです。いずれ各社実装をしてほしいものです。

「ページ送り」以外にも音量操作ボタンの使い道がないものなのか、色々考えてみました。
当然ながら音量調整ボタンの元々の機能を置き換えることで、より便利で快適にならなければ意味をなしません。
そして音量操作が重要になるような音楽系アプリでは逆に不便ですよね。音量調整したいのに、早送りされちゃったりではユーザビリティもへったくれもありません。

ゲームアプリ系ならどうでしょう。
音量調整ボタンは基本的に「+」と「-」の2つしかないわけですから、単純な操作のゲームでなければなりませんね。例えばブロック崩しのようなゲームとか……。
ただ、この物理ボタンは画面に対して水平に設置されているわけではないので、実現できたとしても操作性は最悪でしょうね。。。

例えばブラウザアプリで実装してみたらどうでしょう。
お気に入り登録などをする時にメニューを開かずともボタンだけで操作できれば便利でしょうね。
音量調整ボタンは元々「+」と「-」に割り当てられているのですから、拡大・縮小機能に置き換えてみても違和感のないインターフェイスになるかもしれませんね。

スマホの基本機能において、操作がしづらいところといえば、画面の固定やWi-Fi、BluetoothのON/OFF切り替えが挙げられます。これらもこの物理ボタンに割り当てられたらスマホの煩わしい設定変更も楽になることでしょう。
ボタン2つであることを考えれば、ストップウォッチのラップ機能とかでも使えそうです。

あれこれ考えているうちに、私の “作ってみたい欲” が沸点に達しました!
ということで、今回は非常にカンタンにできそうな、Webページのページ最上部とページ最下部を自動スクロールさせる機能を割り当ててみることにしました。

“自動スクロール機能” 実装なるか?

まずは先ほどと同じ手順で「ポイント1」と「ポイント2」を実装します。
今回はWebページをスクロールさせることが目的となるので、プログラム側からスクロールができるように設定します。

第1引数に指定してある「point」は「CGPoint」を渡す必要があり、ここで2つのボタンにそれぞれの役割りを割り振りしてあげましょう。
・音量「+」ボタンが押されたらページ最上部に移動
・音量「-」ボタンが押されたらページ最下部に移動

残念なことに、イヤホンケーブルに付いているコントローラや端末の音量調整ボタンにおいて、「+」が押されたのか「-」を押されたのか取得できませんでした。
(※私の調査が及んでいないだけかもしれませんので、そこはご了承くださいw)
ということで、直前の状態から「数値が増えたかのか、減ったのか」で判定する仕様にすることにしました。

そして完成品がコチラです。
……と思ってご覧いただこうとしたのですが、QuicktimePlayerの動画撮影画面を開くと、音量操作イベントが動かないようです。。。要注意!!
仕方がないので、別のiPhoneで動画撮影したものをご覧いただきましょう。

多少の紆余曲折はあったものの、想定した操作感が実現できたので成功と言えますが、実際に操作してみると、使い道が限られますね……。よくよく考えれば、画面上にスクロール機能を備えたサイトもあるぐらいですから。。。

結果、今回はくだらないものとなってしまいましたが、きっと私には思いもよらない機能がたくさんがあるはずです。
ぜひみなさんもアイデア考えて、かなり便利な物理ボタンにカスタムしてみてくださいね~!

コメント