[iOS SDK] iPhone/iPad はサイレントモードにしても音が鳴る

公開日: : 最終更新日:2012/06/25 iPad, iPhone ,

この前、iOS5 を入れた iPad2 で おんぷちゃん for iPad から音が鳴らない、ほかのアプリからは音が鳴っているのでおんぷちゃんの問題ではないか、というレポートがユーザの方からあり、かなり急いで手元の iPad2 にiOS5を入れて試したところ、普通に音が鳴っていたので一安心した。
その後いろいろ調べていたところ、ユーザの方から、実は iPad2 がサイレントモードになっていたとの報告があり、一件落着した。

しかしその際にいろいろ試していたところ、実際には iPad をサイレントモードにしても、YouTube や iPod アプリからは音が鳴ることが判明した。
ユーザの方も、ほかのアプリ(こどもえいごずかん、Virtuoso)はサイレントモードになっていても音が鳴っていたとのことだった。これにより、おんぷちゃんの問題ではないかと判断されたとのことだった。

そういえば、確かにiPhone Core Audioプログラミングを読んだときにそういうことが書いてあった気がするが、実際に試したことはなかった。

確かに、Appleのオーディオセッションプログラミングガイド 2010-11-15 によると、

AVAudioSessionCategoryPlayback またはこれと同等の
kAudioSessionCategory_MediaPlayback— このカテゴリは、オーディオ再生が最も重要なア
プリケーションに対して使います。アプリケーションのオーディオは、画面がロックされた状
態や、着信/サイレントスイッチがサイレントに設定された状態でも再生します。

と書いてある。

カテゴリ識別子

着信/サイレントスイッチや画面のロックによって消音する

ほかのアプリケーションからのオーディオを許可

オーディオ入力(録音)と出力(再生)を許可

AVAudioSessionCategoryAmbient

kAudioSessionCategory_AmbientSound

o

o

出力のみ

AVAudioSessionCategorySoloAmbient

kAudioSessionCategory_SoloAmbientSound

o

x

出力のみ

AVAudioSessionCategoryPlayback

kAudioSessionCategory_MediaPlayback

x

デフォルトではx

AVAudioSessionCategoryRecord

kAudioSessionCategory_RecordAudio

×(画面がロックした状態でも録音は

継続)

x

入力のみ

AVAudioSessionCategoryPlayAndRecord

kAudioSessionCategory_PlayAndRecord

x

デフォルトではx

入力および出力

AVAudioSessionCategoryAudioProcessing

kAudioSessionCategory_AudioProcessing

x

入力、出力ともx

サイレントモードでも音が鳴るアプリはカテゴリに AVAudioSessionCategoryPlayback を指定しているのだろう。
確かにこうやって問題としてレポートが来たりすることを考えると、AVAudioSessionCategoryPlayback を指定していた方が安全だったりするとは思うが、しかしこれを使うとサイレントモードにしていても音が鳴ってしまうのでそれはそれで問題があると思うのだが。

Webを検索してみると、サイレントモードでも音が鳴ることに関してはバグとしてとらえている人も結構いることがわかった。
確かに、日本の携帯のマナーモードの挙動を考えると、音が鳴るのは驚きだと思う。

ところで、これを調べている間に知ったのだが、iPhone や iPad では音量ボタン-を押し続けると、一瞬で消音状態になる。
おそらくサイレントモードでも消音にならない場合はこの機能を使えということなのだろう。
また元の音量に戻すためには地道に+ボタンを押し続けるしかないのだが。

追記 2011/12/04

リズムくんのレビューでもメトロノームの音が鳴らないと書かれていて、こちらの方もおそらくサイレントモードになっているのではないかと。
iPhoneはともかくiPadのサイレントモード指定はわかりづらくなっているので、あきらめて今回のアップデートで AVAudioSessionCategoryPlayback に変更してみようかと。
このアプリは cocos2d の CocosDenshion を使っているが、CocosDenshion で AudioSessionCategory を変更する場合、(void) setMode:(tAudioManagerMode) mode を使えばよい。
指定するモードは下記の通りだった。

typedef enum {
	kAMM_FxOnly,					//!Other apps will be able to play audio
	kAMM_FxPlusMusic,				//!Only this app will play audio
	kAMM_FxPlusMusicIfNoOtherAudio,	//!If another app is playing audio at start up then allow it to continue and don't play music
	kAMM_MediaPlayback,				//!This app takes over audio e.g music player app
	kAMM_PlayAndRecord				//!App takes over audio and has input and output
} tAudioManagerMode;

ということで、kAMM_MediaPlayback を指定することにする。

追記 2012/01/17

リズムくん」の前回のアップデートで、サイレントモードでも音を再生する AVAudioSessionCategoryPlayback に設定したところ、やはりサイレントモードで音が再生されるのは不便との意見があった。
このため、元の仕様に戻そうかと考えているが、上記の通りサイレントモードで音が鳴らないと不具合として報告が来たりするため、何らかの対策は入れたい。
対策として、サイレントモードで起動された場合にはサイレントモードでは音が再生されない旨のメッセージを表示することを考えたが、どうやら iOS 5 からはサイレントモードの状態を取得できなくなっているようだ。
iphone – Detect Silent mode in iOS5? – Stack Overflow
理由は分からないが、どうも意図的に取得できないようにしている模様。
確かに Apple の Developer Forums でそういう書き込みがあった。この機能が必要であれば、Bug Reporter にリクエストしてくれとのこと。
書くか…

この件、こういう事件も起きている模様。
iPhoneは設計が間違ってる、もしくは情弱が使っちゃいけないモノらしい
確かにサイレントモードにしたら安心しそうではあります。
誰も書いていないけれども音量-ボタンをちょっと押しっぱなしにすれば完全ミュートになるのですが。
しかし、この仕様は昔からあるものだし、Appleの回答を見ても明らかに意図した動作になっている。
確かに、iPod touch にはサイレントモードのスイッチがないし、iPhoneにも将来ずっとサイレントモードがあるかは不明。
また、iPad はスイッチがあるがサイレントモードのOn/Offと、画面の回転のOn/Offのスイッチの切替式になっている。

iPhone Core Audioプログラミング
iPhone Core Audioプログラミング 永野 哲久ソフトバンククリエイティブ 2009-11-12
売り上げランキング : 113825

Amazonで詳しく見る

by G-Tools

関連記事

no image

iPhone&Androidアプリ内課金プログラミング完全ガイド

こんなマニアックな本が11月に出ていたらしい。 立ち読みしてよさそうだったら買ってこよう。 売れ

記事を読む

no image

[iPhone SDK] Log Locations 1.2 を Submit

かなり久しぶりに、自動で毎日移動した場所を記録する Log Locations をアップデートした。

記事を読む

no image

LogLocations iOS7 不具合調査 (startMonitoringSignificantLocationChanges 挙動変更)

LogLocations のユーザの方から、iOS7 になってからLogLocationsでログが保

記事を読む

“I think the stainless steel looks beautiful when it wears” from The Perfect Thing

傷が付きやすいと言われている iPhone 7 ジェットブラック。ケースを付けるか迷ったら、下記

記事を読む

ようやくAppStore に Submit

@ITの 日本人がつまずかないためのiPhone開発ポイント を読みながらAppStoreにアプリ公

記事を読む

no image

アップルのタブレット端末に関するEngadgetのおもろい記事

Engadgetはごくたまに笑いのつぼにヒットするが今回のは面白かった。 ジョブズはタブレット端末に

記事を読む

[買ってみた] iPhone11 Pro Max用にTOPEAK ドライバッグ

記事を読む

no image

おんぷちゃん for iPad 1.3.3 Submit

今回は紅白歌合戦を見ながらSubmit。 相変わらずうちの娘が譜読みに苦労していて新しい曲を弾く

記事を読む

Apple Special Event September 2018

今年も新型iPhoneを発表するアップルのスペシャルイベントが2018年9月13日2時AM(12日1

記事を読む

no image

いまさらながらXcode4導入 2011/06/29

Twitterを見ているといろいろ大変そうだったので敬遠していたXcode4だが、デバッグに便利そう

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

Vision Pro カバーケースを買ってみた

[itemlink post_id="11629"]

→もっと見る

PAGE TOP ↑