2016-07-21 12 views
3

Unsere App läuft als Hintergrunddienst, holt sich ständig die Bilder von der Frontkamera und macht dann die Dinge mit den Bildern. Wenn der Benutzer versucht, eine andere App zu öffnen, die die Kamera verwendet, passiert jedoch zwei Dinge: Entweder die neue App stürzt ab und unsere setzt fort, oder unsere Abstürze und die neue bekommt Zugriff auf die Kamera.Erkennen, wenn eine andere App versucht, die Kamera zu verwenden

Jetzt, wenn unsere App die Kontrolle über die Kamera verliert, gibt es eine Ausnahme, die wir fangen können, und wir können dann versuchen, darauf zuzugreifen, bis wir Zugriff bekommen und die Dinge wieder normal werden.

Das Problem ist, wenn die anderen Apps wegen unserer abstürzen. Gibt es eine Möglichkeit dies zu erkennen, damit wir unsere App pausieren können, bis wir wieder auf die Kamera zugreifen können?

+0

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

Antwort

0

Dies passiert, weil die Kamera eine exklusive Ressource ist.

Ich empfehle Ihnen, die Camera documentation, zu lesen, die sagt:

Wenn Ihre Anwendung richtig die Kamera nicht loslassen, alle nachfolgende Versuche auf die Kamera zuzugreifen, werden diejenigen, die durch Ihre eigenen Anwendung einschließlich fehlschlagen und möglicherweise verursachen Ihre oder andere Anwendungen Herunterfahren.

+0

Unsere App benötigt ständigen Zugriff auf die Kamera. Wir wollen es veröffentlichen, wenn eine andere App versucht, es zu benutzen, weil gerade jetzt die anderen Apps abstürzen, ohne dass der Benutzer über den Grund informiert wird (obwohl einige Telefone dies melden und unsere App sogar vom Hintergrund in den Vordergrund bringen). Immer wieder loszulassen, unsere Analyse zu machen und dann die Kamera wieder zu öffnen, wäre zu langsam (ein kurzer Test der Kameraöffnung dauerte etwa 350 ms. Die App muss mindestens 15 fps laufen, aber 20+ wären gut) – AndydnA

+0

Warum benötigen Sie einen Kamerazugriff, wenn Ihre App nicht geöffnet ist? Sie können die Kamera in der Onpause-Methode freigeben und anschließend in der Onresume-Methode neu initialisieren. – drew

+0

Die App löst eine RuntimeException aus Wenn das Öffnen der Kamera aus irgendeinem Grund fehlschlägt. Es gibt einen Code [http://stackoverflow.com/questions/15862621/how-to-check-if-camera-isopened-by-any-application], der nützlich sein kann. –

Verwandte Themen