Android-Kamera takePicture-Funktion nicht aufrufen, Callback-Funktion

Arbeite ich auf einer benutzerdefinierten Aktivität der Kamera für meine Anwendung.
Ich habe die Anleitung aus dem Android-Entwickler-Website hier:
http://developer.android.com/guide/topics/media/camera.html
Scheint alles funktioniert gut, außer die Callback-Funktion nicht aufgerufen, und das Bild wird nicht gespeichert. Hier ist mein code:

public class CameraActivity extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
private static final String TAG = "CameraActivity";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);

    //Create an instance of Camera
    mCamera = getCameraInstance();

    //Create our Preview view and set it as the content of our activity.
    mPreview = new CameraPreview(this, mCamera);
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    preview.addView(mPreview);

    Button captureButton = (Button) findViewById(R.id.button_capture);
    captureButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v(TAG, "will now take picture");
            mCamera.takePicture(null, null, mPicture);
            Log.v(TAG, "will now release camera");
            mCamera.release();
            Log.v(TAG, "will now call finish()");
            finish();
        }
    });        
}

private PictureCallback mPicture = new PictureCallback() {

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        Log.v(TAG, "Getting output media file");
        File pictureFile = getOutputMediaFile();
        if (pictureFile == null) {
            Log.v(TAG, "Error creating output file");
            return;
        }
        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
        } catch (FileNotFoundException e) {
            Log.v(TAG, e.getMessage());
        } catch (IOException e) {
            Log.v(TAG, e.getMessage());
        }
    }
};

private static File getOutputMediaFile() {
    String state = Environment.getExternalStorageState();
    if (!state.equals(Environment.MEDIA_MOUNTED)) {
        return null;
    }
    else {
        File folder_gui = new File(Environment.getExternalStorageDirectory() + File.separator + "GUI");
        if (!folder_gui.exists()) {
            Log.v(TAG, "Creating folder: " + folder_gui.getAbsolutePath());
            folder_gui.mkdirs();
        }
        File outFile = new File(folder_gui, "temp.jpg");
        Log.v(TAG, "Returnng file: " + outFile.getAbsolutePath());
        return outFile;
    }
}

Nachdem Sie auf die Schaltfläche, erhalte ich die logs: von "jetzt-Bild", "wird nun der release-Kamera" und "rufen Sie jetzt fertig". Die Aktivität endet erfolgreich, aber die Callback-Funktion nicht aufgerufen wurde, während die

mCamera.takePicture(null, null, mPicture);

Funktion (Es wurden keine Protokolle aus der mPicture Rückruf oder getMediaOutputFile Funktionen) und es gibt keine Datei in den Speicherort, der angegeben wurde.

Irgendwelche Ideen? 🙂
Viel Dank!

  • Ich brauche etwas Hilfe für die gleiche in C#.. Bitte
Schreibe einen Kommentar