2012-05-29 7 views
9

Ich möchte ein Bild ohne Vorschau machen. Ich habe diesen Code, aber ich erhalte eine Fehlermeldung:Take Picture ohne Vorschau Android

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Camera.Parameters parameters = camera.getParameters(); 
    parameters.setPictureFormat(PixelFormat.JPEG); 
    camera.setParameters(parameters); 
    SurfaceView mview = new SurfaceView(getBaseContext()); 
    try { 
     camera.setPreviewDisplay(mview.getHolder()); 
     camera.startPreview(); 
     camera.takePicture(null,null,photoCallback); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 




} 

Camera.PictureCallback photoCallback=new Camera.PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera camera) { 

     Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues()); 
     OutputStream imageFileOS; 

     try { 

      imageFileOS = getContentResolver().openOutputStream(uriTarget); 
      imageFileOS.write(data); 
      imageFileOS.flush(); 
      imageFileOS.close(); 

      Toast.makeText(AndroidTestJNIActivity.this, "Image saved: " + uriTarget.toString(), Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 

     } catch (IOException e) { 
      e.printStackTrace(); 

     } 
     finish(); 

    } 
}; 

Ich erhalte eine Nullpointer wenn ich versuche, die Kamera zuzugreifen. Ich weiß nicht, wie ich es initialisieren soll. Ich denke das Problem ist, dass die Kamera niemals initialisiert wird.

05-29 14:40:20.330: E/AndroidRuntime(15571): FATAL EXCEPTION: main 
05-29 14:40:20.330: E/AndroidRuntime(15571): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.achillessecurity.androidtestjni/com.achillessecurity.androidtestjni.AndroidTestJNIActivity}: java.lang.RuntimeException: Fail to connect to camera service 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.os.Looper.loop(Looper.java:130) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.main(ActivityThread.java:3835) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at java.lang.reflect.Method.invokeNative(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at java.lang.reflect.Method.invoke(Method.java:507) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at dalvik.system.NativeStart.main(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): Caused by: java.lang.RuntimeException: Fail to connect to camera service 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.native_setup(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.<init>(Camera.java:258) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.open(Camera.java:235) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.achillessecurity.androidtestjni.AndroidTestJNIActivity.onCreate(AndroidTestJNIActivity.java:42) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 

ich initialisieren Kamera: camera= Camera.open();

+0

poste dein Fehlerprotokoll. –

+0

@PadmaKumar Ich aktualisiere meinen Beitrag mit dem StackTrace – 113408

+0

@ 113408 Können Sie mir helfen? Ich brauche eine App, die Bilder mit Vorder- und Rückkamera aufnehmen kann. Ich versuche Ihre App, aber es funktioniert nicht in einem Gerät! –

Antwort

9

Verwenden Sie diese Berechtigungen:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

Und Sie können ein Camera-Objekt mit diesem

Camera mycamera = Camera.open(); 

Sie können die Methode versuchen instanziiert hier beschrieben ist sehr einfach, wenn Sie in sind Einfachheit:

http://developer.android.com/training/camera/photobasics.html

+0

danke für die Antwort. Ich initialisiere Kamera und jetzt bekomme ich einen neuen Fehler siehe meine Bearbeitung – 113408

+0

@ HamzaKarmouda haben Sie die Berechtigungen in Ihrer Manifest-Datei? – opc0de

+0

ja natürlich. Ich weiß nicht, warum es nicht verbinden kann Kamera zu Service – 113408

0

Android kann die Kamera nicht ohne Vorschau verwenden ... aber können Sie die Vorschaugröße wie 1x1 Pixel eingestellt, dann werden Sie sehen es nicht und Sie können die Kamera auf jeden Fall nutzen.

0

In Bezug auf Ihre Fail to initialize camera Fehler, eine andere Möglichkeit ist die Kamera wird von etwas anderem verwendet.