Wenn ich nicht verwende mCamera.release (); in surfaceDestroyed (....) then CameraActivity kann nicht erneut von einer anderen Aktivität aus gestartet werden [kurz: App leider gestoppt ] Fehler Camera wird nicht freigegeben, aber wenn , tippe ich auf die Home-Taste [ von CameraActivity ] und dann wieder auf Start meiner App , kein Fehler (kurz gesagt funktioniert gut, und CameraActivity ohne Probleme zu öffnen)
Und wenn ich bin, benutze * mCamera.release (); * in surfaceDestroyed (. ...) dann kann CameraActivity erneut von einer anderen Aktivität starten und Kamera ebenfalls freigeben , aber wenn ich auf die Home-Taste tippe und dann meine App erneut starte, wird die App leider beendet ....:
Aber ich möchte, dass beide Dinge zusammenarbeiten (zuerst Tippen Sie auf Home von CameraActivity und starten Sie die App erneut von CameraActivity - ohne Fehler ) und ( Start der Kamera von einer anderen Aktivität - ohne Fehler)
Wie ich geschrieben habe, funktionieren beide Dinge für mich, aber nicht zusammen .....
Zeilennummer 33 ist:
%Vor%log abschließen:
%Vor%VorschauSurface.java:
%Vor%Es war erfreulich, dass wenn Sie die Home-Taste drücken, Ihre aktuelle Aktivität im OnStop-Modus & amp; Wenn du wieder zurückkommst, wird es im Zustand des Neustarts beginnen. Nicht von dem Konstruktor von PreviewSurface, wo Sie die Kamera halten. Bevor es losgeht, versucht niemand die gleiche Kamera zu erreichen.
Aber wenn Sie eine andere Aktivität von Ihnen starten Aktivität, die eine SurfaceView verwendet, die vom Konstruktor & amp; wird versuchen, die gleiche Kamera zu halten, die bereits von Ihrer vorherigen Aktivität gehalten wurde.
Überschreiben Sie statt onPause () und onResume () onStop () und onRestart (). Im Aktivitätszyklus wird onStop () aufgerufen, wenn die Aktivität nicht sichtbar ist, und der nächste Lifecycle-Methodenaufruf wäre onRestart (). Sehen Sie sich den folgenden Code an.
%Vor%m_CameraPreview ist das Objekt der Klasse, das folgendermaßen aussieht: Die öffentliche Klasse CameraSurfaceView erweitert SurfaceView implementiert Callback
Dies ist die onRestart-Methode:
%Vor%Das Rahmenlayout wird an die vorherige Kamera-Instanz gebunden und seine 'Oberflächenansicht'-Callbacks werden zusätzlich zum neuen Kameraobjekt erstellt, wodurch eine Wettlaufbedingung erzeugt wird. Daher müssten Sie es in onStop () freigeben und in onRestart () neu initialisieren. Hoffe, das hilft.