当用户调整铃声音量时,你能在iPhone上触发功能吗?

时间:2009-11-10 00:27:19

标签: iphone objective-c cocoa-touch

我想在我的应用程序中调出相机,让用户按下手机上的硬件音量按钮拍照。

这可能吗?我可以在用户更改音量时触发功能,然后我可以在此功能中以编程方式触发相机吗?

非常感谢链接或代码段。

3 个答案:

答案 0 :(得分:8)

我是Frank Krueger和wkw的评论。从用户体验的角度来看,这听起来是一个非常糟糕的主意。无论如何你想尝试一下,你可以试试这个:

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
[musicPlayer beginGeneratingPlaybackNotifications];

只要音量发生变化,系统就会生成MPMusicPlayerControllerVolumeDidChangeNotification。您可以使用-[NSNotificationCenter addObserver:selector:name:object:]注册自己作为通知的观察者。但是,这并不直接与音量控制按钮相关联。例如,用户也可以插入或移除耳机,操作系统根据此配置的最后设置调整音量。)

此外,我认为音量通知仅适用于音乐音量的更改,而不适用于系统/铃声音量。所以它只会在播放音乐时发布。但我不确定这一点。

答案 1 :(得分:0)

要获得音量变化通知,您可以定义回调函数:

    void listenerCallback (void *inUserData, 
                           AudioSessionPropertyID inPropertyID, 
                           UInt32 inPropertyValueSize, 
                           const void *inPropertyValue)

然后注册:

AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume,            
                                propertyListenerCallback, 
                                userData);                               

这当然假定您在此之前初始化应用程序的AudioSession。

但是,使用音量按钮除了与音量相关的任何内容之外,您的应用程序都会在快速通道上被拒绝。

答案 2 :(得分:0)

有趣的是,在Apple实施之前,这是一个如此糟糕的主意。安德鲁是否因为在他们面前提出这个想法而获得Apple的任何赔偿?