2012-02-02 39 views
1

在iOS 5中,音量提高按鈕現在會在相機應用中拍攝一張照片,並在UIImagePickerController實例中顯示.showsCameraControlls == YES。快樂的時光。如何在使用UIImagePickerController和自定義攝像頭控件時對音量提高事件拍照?

但是,當我將showsCameraControlls設置爲NO,並提供我自己的(這又觸發takePicture方法)時,音量提高按鈕將不再起作用。如何在UIImagePickerController顯示時檢測音量事件?

舊的方式來檢測量的變化是,像這樣:

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

我將此代碼添加到我的應用程序委託。奇怪的是volumeChanged:直到我第一次展示UIImagePickerController之後纔會觸發。更重要的是,它不會在UIImagePickerController可見時觸發(也不會顯示通常的HUD音量),我想因爲Apple禁用了它,&劫持了該事件。

所以再次,有沒有什麼辦法來檢測音量提高按鈕事件,而UIImagePickerController正在顯示,當使用自定義攝像頭控制,拍照時?

如果您想知道爲什麼我需要使用自定義相機控件,那是因爲我想要拍攝多張照片,而標準相機控件不允許使用這些照片。

回答

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/

+0

謝謝,我現在更熱衷於高層次的東西,低層次的東西有點矯枉過正,只是爲了添加這個功能。你的教程鏈接看起來很有希望,我會檢查出來。 – 2012-02-02 14:16:37

+0

我試過教程,它的工作原理 - 但不是當UIImagePickerController可見時。 – 2013-05-04 11:54:39

4

在iOS 8,你可以觀察員添加到通知_UIApplicationVolumeUpButtonDownNotification

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

如果您正在使用UIImagePickerController,我能夠捕獲該事件並使用它以自定義視圖呼叫TakePicture

最重要的是,UIImagePickerController確保按下音量不會改變音量。

我不確定蘋果是否會批准收聽該通知的應用程序;這似乎是最乾淨的方法。

+0

你是否必須初始化任何音頻會話?只訂閱此通知並不能解決問題。 – 2015-01-28 13:27:21

+0

看來這個解決方案不再適用於iOS 10 – iCode 2016-09-16 14:06:20

相關問題