Ich arbeite an einer benutzerdefinierten Kameraaktivität für meine Anwendung. Ich habe die Anleitung von der Android-Entwickler-Website hier verfolgt: Ссылка Alles scheint gut zu funktionieren, außer die Callback-Funktion wird nicht aufgerufen und das Bild wird nicht gespeichert. Hier ist mein Code:
%Vor%Nachdem ich auf den Button geklickt habe, erhalte ich Logs: "wird jetzt ein Bild aufnehmen", "wird nun die Kamera freigeben" und "wird jetzt das Ziel aufrufen". Die Aktivität wird erfolgreich abgeschlossen, aber die Callback-Funktion wurde während des
nicht aufgerufen %Vor%function (Es gab keine Protokolle aus den Funktionen mPicture callback oder getMediaOutputFile), und an dem angegebenen Speicherort befindet sich keine Datei.
Irgendwelche Ideen? :) Vielen Dank!
Der Aufruf von mCamera.takePicture()
ist asynchron. Das bedeutet, dass der Anruf sofort abgeschlossen wird, die eigentliche Bildaufnahme und -verarbeitung jedoch erst zu einem späteren Zeitpunkt erfolgt. Dies geschieht jedoch sofort nach dem Aufruf von mCamera.takePicture()
:
Das bedeutet, dass Sie die Kameraressourcen freigegeben und die Aktivität beendet haben, bevor die Kamera die Chance hat, das Bild tatsächlich aufzunehmen und Sie zurückzurufen.
Sie müssen diesen Code in die Callback-Methode onPictureTaken()
verschieben, damit Sie die Ressourcen freigeben und die Aktivität beenden, nachdem der Rückruf erfolgt ist.
Machen Sie das so, wenn Sie mehrere Bilder mit der SurfaceView Custom Camera aufnehmen möchten
%Vor%und
%Vor%Tags und Links android camera android-camera