当前位置:  开发笔记 > 前端 > 正文

程序访问iPhone音量按钮

如何解决《程序访问iPhone音量按钮》经验,为你挑选了2个好方法。

有没有办法订阅音量按钮按事件?



1> lostInTransi..:

最近被Apple拒绝之后

不要使用它.Apple现在使用一些补丁,如果它使用任何私有API,它会立即拒绝你的应用程序 - 虽然应该注意到App Store上的一些应用程序已经使用它并且仍然存在!

现在唯一的方法是让AVAudioPlayer准备播放但不播放([player prepareToPlay]).这似乎是根据摇杆按钮调整应用程序的音量.

目前还没有其他公布的方式可以解决这个问题.

请阅读上面的说明

是的,使用MPVolumeView

MPVolumeView *volume = [[[MPVolumeView alloc] initWithFrame:CGRectMake(18.0, 340.0, 284.0, 23.0)] autorelease];
  [[self view] addSubview:volume];

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) 
                                        name:@"AVSystemController_SystemVolumeDidChangeNotification" 
                                        object:nil];    
  for (UIView *view in [volume subviews]){
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
      volumeViewSlider = view;  //volumeViewSlider is a UIView * object
    }
  }
  [volumeViewSlider _updateVolumeFromAVSystemController];

-(IBAction)volumeChanged:(id)sender{
  [volumeViewSlider _updateVolumeFromAVSystemController];
}

这将为您提供一个滑块(与ipod中使用的滑块相同),其值将根据手机的音量进行更改

您将收到编译时警告,视图可能无法响应_updateVolumeFromAVSystemControl,但只是忽略它.


你可以使用MPMusicPlayerController*musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; musicPlayer.volume = newVolume; 这不是私密的,会改变音量值.
您无法使用此代码发布应用,它使用私有API.这就是编译时警告的内容,下划线前缀也是赠品.

2> William Denn..:

如果您只是想收到通知,我认为它是这样的:

如果我错了,请纠正我,但我不相信这会使用任何内部API.

[[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(volumeChanged:) 
        name:@"AVSystemController_SystemVolumeDidChangeNotification" 
        object:nil];

此活动的详细信息如下:http://www.cocoadev.com/index.pl?AVSystemController

这里的其他回复似乎是基于这个黑客:http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html这是一个现在修复的bug的解决方法.

但我很确定如果你想做的只是获取通知,而不是设置系统音量,你可以像任何其他事件一样使用通知中心!

请注意:由于Apple在相机中添加了音量增大操作,因此当a 可见时,不会发布此通知UIImagePickerController.


如果我还添加了一个不可见的MPVolume视图,这对我有用.也就是说,只需添加到您的代码:`#import `和`MPVolumeView*slide = [MPVolumeView new];`
请注意,当`UIImagePickerController`(例如相机)可见时,此通知不会被发送.
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有