Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46820e10 authored by Emilian Peev's avatar Emilian Peev Committed by Steve Kondik
Browse files

Camera: Adds support for meta data callbacks

- This change adds a new type of callback
  that will be called when there are pending
  meta data notifications.

Change-Id: I84f5cbafe4f023c7b0efa9ec8620756b0eaa428d
parent e4fe1356
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -869,7 +869,7 @@ public class Camera {

            case CAMERA_MSG_META_DATA:
                if (mCameraMetaDataCallback != null) {
                    mCameraMetaDataCallback.onCameraMetaData((int[])msg.obj, mCamera);
                    mCameraMetaDataCallback.onCameraMetaData((byte[])msg.obj, mCamera);
                }
                return;
            /* ### QC ADD-ONS: END */
@@ -1620,25 +1620,24 @@ public class Camera {
        /**
         * Callback for when camera meta data is available.
         *
         * @param data   a int array of the camera meta data
         * @param data   a byte array of the camera meta data
         * @param camera the Camera service object
         */
        void onCameraMetaData(int[] data, Camera camera);
        void onCameraMetaData(byte[] data, Camera camera);
    };

    /** @hide
     * Set camera face detection mode and registers a callback function to run.
     * Set camera meta data and registers a callback function to run.
     *  Only valid after startPreview() has been called.
     *
     * @param cb the callback to run
     */
    //TBD
    public final void setFaceDetectionCb(CameraMetaDataCallback cb)
    public final void setMetadataCb(CameraMetaDataCallback cb)
    {
        mCameraMetaDataCallback = cb;
        native_setFaceDetectionCb(cb!=null);
        native_setMetadataCb(cb!=null);
    }
    private native final void native_setFaceDetectionCb(boolean mode);
    private native final void native_setMetadataCb(boolean mode);

    /** @hide
     * Set camera face detection command to send meta data.
+21 −0
Original line number Diff line number Diff line
@@ -666,6 +666,24 @@ static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject t
    context->setCallbackMode(env, installed, manualBuffer);
}

static void android_hardware_Camera_setMetadataCb(JNIEnv *env, jobject thiz, jboolean mode)
{
    ALOGV("setMetadataCb: mode:%d", (int)mode);
    JNICameraContext* context;
    status_t rc;
    sp<Camera> camera = get_native_camera(env, thiz, &context);
    if (camera == 0) return;

    if(mode == true)
        rc = camera->sendCommand(CAMERA_CMD_METADATA_ON, 0, 0);
    else
        rc = camera->sendCommand(CAMERA_CMD_METADATA_OFF, 0, 0);

    if (rc != NO_ERROR) {
        jniThrowException(env, "java/lang/RuntimeException", "set metadata mode failed");
    }
}

static void android_hardware_Camera_addCallbackBuffer(JNIEnv *env, jobject thiz, jbyteArray bytes, int msgType) {
    ALOGV("addCallbackBuffer: 0x%x", msgType);

@@ -958,6 +976,9 @@ static JNINativeMethod camMethods[] = {
  { "native_setHistogramMode",
    "(Z)V",
     (void *)android_hardware_Camera_setHistogramMode },
  { "native_setMetadataCb",
    "(Z)V",
    (void *)android_hardware_Camera_setMetadataCb },
  { "native_sendHistogramData",
    "()V",
     (void *)android_hardware_Camera_sendHistogramData },