iPhoneでサイレントモードでもサウンドを再生したいです。 (iOS用3.0+)iPhoneのサイレントモードでAVAudioPlayerを使用してサウンドを再生する方法
それは(AVAudioSessionを使用せずに)AVAudioPlayerを使用して行うことができ
事前に
感謝。
iPhoneでサイレントモードでもサウンドを再生したいです。 (iOS用3.0+)iPhoneのサイレントモードでAVAudioPlayerを使用してサウンドを再生する方法
それは(AVAudioSessionを使用せずに)AVAudioPlayerを使用して行うことができ
事前に
感謝。
実際、これを行うことができます。これは、オーディオセッションを通じて制御され、AVAudioPlayer
とは関係ありません。なぜAudioSessionを使いたくないのですか?彼らは一緒に素敵な遊び...
あなたのアプリケーションでは、あなたは、オーディオセッションを初期化する必要がありますあなたはまた、再生するオーディオの種類を示すことができます。あなたが音楽プレーヤーなら、リング/サイレントスイッチが有効になっていても、ユーザーはの音声を聞きたいと思うのは意味があります。
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
// Allow playback even if Ring/Silent switch is on mute
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),&sessionCategory);
は、私はこの非常にことを行うアプリを持っている、とオーディオを再生するAVAudioPlayerを使用して、着信/サイレントスイッチを有効にすると、私はオーディオを聞くことができます。 Iが正常に上記のコードを使用私は上記アプリにおいて
UPDATE(2013年11月6日)
、Iは(しばらく)同じことを達成するために、代わりに次のコードを使用しています結果:
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; NSError *error = nil; BOOL result = NO; if ([audioSession respondsToSelector:@selector(setActive:withOptions:error:)]) { result = [audioSession setActive:YES withOptions:0 error:&error]; // iOS6+ } else { [audioSession setActive:YES withFlags:0 error:&error]; // iOS5 and below } if (!result && error) { // deal with the error } error = nil; result = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error]; if (!result && error) { // deal with the error }
この回答の最新のコメントに照らして、これを代替として投稿したいと考えました。 :-)
ありがとうあなたの応答は、それは非常にうまくいった:) – Nima
それを聞いてうれしい。 :-) –
私はこのメソッドを使用していましたが、今はもう動作していないようです。他に誰かがこれに気付いたのですか? –
MarkGranoff's solutionが正しいです。ただし、Cの代わりにObj-Cで行うことをお望みなら、次のようにも動作します:
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
上記の答えは正しいです。以下はSwift版です。
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
//print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
//print("AVAudioSession is Active")
} catch _ as NSError {
//print(error.localizedDescription)
}
} catch _ as NSError {
//print(error.localizedDescription)
}
これは、単にデバイスをサイレントモードにある場合は、サウンドを再生しません(AVAudioSession
を使用して)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
をトリックを行います。ユーザーは明示的に無音を要求しました! –
なぜAVAudioSessionがないのですか? –
@JonathanGrynspan - ユーザーが沈黙を要求したときに忘れてしまったのは当然ですが、AV性格のアプリを作成すると、この種のレビューで氾濫します: "オーディオはうまくいきません☆☆☆☆☆" –