iPhoneアプリで着信音量を上書きする
-
06-07-2019 - |
質問
簡単に多くの音を再生するアプリを作成しました:
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によって管理されているため、実際のサウンドファイルを再生しているのでなければ、ここでは運が悪いと思います。サウンドファイルを使用できる場合は、こちら。
がんばって!