public int enablePreviewEvents( int type, int memBuffer, int left, int top, int width, int height) { if (mPreview == null && mCamera == null) return MAAPI_consts.MA_CAMERA_RES_FAILED; if (mMoSyncPreviewEventEnabled) return MAAPI_consts.MA_CAMERA_RES_EVENTS_ALREADY_ENABLED; if (type == MAAPI_consts.MA_CAMERA_PREVIEW_FRAME) { if (mMoSyncPreviewAutoFocusEventEnabled) return MAAPI_consts.MA_CAMERA_RES_EVENTS_ALREADY_ENABLED; // enable preview frame events mMoSyncPreviewFrameEventEnabled = true; } else if (type == MAAPI_consts.MA_CAMERA_PREVIEW_AUTO_FOCUS) { if (mMoSyncPreviewFrameEventEnabled) return MAAPI_consts.MA_CAMERA_RES_EVENTS_ALREADY_ENABLED; // enable preview auto foucs events mMoSyncPreviewAutoFocusEventEnabled = true; } else return MAAPI_consts.MA_CAMERA_RES_FAILED; // Get the size of the preview and make sure the rect // ins't too big! // Camera.Parameters camParam = mCamera.getParameters(); Camera.Size previewSize = mPreview.mPreviewSize; if (previewSize == null) { SYSLOG("Preview size is null"); return MAAPI_consts.MA_CAMERA_RES_FAILED; } int w = previewSize.width; int h = previewSize.height; if ((left + width) > w) return MAAPI_consts.MA_CAMERA_RES_INVALID_PREVIEW_SIZE; if ((top + height) > h) return MAAPI_consts.MA_CAMERA_RES_INVALID_PREVIEW_SIZE; int sliceSize = width * height * 4; mMoSyncPreviewEventBuffer = mMoSyncThread.getMemorySlice(memBuffer, sliceSize).asIntBuffer(); if (mMoSyncPreviewEventBuffer == null) return MAAPI_consts.MA_CAMERA_RES_FAILED; mPreviewEventBufferLeft = left; mPreviewEventBufferTop = top; mPreviewEventBufferRight = left + width; mPreviewEventBufferBottom = top + height; mMoSyncPreviewEventEnabled = true; return MAAPI_consts.MA_CAMERA_RES_OK; }