【问题标题】:IOS maximum volume level for AVAudioPlayer?AVAudioPlayer的IOS最大音量级别?
【发布时间】:2012-02-14 15:06:22
【问题描述】:

我使用 AVAudioPlayer 播放 .caf 文件。我的问题是:它对我的目的来说不够响亮。由于 iPhone 的铃声响亮得多,我想知道如何存档此音量。 我已经尝试操作 .caf 文件,但没有真正成功。有什么想法吗?

我目前使用的代码:

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: url error: nil];
self.appSoundPlayer = newPlayer;
[newPlayer release];
[appSoundPlayer prepareToPlay];
[appSoundPlayer setVolume: 0.8];
[appSoundPlayer setDelegate: self];
    [appSoundPlayer play];

编辑:

[appSoundPlayer setVolume: 1.0];

谢谢 马丁

【问题讨论】:

    标签: iphone ios avaudioplayer volume


    【解决方案1】:

    您始终可以将音量设置为实际最大值,例如:

    [appSoundPlayer setVolume: 1.0];
    

    除此之外,您可能还必须编辑文件本身。

    【讨论】:

    • 谢谢彼得,对,1.0 .. 复制和粘贴错误。但是还是太安静了;(
    【解决方案2】:

    Martin,你确保系统音量达到最大值了吗?如果没有,您想使用 MPMusicPlayerController 将系统音量调到最大,而不仅仅是 avaudioplayer 最大。您可以根据声音片段的长度将其调高,然后将其设置回用户设置的原始音量。

    // Import headers. Link to "MediaPlayer Framework"
    #import <MediaPlayer/MediaPlayer.h>
    
    //set up audio session
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL];
    
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
    
    NSURL *soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"HsTR_soundEFX_2-1" ofType:@"mp3"]];
    audioAlert= [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
    audioAlert.delegate = self;
    [audioAlert prepareToPlay];//audioAlert is an AVAudioPLayer declared in header
    
    //and whereever you want to play the sound, call the lines below
    float currentVolume=[MPMusicPlayerController applicationMusicPlayer].volume; //grab current User volume
    [[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0];//set system vol to max
    [audioAlert play];
    [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(setVolumeBackToNormal)userInfo:nil repeats:NO];
    
    //and the setVolumeBackToNormal function calls this line below
    [[MPMusicPlayerController applicationMusicPlayer]setVolume:currentVolume];//returns volume to original setting
    

    【讨论】:

    • 嘿,别忘了链接MediaPlayer框架。
    • 谢谢!有用的评论可能是 MPMusicPlayerControllervolume 属性在 iOS 7.0 中已被弃用,如 here 所述。
    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    相关资源
    最近更新 更多