Anwendung hängt / einfrieren bei der Verwendung von camera.open () – Neustart des Gerätes benötigt

Meine Anwendung ist ganz einfach und einfach, ich muss nur die Kamera öffnen (nicht einmal Bilder anzeigen, habe ich den Code kommentiert)

Also, im Grunde habe ich so etwas wie:

  • Saubere Bindung / Entbindung an einen Service in einer Anwendung
  • UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException
  • Aktivität und Fragmentübergänge in Lollipop
  • Wie kann ich veröffentlichen, um die x86 und ARM apks meiner Cordova-Crosswalk App zu speichern?
  • Android: Einstellungsfenster Hintergrund auf gestartete Aktivität
  • Ausführen / Installieren / Debuggen von Android-Anwendungen über Wi-Fi?
  • @Override public void onResume() { super.onResume(); if (camera != null) { //Just to be sure camera.stopPreview(); camera.setPreviewCallback(null); camera.release(); camera = null; } Log.e("DebugCam", "Before"); camera = Camera.open(); Log.e("DebugCam", "After"); } @Override protected void onPause() { super.onPause(); if (camera != null) { camera.stopPreview(); camera.release(); camera = null; } } 

    Aber meine Logcat zeigt nur die erste Nachricht an:

     Before 

    Die App ist einfach hängen, und ich muss das Gerät neu starten, damit es wieder funktioniert !!!

    Ich verstehe wirklich nicht, wo ist das Problem oder wie konnte ich zumindest das Einfrieren vermeiden, das ist wirklich nervig.

    Ich bekomme wirklich nicht, wie ich das debuggen könnte …

    Edit: Ich habe das auf Android Bug Tracking gesehen, klingt wie ich brauche eine Workaround, da der Patch im Juni veröffentlicht wurde) https://code.google.com/p/android/issues/detail?id=1578

  • Wie lade ich ein Picasa-Bild aus URI?
  • Geben Sie ein Zeichen pro zwei Tasten in der Android-Tastatur aus
  • Wie bekomme ich das Mat-Objekt aus dem Byte in openCV Android?
  • Konvertieren eines Strings in eine Ganzzahl auf Android
  • RunOnUiThread (neu Runnable () {}) ist undefiniert für den Typ new Thread () {}
  • Java vs Objective C im Falle von nullpointer Ausnahme
  • 6 Solutions collect form web for “Anwendung hängt / einfrieren bei der Verwendung von camera.open () – Neustart des Gerätes benötigt”

    Das Problem bezieht sich auf Ihre aktualisierten Rom Daten, die auf Ihrem Mobiltelefon installiert ist, gibt es keine Möglichkeit, etwas zu tun, es sei denn, Sie aktualisiert Ihre Rom in Ihrem Handy.

    Zuerst möchte ich sagen, dass ich keine Stimmen oder Reputation suche oder was auch immer für diese, aber wollte alle Informationen über die Frage zusammenfassen, die ich zu finden, also bitte nicht zu hart sein: -).

    Ich habe einige Recherchen gemacht und ich fand einen interessanten und vermutlich nicht so eng verwandten Thread über ein ähnliches Problem im DroidForums :

    Dort haben sie herausgefunden, dass die SD-Karte die Freese verursacht hat (ich bin mir nicht sicher, ob das jetzt der Fall ist, aber es wird gut sein, wenn jemand es ausprobieren kann) und hier ist das Zitat von dort:

    Meine Kamera und Camcorder waren wie viele andere Leute einfrieren und ich war frustriert .. in meinen Händen habe ich mein "Like-New" Handy in der Hoffnung, dass das helfen würde … kein solches Glück … herausgefunden, was es war … DIE SDHC-KARTE! Einfaches Format der Karte und Probleme ging weg .. um dies zu testen, gehen Sie zu Ihren wichtigsten Einstellungen und hängen Sie die SD-Karte und starten Sie dann die Kamera-App und sehen, ob es nicht einfriert … wenn es nicht wie meine nicht didnt dann haben Sie Ihre Antwort … nicht ganz sicher, was auf meiner SDHC-Karte das verursacht hat … noch unter Untersuchung, aber definitiv etwas da … ich werde aktualisieren, wenn ich genau das finde, was für alle anderen

    Hoffe das hilft und danke allen für die vielen Tipps, die ich von diesem Forum benutzt habe …

    AKTUALISIEREN!!!

    Ich habe gerade das gleiche Problem wieder passiert mit meinem neuen Lebkuchen-Handy und ich habe etwas Neues ausprobiert … einfach verschiebe einige Fotos und Vidoes aus dem Handy und sieh sie bis zum PC … arbeitete wie ein Charme … keine Notwendigkeit Formatiere ganze karte, gib einfach die kamera / camcorder app etwas raum..as wenn 5.5GB war nicht genug, aber hey wer wusste … jetzt Videos nur 1/2 sekunde zu sparen und kamera funktioniert wieder gut … Ich dachte nur, ich würde euch alle wissen lassen.

    Im Allgemeinen scheint es, dass die Speicherkarte das Problem manchmal (oder in den meisten Fällen) verursacht, also, wenn du das Format formatieren kannst, das du benutzt oder es durch ein neues ersetzst, kannst du sehen, ob das das Problem ist.

    Weiterhin, auf dem offiziellen Bug, der hier angemeldet wurde (wie du erwähnt hast): Anscheinend ist der Testfall derselbe wie der, den du hier vorgestellt hast, da die Applikationen, die Camera.open() , das Problem genau auf der Camera.open() Ort.

    Zitat von dort aus:

    Anscheinend hängt Camera.open () selbst, ohne irgendeine Ausnahme zu verursachen, so dass es nichts gibt, was ich fangen und handeln kann. Ich kann dann auch nicht die eingebaute Kamera-App verwenden, da es nur einen schwarzen Vorschau-Bildschirm gibt und ein bisschen später eine Nachricht über das Nicht reagieren, wenn ich versuche, damit zu interagieren. Da im obigen Code-Snippet schon null war (beim Programmstart) gibt es einfach nichts, was ich freigeben kann: no camera.release ().

    Es ist gut, dass dies in der letzten Version behoben wurde und vor einigen Tagen gab es einen Kommentar (der letzte, der vom 15. Juli 2013 ist):

    Vielen Dank für die Bugfixe, aber gibt es einen Workaround für Gerät älter als 22. Juni 2013, als der Patch veröffentlicht wurde (was bedeutet, nach 4.2.2 veröffentlicht im Februar 2013 …)

    Wir hoffen, dass wir uns auf dieser Seite informieren werden, also wünschen wir, dass wir dort Neuigkeiten für ältere APIs hören werden.

    Weiterhin fand ich den Thread hier (wieder, erwähnen ein SD-Karte Problem, nicht viel Info gibt es aber trotzdem):

    Zitat von dort aus:

    Und die Lösung fand: Ich löschte die Thumbnails auf dem Bildordner meiner SD-Karte und startete das Telefon neu. Es scheint, dass das kleine Thumbnail-Fenster, das den letzten Schuss anzeigt, für den App-Crash verantwortlich war, aus irgendeinem Grund waren die Daumen nicht laden können und die Anwendung stürzte.

    Dann gab es diesen Thread auf der xda-Entwickler namens "4.2 Android-Kamera APK FIX!" (Nicht aufgeregt, das ist nur für ROOTED Geräte :-():

    Schnelle Anweisungen aus dem Thread:

    Kamera apk: http://db.tt/xmpgkZIA

    Fügen Sie diese apk zu System / app nach der Installation der Kamera apk zuerst nur für manuell. http://db.tt/OZF6D8fL

    Dies sind die lib-Dateien legen sie auf System / lib fix Genehmigung dann neu starten. http://db.tt/73lcCrcl http://db.tt/wQ7bfR8N

    Für diejenigen, die nicht unterstützt werden, ändern Sie die folgenden Zeilen in build.prop und reboot:

    Ro.product.model = Galaxy Nexus ro.product.brand = google

    Als nächstes (nur um es der breiten Öffentlichkeit zu nennen), fand ich das im AndroidCentral , nur um es willen, es ist wieder ein "fix" für verwurzelte Geräte.

    Auf der Webseite sebertech habe ich diesen Thread zu einem Kameraproblem bei Galaxy S3 gefunden und es ist TouchWix hauptsächlich – LINK :

    Für Galaxy S3-Einheiten, die mit Performance-Problemen geplagt sind, ist das Wurzeln der erste Schritt, um diese Probleme zu lösen. Aber man muss die Risiken berücksichtigen, obwohl es bereits sichere Wege gibt, das Telefon zu verwurzeln. Aber bevor du dich eigentlich entscheidest, das zu tun, ich habe einige Sachen, die ich will, dass du es versuchst.

    1. Recall Apps, die Sie vor kurzem installiert haben, versuchen Sie, sie zu deaktivieren und sehen, ob es Verbesserungen in der Leistung Ihres Telefons gibt. Einige wirklich schwere Apps haben sogar das Problem verursacht oder dazu beigetragen.
    2. Versuchen Sie, den Speicher zu löschen, indem Sie auf den Startbildschirm und halten Sie die Home-Taste. Eine Liste der laufenden oder zuletzt geöffneten Apps wird angezeigt. Du musst einfach nach links oder rechts gehen, um sie zu schließen. Ich bin mir ziemlich sicher, dass Sie bereits die Auswirkungen von so vielen Apps im Hintergrund kennen gelernt haben.

    Limit Galaxy S3 Prozesse

    1. Drücken Sie auf der Startseite die Menütaste und wählen Sie Einstellungen.
    2. Scrollen Sie nach unten und tippen Sie auf Entwickleroptionen.
    3. Finden Sie die Option "Hintergrundprozesse begrenzen" und tippen Sie darauf.
    4. Beschränken Sie die Galaxy S3, um etwa 4 Prozesse auf einmal oder niedriger zu laufen.

    Löschen Sie die Daten für TouchWiz

    1. Tippen Sie auf der Startseite auf die Menütaste.
    2. Wählen Sie Systemeinstellungen und dann Anwendungsmanager
    3. Blättern Sie nach unten, um TW zu finden, und tippen Sie auf Daten löschen.

    Wenn nichts anderes funktioniert, ist es vielleicht Zeit, dein Gerät zu verwurzeln und leichtere und schnellere benutzerdefinierte ROMs zu verwenden und die TouchWiz UI loszuwerden.

    Schließlich, um diese looong Antwort zu beenden, würde ich gern sagen, dass, obwohl ich nur wenige Fixes / Workarounds dafür gefunden habe, hoffe ich wirklich, dass die Offical Bug Fix (verknüpft wieder, um dieses Ding noch einmal zitieren) ist Wird weitgehend verfügbar sein und nicht nur für 4.xx Versionen von Android, ist es schade, dass wir es nicht für ältere Versionen haben (was ist der Deal mit einem Bugfix für ältere APIs sowieso?).

    TL, DR

    Prost ๐Ÿ˜‰

    Versuche dies :

      @Override public void onResume() { super.onResume(); if (camera != null) { //Just to be sure camera.stopPreview(); camera.setPreviewCallback(null); camera.release(); camera = null; } Log.e("DebugCam", "Before"); try { camera = Camera.open();// this is no safe way to open the camera }catch(Exception e) { e.printStackTrace();//get the exception on Logcat } Log.e("DebugCam", "After"); } 

    Direkt von DOCS

    / ** Ein sicherer Weg, um eine Instanz des Kamera-Objekts zu bekommen. * /

     public static Camera getCameraInstance(){ Camera c = null; try { c = Camera.open(); // attempt to get a Camera instance } catch (Exception e){ // Camera is not available (in use or does not exist) } return c; // returns null if camera is unavailable } 

    Schau dir das an: http://developer.android.com/guide/topics/media/camera.html#custom-camera

    Ich hatte ein ähnliches Problem, und das hat für mich gearbeitet:

    Anscheinend hat dieser Rückruf die Puffer mit den Daten für jeden Rahmen der Kamera-Vorschau erstickt.

     camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera arg1) { //invalidate surfaceview } }); 

    Das Entfernen des Rückrufs hat für mich gearbeitet. Ich hoffe es hilft. ๐Ÿ™‚

    Wenn Ihre Anforderung ist nur eine Kamera zu öffnen, werde ich den folgenden Code verwenden
    Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, actionCode);
    Dafür brauchst du diese final static int actioncode=100; Als die Variable der Klasse

    In deiner onPause dein SurfaceView von frameLayout entfernen wie:

     @Override protected void onPause() { super.onPause(); if (camera != null) { camera.stopPreview(); camera.setPreviewCallback(null); camera.release(); camera = null; preview.removeView(mPreview); //here preview is FrameLayout and mPreview is your camera SurfaceView. } } 
    Das Android ist ein Google Android Fan-Website, Alles รผber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.