在iOS 5中,音量增大按钮现在可以在相机应用中拍摄照片,并在UIImagePickerController
实例.showsCameraControlls == YES
上拍照。快乐的日子。
但是,当我将showsCameraControlls
设置为NO
并提供我自己的(后者又触发takePicture
方法)时,音量增大按钮将不再有效。如何在UIImagePickerController显示时检测音量事件?
检测音量变化的旧方法是这样的:
AudioSessionSetActive(true);
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
我将此代码添加到我的应用程序委托中。奇怪的是volumeChanged:
在我第一次显示UIImagePickerController
之后才会被触发。更重要的是,它不会在UIImagePickerController可见时被触发(也不会显示通常的音量HUD),我想是因为Apple禁用它&劫持了这一事件。
再一次,有没有办法检测音量增大按钮事件,而在使用自定义相机控件时,为了拍照而显示UIImagePickerController
?
如果您想知道为什么我需要使用自定义相机控件,那是因为我希望能够拍摄多张照片,标准相机控制不允许这些照片。
答案 0 :(得分:4)
在iOS 8上,您可以向通知_UIApplicationVolumeUpButtonDownNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeChanged:)
name:@"_UIApplicationVolumeUpButtonDownNotification"
object:nil];
如果您使用UIImagePickerController
,我可以捕获该事件并使用它以自定义视图调用TakePicture
。
最重要的是,UIImagePickerController
确保按下音量不会改变音量。
我不确定Apple是否会批准听取该通知的应用程序;这似乎是最干净的方法。
答案 1 :(得分:2)
尝试使用AVCapture API而不是UIImagePicker。这是一个教程:
http://www.musicalgeometry.com/?p=1273
它的级别要低得多,而且使用起来比较困难,但它不应该阻止音量控制。
您可能还想尝试播放静音音频文件以在图像捕捉期间启用音量控制等技巧。
更新:我还发现本教程使用音量按钮进行相机快门:
http://ios.biomsoft.com/2011/12/07/taking-control-of-the-volume-buttons-on-ios-like-camera/