如何在不更改声音指示器的情况下在 iOS 中以最大音量播放声音文件

Posted

技术标签:

【中文标题】如何在不更改声音指示器的情况下在 iOS 中以最大音量播放声音文件【英文标题】:How to play a sound file at maximum volume in iOS without a sound indicator change 【发布时间】:2013-02-19 16:00:51 【问题描述】:

在我的应用中,我需要播放音量从 0 到最大系统音量的声音(这是一个闹钟应用)。

我目前使用AVAudioPlayer 播放声音并使用MPMusicPlayerController 在警报期间最大化设备音量

MPMusicPlayerController.applicationMusicPlayer.volume = 1.0;


NSString *fileName = [NSString stringWithFormat:alarm.sound];
fileName = [fileName stringByDeletingPathExtension];

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aifc"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
audioPlayer.volume = 0.0;
audioPlayer.numberOfLoops = -1;

[audioPlayer prepareToPlay];

audioPlayer.play;

然后我安排一个计时器来增加音量

timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                         target:self
                                       selector:@selector(pollTimeForGradualVolumeIncrease)
                                       userInfo:nil repeats:YES];

//逐渐增大音量

- (void)pollTimeForGradualVolumeIncrease

    timerSecond += 1;

    if (audioPlayer.volume < 1.0 && timerSecond % 1 == 0)
    
        [audioPlayer setVolume:audioPlayer.volume + 0.02];
        UISlider *slider = volumeSliderView.subviews[0];
        [slider setValue:1.0 animated:NO];
    
    else if (audioPlayer.volume >= 1.0)
    
        timerSecond = 0;
        timer.invalidate;
        timer = nil;
    

这样的问题是设置MPMusicPlayerController.applicationMusicPlayer.volume时会出现ios音量指示器

有没有办法以最大设备音量播放声音文件而不显示 iOS 音量变化指示器?

【问题讨论】:

您说您使用的是应用程序音乐播放器音量,但我看到您使用的是音频播放器 setVolume,它是一个 AVAudioPlayer,您能澄清一下吗? 据我了解。 ApplicationMusicPlayer 为 iOS 设置主音量,我使用 AVAudioPlayer 播放声音。这不正确吗?我按照***.com/questions/9279233/… 中的示例进行操作。 AVAudioPlayer 播放声音并逐渐将音量增大到主音量的一小部分。 我不认为你可以这样做,你可以做的就是将音量设置为最大,保留更改前的音量值,当你停止播放时恢复到原来的值声音... 【参考方案1】:

8 个月前我正在尝试相关的东西,据我所知,如果存在 MPVolumeView,iOS 则不会显示系统音量更改指示器。

如果您实际上不想看到 MPVolumeView,我想您可以将它隐藏在另一个视图后面。

【讨论】:

我最终用类似的解决方案修复了它。我只是将 MPVolumeView 的原点设置在屏幕外

以上是关于如何在不更改声音指示器的情况下在 iOS 中以最大音量播放声音文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改 HTML 的情况下在 Bootstrap 3 中用 FontAwesome 替换 Glyphicons?

如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?

如何在不使用原生 ios 应用程序中的 FBSDKShareDialog 的情况下在 Facebook 墙上分享照片或链接

如何在不知道查询结果类型的情况下在 EF/VB.net 中运行存储过程?

iOS - 如何在不按下按钮的情况下在视图控制器之间移动

在 iOS 中播放声音会暂停背景音乐