2016-07-23 9 views
1

Ich möchte ein Kamera-Gerät mit libgdx Android und ich verwende this code. Aber ich bin NullPointerException an dieser Linie Camera.Parameters p = camera.getParameters(); in CameraSurface.java Klasse geting.Libgdx android: camera.getParameters() stürzt App NullPointerException

package com.mygdx.cameradevice; 

import java.io.IOException; 
import android.content.Context; 
import android.hardware.Camera; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class CameraSurface extends SurfaceView implements SurfaceHolder.Callback { 

private Camera camera; 

public CameraSurface(Context context) { 
    super(context); 

    // We're implementing the Callback interface and want to get notified 
    // about certain surface events. 
    getHolder().addCallback(this); 
    // We're changing the surface to a PUSH surface, meaning we're receiving 
    // all buffer data from another component - the camera, in this case. 
    getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

} 

public void surfaceCreated(SurfaceHolder holder) { 
    // Once the surface is created, simply open a handle to the camera hardware. 
    camera = Camera.open(); 

} 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
    // This method is called when the surface changes, e.g. when it's size is set. 
    // We use the opportunity to initialize the camera preview display dimensions. 
    //System.out.println("ajay"); 
    //camera=Camera.open(); 
    Camera.Parameters p = camera.getParameters(); 
    p.setPreviewSize(width,height); 
    camera.setParameters(p); 

    // We also assign the preview display to this surface... 
    try { 
     camera.setPreviewDisplay(holder); 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    // Once the surface gets destroyed, we stop the preview mode and release 
    // the whole camera since we no longer need it. 
    camera.stopPreview(); 
    camera.release(); 
    camera = null; 
} 

public Camera getCamera() { 
    return camera; 
} 

} 
+0

also, ich denke, dass 'SurfaceChanged' Methode vor 'SurfaceCreated' aufgerufen wird. schauen Sie doch einmal [hier] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-fix-it) – Enigo

+0

Haben Sie Kamera Berechtigungen & Flash/Hardware hinzugefügt Funktionen in Manifest ??? – VVB

+0

Ja, ich habe die Kamera-Berechtigung in der AndroidManifest.xml-Datei hinzugefügt, und die Methode "SurfaceCreated" wird zum ersten Mal nach dem Ausführen von SurfaceChanged.So ausgeführt. Ich erhalte NullPointerException in dieser Zeile Camera.Parameters p = camera.getParameters() in der CameraSurface-Klasse. –

Antwort

1

Ich sehe Ihr Code copyed von https://github.com/libgdx/libgdx/wiki/Integrating-libgdx-and-the-device-camera, Ich benutze die gleiche, und dann erstelle ich ein Projekt mit Hilfe von ihm, die Codes in CameraSurface.java sind die gleichen, also vielleicht ist es etw sonst falsch mit. Sie können mein einfaches Projekt sehen https://github.com/54wall/LibgdxAndroidCamera, , um den Unterschied zwischen Ihnen und mir zu sehen.Ich denke, einige Tastencodes in AndroidDeviceCameraController.class. Ich hoffe das würde dir helfen!

Verwandte Themen