ヘッドホンやBluetooth接続時のMUSIC音量を設定するには?

884 views
Skip to first unread message

arasee

unread,
Jan 29, 2012, 11:59:00 PM1/29/12
to 日本Androidの会
お世話になります。araseeです。
音量設定アプリを公開しているのですが、今回、ヘッドホンやBluetooth接続時の音量設定に対応しようとしたところ一つつまづいてしまったためど
なたかご教授いただければと思い投稿させていただきました。

音楽再生音量はAudioManagerのsetStreamVolumeにSTREAM_MUSICを指定すれば良いのはわかっているのですが、ヘッ
ドホンやBluetoothを接続しているときと接続していないときとで値の保存先が変わっているようなのです。

例えばヘッドホンを接続しないでSTREAM_MUSICで5を設定し、接続後に10を設定した場合、
ヘッドホンを差せば10になって抜けば5になります。
androidの仕様でそのように作られているのはある意味便利なのですが、私がやりたいのは接続していないときに前もって接続時の音量をどうやれば設
定できるのか?ということです。

またアプリに組み込みたい動作として、ヘッドホンやBluetoothとの接続が切断されたときに再生音量を0にしたいのですが、
ACTION_AUDIO_BECOMING_NOISYのBroadcastを受信した時点でSTREAM_MUSICを0に設定しても、接続時の音
量が0になってしまい肝心の非接続時の音量に反映されないのです。

リファレンスは一通り目を通したのですが、英語力に乏しいことも手伝って解決策が見つかりませんでした。
もしどなたか詳しい方いらっしゃいましたらご教授ください。よろしくお願いします。

youten

unread,
Jan 30, 2012, 5:16:41 AM1/30/12
to android-g...@googlegroups.com
youtenです。

推測で申し訳ないのですが、「Bluetooth接続時/非接続時で違う値が保持されている」ではなく、
「Bluetoothの接続を見張っているアプリが自分の保持している値をセットする」ではないでしょうか?

ACTION_AUDIO_BECOMING_NOISYのBroadcast Intentを待ち構えているアプリが
複数居た際には衝突する可能性がありますので、
まずはadb shellからamコマンド等で物理的な操作の前にBroadcast Intentに
誰が反応しているかを調査してみるのはいかがでしょうか。

arasee

unread,
Jan 30, 2012, 10:14:53 AM1/30/12
to 日本Androidの会
youtenさん、ご回答ありがとうございます。

言われてみてなるほど、と思いました。全く発想に無かったです。
確かに今現在、動作テストのために複数の音楽プレーヤーをインストールしているので
誰かが内緒で音量をいじってるのかもしれません。
さらに言えば、その様な音楽プレーヤーが存在することも想定して自分のアプリの動作
を考えなければならないということですね。

ACTION_AUDIO_BECOMING_NOISYのBroadcast Intentですが、最近はほとんどの
音楽プレーヤーがこのインテントを受信して音楽再生を一時停止させる機能を持っているため
インテントに反応したから怪しい、と判断できないのが残念なところです。
というか恥ずかしながらadb shellのamコマンドってものを使ったことが無いので
この機会にそちらも勉強したいと思います。

アドバイスありがとうございました。
Reply all
Reply to author
Forward
0 new messages