10

現在、アプリでバックグラウンド ミュージックやその他のサウンドを再生している方法が、非常に奇妙な動作をしています。

  • バックグラウンドミュージックをオフにすると、再生される他のサウンドがはるかに大きくなります.
  • バックグラウンドミュージックをオンにすると、オーディオははるかに静かになります。
  • 音楽を中音にすることもでき、音が静かになります。

最も奇妙な部分: iPhone の音量を完全に下げた (ミュートした) 場合、音はまったく出ないはずです。バックグラウンド ミュージックがオンになっているが、デバイスのボリュームがない場合、期待どおりの動作をします。音楽や効果音は聞こえません。しかし、バックグラウンド ミュージックがオフになっている場合でも、デバイス自体の電源が完全にオフになっているにもかかわらず、サウンド エフェクトは引き続き再生され、非常に大きな音量で再生されます。

これが私のコードです...

私のバックグラウンドミュージックの場合:

AVAudioPlayer *musicPlayer;

- (void)playMusic {
    if (musicPlayer == nil) {
        NSURL *musicPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SongFile" ofType:@"mp3"]];
        musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicPath error:nil];
        musicPlayer.volume = 0.2f;
        musicPlayer.numberOfLoops = -1;
    }
    [musicPlayer play];
}

- (void)stopMusic {
    [musicPlayer stop];
}

演奏中の音について:

#import "SoundEffect.h"
SoundEffect *sounds;

- (void)playSoundWithInfo:(NSString *)sound; {
    NSString *path = [[NSBundle mainBundle] pathForResource:sound ofType:@"caf"];
    sounds = nil;
    sounds = [[SoundEffect alloc] initWithContentsOfFile:path];
    [sounds play];
}

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

おそらく、音楽に AVAudioPlayer を使用し、効果音を再生するために SystemSounds を使用しているためです。AVAudioPlayer の音量設定はアプリにありますが、SystemSounds の音量設定は systemVolume です。

于 2011-12-14T03:55:44.690 に答える
0

アプリでとAVAudioSessionを使用してサウンドの再生前に設定する必要があります。オーディオの相互作用方法に基づいて、さまざまなカテゴリがあります。音量がゼロでも音楽が再生される理由はわかりませんが、他の問題は、望ましくない設定にあるようです。アプリの初期化中、またはサウンドの再生を開始する場所で、次のコードを試してください。AVAudioPlayerMPMediaPlayerAVAudioSessionCategory

[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

このコードは を初期化しAVAudioSession、サウンドが他のバックグラウンド サウンドと混ざらない (セッションをアクティブにすると停止する) カテゴリと、アプリが優先されるカテゴリに設定します。画面のロックとサイレンス スイッチを使用しても、サウンドを (フル ボリュームで) 再生できることに注意してください。具体的に設定できると思いますが、正確なコードはわかりません。

オーディオに別の動作が必要な場合は、AVAudioSession クラスの Apple のドキュメントで設定できる他のカテゴリを確認してください。その他のオプションは次のとおりです。

AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryRecord;
AVAudioSessionCategoryPlayAndRecord;
AVAudioSessionCategoryAudioProcessing;

とにかく、オーディオ セッションの問題がこれらの問題を引き起こしていることを願っています。それがうまくいったかどうか教えてください。

于 2012-01-02T23:41:44.807 に答える