2016-07-21 18 views
3

我們的應用程序作爲後臺服務運行,不斷從正面相機獲取圖像,然後對圖像進行處理。但是,當用戶嘗試打開另一個使用相機的應用程序時,會發生兩件事:新應用程序崩潰並且我們的應用程序仍在繼續,或者我們的崩潰和新應用程序可以訪問相機。檢測另一個應用程序何時嘗試使用相機

現在,如果我們的應用程序失去對相機的控制權,那麼我們可以捕捉到一個異常,然後我們可以開始嘗試訪問它,直到獲得訪問權並且事情恢復正常。

問題是當其他應用程序因我們的原因而崩潰時。有沒有什麼方法可以檢測到這一點,所以我們可以暫停我們的應用程序,直到我們可以再次訪問相機?

+0

relevant [question](http://security.stackexchange.com/questions/40284/how-can-i-detect-which-background-application-is-using-the-camera-microphone-or) – Bill

回答

0

發生這種情況是因爲相機是獨佔資源。

我建議你閱讀Camera documentation,它說:

如果您的應用程序不能正確釋放相機,所有 隨後嘗試訪問攝像機,包括那些由你自己 的應用程序,將失敗並可能導致您的或其他應用程序被關閉。

+0

我們的應用需要持續訪問相機。我們希望在另一個應用嘗試使用它時釋放它,因爲現在其他應用只是在沒有通知用戶原因的情況下崩潰(儘管一些手機通知並且甚至將我們的應用從後臺移到前臺)。不斷釋放,分析,然後再次打開相機會太慢(對相機開口的快速測試需要大約350毫秒,應用程序需要以最低15 fps的速度運行,但是20+會更好) – AndydnA

+0

當您的應用程序未打開時,爲什麼需要使用相機?您可以使用onpause方法釋放相機,然後在onresume方法中重新初始化它。 – drew

+0

該應用程序拋出RuntimeException如果由於某種原因打開相機失敗。有一個代碼[這裏](http://stackoverflow.com/questions/15862621/how-to-check-if-camera-is-opened-by-any-application)可能是有用的。 –

相關問題