Kamerafehler "Verbindung zur Kamera kann nicht hergestellt werden" oder bei manchen Telefonen wird der Fehler "Kamera wird von einer anderen App verwendet" angezeigt

8

Ich habe implementiert, um Audio im Hintergrund mit Android MediaRecorder aufzunehmen, wenn die Audio-Aufnahme läuft und Benutzer öffnen die native Kamera, um Videos aufzunehmen, gibt es

  

Kamerafehler "Verbindung zur Kamera nicht möglich"

oder auf einigen Telefonen erscheint der Fehler als

  

Ihre Kamera wird von einer anderen Anwendung verwendet

Wenn ich mediarecorderklicke stoppe, dann funktioniert die native Kamera-Videoaufzeichnung. Ich suchte nach Ereignissen, um zu wissen, wann Camera das Video startet. In meiner App stoppe ich dann den Mediendatensatz, ich habe BroadcastReceiver mit Filtern

%Vor%

NEW_VIDEO und NEW_PICTURE -Ereignisse werden ausgelöst, wenn ein Bild oder Video erfasst und im Verzeichnis gespeichert wird. Weiß jemand, wie dieses Problem gelöst werden kann? Ich möchte in meiner App wissen, wann Native / Camera Apps Videos aufnehmen. Vielen Dank im Voraus

    
Naveed Ahmad 03.08.2017, 11:54
quelle

2 Antworten

0

Sogar ich hatte das gleiche Problem. Sobald die Kamera-Ressource von einer Anwendung verwendet wird, können Sie sie, bis sie freigegeben wird, in einer anderen App oder sogar in einem Dienst verwenden. Wenn ein Dienst die Kameraressource nutzt, können wir bis auf die Freigabe der Kamera keine Kamerahardware verwenden. Sie können überprüfen, ob Kamera-Hardware mit diesem Code verwendet wird: -

%Vor%     
GAGAN BHATIA 03.08.2017 12:00
quelle
0

CameraManager.AvailabilityCallback stellt onCameraAvailable(String cameraId) -Methode zur Verfügung, um zu erkennen, ob die Kamera verfügbar ist oder nicht? Ссылка

Das Abrufen aller Kamera-IDs ist identisch mit den obigen, wie in @GAGAN gezeigt.

%Vor%

Ссылка

Hinweis: Bis andere Anwendungen Ihre Kamera-Hardware verwenden, werden sie von ihnen absichtlich verwendet. Also, bis diese Apps deine Hardware nicht freigeben, kannst du das nicht nutzen, es ist klar. Sie können nicht wissen, ob diese Apps tatsächlich die Kamera benötigen. Wir glauben, dass der Prozess die Hardware bei Bedarf reserviert.

Aber wir können den Listener einstellen, wenn die Kamera verfügbar wird (kostenlos), so dass Sie sofort verwenden können.

%Vor%

Die Verwendung von CameraManager.AvailabilityCallback abstract class ist, wenn Sie Objekt instanziieren, Sie anonyme Instanziierung implementieren Callbacks wie onCameraAvailabe() , das ist tatsächlich ein listener , dass Sie von der Kamera Observer erhalten.

Antwort: Wenn Sie Ihre Befehle zur Kamerabearbeitung in onCameraAvailable() callback gesetzt hätten, würde ich Ihnen garantieren, dass Sie den Fehler, den Sie angezeigt haben, nicht erhalten haben.

Wenn die Kamera von anderen Apps im Hintergrund verwendet wird, bedeutet dies, dass diese anderen Apps fehlerhaft sind, da die Kamera eine Vordergrundvorschau benötigt; Sie geben die Kamera auch dann nicht frei, wenn sie damit fertig sind. Niemand benutzt die Kamera im Hintergrund. Auch in diesem Fall sollten Sie den Kameraprozess nicht energisch abbrechen, da es zu Speicherlecks kommen kann. Weil Sie nicht wissen, wie andere Prozesse Kamera verwenden.

    
Uddhav Gautam 12.08.2017 14:20
quelle