【问题标题】:How to set System volume programmatically in iOS如何在 iOS 中以编程方式设置系统音量
【发布时间】:2016-04-27 15:17:42
【问题描述】:

我正在从以下代码获取系统音量

[[NSNotificationCenter defaultCenter]
      addObserver:self
      selector:@selector(volumeChanged:)
      name:@"AVSystemController_SystemVolumeDidChangeNotification"
      object:nil];
 - (void) volumeChanged:(NSNotification *)  
 {
     float volume = [[[notification userInfo]
                     objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]
                     floatValue];

     // here volume is the .....
 }

但是如何从 xcode 设置系统或设备音量(目标 C)

【问题讨论】:

标签: ios objective-c


【解决方案1】:

如果不调用私有方法/使用私有 API,则无法以编程方式设置系统音量。

您必须调用 _commitVolumeChange 这是私有 API 并且肯定会导致您的应用被拒绝。

延伸阅读here.

【讨论】:

    【解决方案2】:

    也许这会对您有所帮助(如果您可以访问 AVPlayer 对象并想要更改播放资源的音量),我使用此类代码在播放视频时修改 AVPlayer 中的音量。

    - (void)setVolume:(CGFloat)volumeToSet forPlayer:(AVPlayer *)avPlayer {
        AVURLAsset *asset = (AVURLAsset *) [[avPlayer currentItem] asset];
        NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
    
        NSMutableArray *allAudioParams = [NSMutableArray array];
        for (AVAssetTrack *track in audioTracks) {
            AVMutableAudioMixInputParameters *audioInputParams =    [AVMutableAudioMixInputParameters audioMixInputParameters];
            [audioInputParams setVolume:volumeToSet atTime:kCMTimeZero];
            [audioInputParams setTrackID:[track trackID]];
            [allAudioParams addObject:audioInputParams];
        }
        AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
        [audioZeroMix setInputParameters:allAudioParams];
    
        [[avPlayer currentItem] setAudioMix:audioZeroMix];
    }
    

    更多关于这个解决方案的细节在这里Adjusting the volume of a playing AVPlayer

    如果您想在此处更改设备的音量,这是一种解决方法,可能会在某些 iOS 版本中中断,但现在可以在 iOS 7、iOS 8、iOS 9 中使用(经过测试)。 iOS 9: How to change volume programmatically without showing system sound bar popup?

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2013-07-16
      • 2018-05-06
      相关资源
      最近更新 更多