相关疑难解决方法(0)

如何在iOS上获得音量级别和音量更改通知?

我正在写一个非常简单的应用程序,按下按钮时会发出声音.由于当设备设置为静音时该按钮没有多大意义,我想在设备的音量为零时禁用它.(然后当音量再次升高时重新启用它.)

我正在寻找一种工作(和AppStore安全)方式来检测当前的音量设置,并在音量级别改变时获得通知/回调.我不想改变音量设置.

所有这些都是在我ViewController使用所述按钮的地方实现的.我用运行iOS 4.0.1和4.0.2的iPhone 4以及运行4.0.1的iPhone 3G测试了这个.使用iOS SDK 4.0.2和llvm 1.5构建.(使用gcc或llvm-gcc不能改进任何东西.)在构建实现​​任何一种方式时都没有问题,既没有错误也没有警告.静态分析仪也很开心.

这是我到目前为止所尝试的,都没有任何成功.

继苹果公司的音频服务的文件,我应该在注册AudioSessionAddPropertyListenerkAudioSessionProperty_CurrentHardwareOutputVolume应该像这样工作:

// Registering for Volume Change notifications
AudioSessionInitialize(NULL, NULL, NULL, NULL);
returnvalue = AudioSessionAddPropertyListener (

kAudioSessionProperty_CurrentHardwareOutputVolume ,
      audioVolumeChangeListenerCallback,
      self
);
Run Code Online (Sandbox Code Playgroud)

returnvalue是的0,这意味着注册回调有效.

可悲的是,audioVolumeChangeListenerCallback当我按下设备上的音量按钮,耳机响铃或翻转振铃静音开关时,我从未收到回调功能.

当使用完全相同的代码进行注册时kAudioSessionProperty_AudioRouteChange(用作WWDC视频中的类似示例项目,开发人员文档以及互联网上的众多站点)我实际上在更改音频路径时收到回调(通过插入/拔出耳机或对接设备).

一个名为Doug的用户打开了一个标题为iPhone卷改变事件的线程已经达到最大值,他声称他已成功使用这种方式(除非卷实际上没有因为已经设置为最大而改变).不过,它对我不起作用.

我尝试过的另一种方法就是NSNotificationCenter像这样注册.

// sharedAVSystemController 
AudioSessionInitialize(NULL, NULL, NULL, NULL);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
                                         selector:@selector(volumeChanged:) 
                                             name:@"AVSystemController_SystemVolumeDidChangeNotification" 
                                           object:nil];
Run Code Online (Sandbox Code Playgroud)

这应该通知我的方法volumeChanged …

iphone audio volume ios4 ios

56
推荐指数
4
解决办法
5万
查看次数

检测iPhone音量按钮按下?

是否有通知我可以听到,它会告诉我什么时候iPhone的音量调高

我知道AVSystemController_SystemVolumeDidChangeNotification这一点,但是只有在音量调高时才触发通知,而不是向上或向下触发.

其次,如何隐藏按下音量增大按钮时出现的半透明视图,显示系统的音量? Camera +实现了这一点.

iphone volume objective-c ios avsystemcontroller

13
推荐指数
2
解决办法
1万
查看次数

iPhone检测音量键按.

我需要检测用户何时按下硬件音量键,(App Store安全方法)我已经尝试了许多没有运气的事情.你知道如何实现这样的功能吗?目前我正在注册通知,但它们似乎没有被调用.这是我的代码:

  AudioSessionInitialize(NULL, NULL, NULL, NULL);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
                       selector:@selector(volumeChanged:) 
                           name:@"AVSystemController_SystemVolumeDidChangeNotification" 
                         object:nil];
Run Code Online (Sandbox Code Playgroud)

接收方法是:

-(void)volumeChanged:(NSNotification *)notification{
         NSLog(@"YAY, VOLUME WAS CHANGED");}
Run Code Online (Sandbox Code Playgroud)

任何提示将非常感谢.

iphone audio volume avfoundation ios

10
推荐指数
1
解决办法
9756
查看次数