2012-04-06 8 views
0

in meiner Aktivität anrufe, möchte ich ein Bild mit android.hardware.Camera machen. Der Code (siehe unten) funktioniert gut in meinem AVD, aber es funktioniert nicht auf meinem Android-Handy - alles was ich bekomme ist "Error -1".Android Kamera "Error -1" wenn ich camera.takePicture

AVD: Ziel: Android 2.3.3 SD-Karte: 64 MB WVGA800

Telefon: Samsung Galaxy S2 mit Android 2.3.6

-Code:
android.hardware.Camera camera = Camera.open();
camera.takePicture(null, null, mPictureCallback);
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;

Manifest:
uses-feature android:name="android.hardware.camera"
uses-permission android:name="android.permission.CAMERA"

Ich glaube nicht, dass die PictureCallback Sachen - wenn ich alles in der onPictureTaken Methode Kommentar wird der gleiche Fehler zurückgegeben. Auch habe ich mein Telefon neu gestartet, habe versucht ein paar Kameraparameter einzustellen usw. - aber nichts hilft. Ich kann diesen spezifischen Fehlercode für die Kamera auch nicht finden.

Vielen Dank im Voraus!

Antwort

0

Ohne eine korrekte zugewiesenen SurfaceView wird es nicht funktionieren.

Auch die SurfaceView muss eine Mindestgröße haben.

+0

Muss ich auch ein SurfaceView hinzufügen, wenn ich ein Bild machen und es nur speichern möchte (ohne etwas anzuzeigen)? – Flok

+0

Ja, und der Code ist sehr empfindlich. Entschuldigt nicht viel. –

+0

Ich schaue drüber nach - Danke! – Flok

0

Ihr Code hat einen wichtigen fehlenden Teil. Sie müssen startPreview() anrufen, bevor Sie takePicture() anrufen. Eine andere wichtige Sache ist, dass das aufgenommene Foto etwas verzögern kann und Java Garbage Collector Ihre Kameravariable abholen kann, bevor Sie das Ergebnis haben. Lassen Sie die Kameravariable auf der Picture Callback-Methode los. Sie müssen die setPreviewCallback(null) nicht explizit definieren, Sie können sie aus Ihrem Code entfernen. Es ist wichtig, die Erregung von startPreview() zweimal zu vermeiden, bevor das Bild aufgenommen wird. Deaktivieren Sie das Element in Ihrer Schnittstelle und aktivieren Sie die Callback-Methode nach (und innerhalb).