[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

iOS Developer Program 更新のため Developer Certificates を更新

この前iOS Developer Programを更新したが、1年経ったので Developer C

記事を読む

Apple Event 2021.04

今回はちょっと驚いた。最近リークが少なくて良き。もしくは自分がSNSから離れているのもある

記事を読む

no image

確かに薄い iPhoneケース eggshell iPhone クリア

試しにiPhoneアプリのwordpressで更新してみる。 とにかく薄いiPhoneケースがほしく

記事を読む

no image

iPad/iPad2 収納ケース Built Neoplene Envelope

iPad を買って以来使い続けているBuiltのケースです。 Netbook Envelope とい

記事を読む

no image

[iPhone SDK] 日時のローカライズ

自分でも何度か調べてしまったので記録しておく。 Objective-Cで日時を表示したい場合、単純

記事を読む

[iPhone 6 Plus] カラビナ付きケースを買ってみた

iPhone5 はカラビナ付きケースに入れて腰に下げていたのだが、まだiPhone 6 Pl

記事を読む

[iOS SDK] UIAlertView が消えた後にキーボードが表示される

昔書いたコードで、UIAlertView に setAlertViewStyle で UIAlert

記事を読む

no image

おすすめ iPhone5用ケース iJacket

iPhone5購入時に同時に購入したケース(写真上)が1ヶ月程度でかなりみすぼらしい状態

記事を読む

[iOS SDK] No identities are available for signing 問題にはまる

久しぶりに Provisioning Profileではまった。 この問題にはまると、解決までにか

記事を読む

no image

iPhone から au 公式スパムメールを止める

hotinfo@himail.ezweb.ne.jp からau公式スパムが何度も届くので、重い腰を上

記事を読む

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 ↑