質問

簡単に多くの音を再生するアプリを作成しました:

AudioServicesPlaySystemSound(someSoundID);

デバイスの音量ボタンを使用して音量を増減する場合、実際に変更する音量は電話の着信音量です。したがって、それを減らしてアプリを終了すると、電話は静かに鳴ります...

これをオーバーライドして、実際にアプリケーションのボリュームを変更する簡単な方法はありますか?

役に立ちましたか?

解決

私は、一般的な問題だと思っていたものに対する解決策を見つけました。サウンドをシステムサウンドとしてのみ再生している場合でも、ユーザーの着信音量を損なうことなく、アプリに独自の音量を設定する方法は次のとおりです。

AVFoundationフレームワークをインポートし、アプリの実行(またはビュー、アプリデリゲート)の実行中ずっとロードされたままのオブジェクトに、AVAudioPlayerを初期化し、再生するファイルを与えて"に設定する必要があります。 prepareToPlay"それ...

これはメインビューで行ったことです(他のビューをサブビューとしてロードするために使用されます): ヘッダーファイル:

#import <AVFoundation/AVFoundation.h>

@interface MainViewController : UIViewController {
    AVAudioPlayer *volumeOverridePlayer;
}

@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;

実装ファイル内:

    @synthesize volumeOverridePlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
    [volumeOverridePlayer prepareToPlay];
//...
}

ファイルを再生する準備をプレーヤーに任せ、サウンドを再生せずに独自のボリュームコントロールをお楽しみください! そしてもちろん、deallocでリリースすることを忘れないでください。

他のヒント

Appleのドキュメントでわかることから、ここには2つの問題があります。 1.アプリケーションとOS /ハードウェアボリュームは、ハードウェア/ユーザーのみが制御できます。 2.システムサウンドを再生しています。システムサウンドはOSによって管理されているため、実際のサウンドファイルを再生しているのでなければ、ここでは運が悪いと思います。サウンドファイルを使用できる場合は、こちら

がんばって!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top