类android.hardware.Camera.AutoFocusCallback源码实例Demo

下面列出了怎么用android.hardware.Camera.AutoFocusCallback的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: microbit   文件: CameraActivity_OldAPI.java
/**
 * Setups preview button to take a picture state.
 */
private void setPreviewForPicture() {
    mPreview.setSoundEffectsEnabled(false);
    mPreview.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mCamera.autoFocus(new AutoFocusCallback() {
                @Override
                public void onAutoFocus(boolean arg0, Camera arg1) {
                    //TODO Is there anything we have to do after autofocus?
                }
            });
        }
    });
}
 
源代码2 项目: microbit   文件: CameraActivity_OldAPI.java
/**
 * Resets camera parameters and starts camera preview.
 */
private void resetCam() {
    try {
        Camera.Parameters parameters = mCamera.getParameters();
        logi("Set Flash mode ON");
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
        mCamera.autoFocus(new AutoFocusCallback() {
            public void onAutoFocus(boolean success, Camera camera) {
                //TODO: add implementation or leave a comment if it's nothing to do here
            }
        });
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        mCamera.setParameters(parameters);
    } catch(RuntimeException e) {
        Log.e(TAG, e.toString());
    }
}
 
源代码3 项目: VideoRecord   文件: MediaRecorderBase.java
/**
 * 自动对焦
 * 
 * @param cb
 * @return
 */
public boolean autoFocus(AutoFocusCallback cb) {
	if (camera != null) {
		try {
			camera.cancelAutoFocus();

			if (mParameters != null) {
				String mode = getAutoFocusMode();
				if (StringUtils.isNotEmpty(mode)) {
					mParameters.setFocusMode(mode);
					camera.setParameters(mParameters);
				}
			}
			camera.autoFocus(cb);
			return true;
		} catch (Exception e) {
			if (mOnErrorListener != null) {
				mOnErrorListener.onVideoError(MEDIA_ERROR_CAMERA_AUTO_FOCUS, 0);
			}
			if (e != null)
				Log.e("Yixia", "autoFocus", e);
		}
	}
	return false;
}
 
源代码4 项目: imsdk-android   文件: CameraPreview.java
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera, PreviewCallback previewCb, AutoFocusCallback autoFocusCb) {
	super(context);
	mCamera = camera;
	previewCallback = previewCb;
	autoFocusCallback = autoFocusCb;

	/*
	 * Set camera to continuous focus if supported, otherwise use software
	 * auto-focus. Only works for API level >=9.
	 */
	/*
	 * Camera.Parameters parameters = camera.getParameters(); for (String f
	 * : parameters.getSupportedFocusModes()) { if (f ==
	 * Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
	 * mCamera.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
	 * autoFocusCallback = null; break; } }
	 */

	// Install a SurfaceHolder.Callback so we get notified when the
	// underlying surface is created and destroyed.
	mHolder = getHolder();
	mHolder.addCallback(this);

	// deprecated setting, but required on Android versions prior to 3.0
	mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
 
源代码5 项目: ScanZbar   文件: CameraPreview.java
@SuppressWarnings("deprecation")
  public CameraPreview(Context context, Camera camera, PreviewCallback previewCb, AutoFocusCallback autoFocusCb) {
      super(context);
      mCamera = camera;
      previewCallback = previewCb;
      autoFocusCallback = autoFocusCb;

/*
       * Set camera to continuous focus if supported, otherwise use software
 * auto-focus. Only works for API level >=9.
 */

      Camera.Parameters parameters = camera.getParameters();
      for (String f: parameters.getSupportedFocusModes()) {
          if (f == Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
              parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
              autoFocusCallback = null;
              break;
          }
      }


      // Install a SurfaceHolder.Callback so we get notified when the
      // underlying surface is created and destroyed.
      mHolder = getHolder();
      mHolder.addCallback(this);

      // deprecated setting, but required on Android versions prior to 3.0
      mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  }
 
源代码6 项目: Camera2   文件: AndroidCameraAgentImpl.java
@Override
public void autoFocus(final Handler handler, final CameraAFCallback cb) {
    final AutoFocusCallback afCallback = new AutoFocusCallback() {
        @Override
        public void onAutoFocus(final boolean b, Camera camera) {
            if (mCameraState.getState() != AndroidCameraStateHolder.CAMERA_FOCUSING) {
                Log.w(TAG, "onAutoFocus callback returning when not focusing");
            } else {
                mCameraState.setState(AndroidCameraStateHolder.CAMERA_IDLE);
            }
            handler.post(new Runnable() {
                @Override
                public void run() {
                    cb.onAutoFocus(b, AndroidCameraProxyImpl.this);
                }
            });
        }
    };
    mDispatchThread.runJob(new Runnable() {
        @Override
        public void run() {
            // Don't bother to wait since camera is in bad state.
            if (getCameraState().isInvalid()) {
                return;
            }
            mCameraState.waitForStates(AndroidCameraStateHolder.CAMERA_IDLE);
            mCameraHandler.obtainMessage(CameraActions.AUTO_FOCUS, afCallback)
                    .sendToTarget();
        }
    });
}
 
源代码7 项目: VideoRecord   文件: MediaRecorderBase.java
/**
 * 手动对焦
 * 
 * @param focusAreas 对焦区域
 * @return
 */
@SuppressLint("NewApi")
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public boolean manualFocus(AutoFocusCallback cb, List<Area> focusAreas) {
	if (camera != null && focusAreas != null && mParameters != null && DeviceUtils.hasICS()) {
		try {
			camera.cancelAutoFocus();
			// getMaxNumFocusAreas检测设备是否支持
			if (mParameters.getMaxNumFocusAreas() > 0) {
				// mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO);//
				// Macro(close-up) focus mode
				mParameters.setFocusAreas(focusAreas);
			}

			if (mParameters.getMaxNumMeteringAreas() > 0)
				mParameters.setMeteringAreas(focusAreas);

			mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO);
			camera.setParameters(mParameters);
			camera.autoFocus(cb);
			return true;
		} catch (Exception e) {
			if (mOnErrorListener != null) {
				mOnErrorListener.onVideoError(MEDIA_ERROR_CAMERA_AUTO_FOCUS, 0);
			}
			if (e != null)
				Log.e("Yixia", "autoFocus", e);
		}
	}
	return false;
}
 
源代码8 项目: LLApp   文件: CameraView.java
/**
 * 手动聚焦
 *  @param point 触屏坐标
 */
protected void onFocus(Point point,AutoFocusCallback callback){
	Parameters parameters=mCamera.getParameters();
	//不支持设置自定义聚焦,则使用自动聚焦,返回
	if (parameters.getMaxNumFocusAreas()<=0) {
		mCamera.autoFocus(callback);
		return;
	}
	List<Area> areas=new ArrayList<Area>();
	int left=point.x-300;
	int top=point.y-300;
	int right=point.x+300;
	int bottom=point.y+300;
	left=left<-1000?-1000:left;
	top=top<-1000?-1000:top;
	right=right>1000?1000:right;
	bottom=bottom>1000?1000:bottom;
	areas.add(new Area(new Rect(left,top,right,bottom), 100));
	parameters.setFocusAreas(areas);
	try {
		//本人使用的小米手机在设置聚焦区域的时候经常会出异常,看日志发现是框架层的字符串转int的时候出错了,
		//目测是小米修改了框架层代码导致,在此try掉,对实际聚焦效果没影响
		mCamera.setParameters(parameters);
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
	mCamera.autoFocus(callback);
}
 
源代码9 项目: ZbarCode   文件: CameraPreview.java
@SuppressWarnings("deprecation")
  public CameraPreview(Context context, Camera camera, PreviewCallback previewCb, AutoFocusCallback autoFocusCb) {
      super(context);
      mCamera = camera;
      previewCallback = previewCb;
      autoFocusCallback = autoFocusCb;

/*
       * Set camera to continuous focus if supported, otherwise use software
 * auto-focus. Only works for API level >=9.
 */

      Camera.Parameters parameters = camera.getParameters();
      for (String f: parameters.getSupportedFocusModes()) {
          if (f == Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
              parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
              autoFocusCallback = null;
              break;
          }
      }


      // Install a SurfaceHolder.Callback so we get notified when the
      // underlying surface is created and destroyed.
      mHolder = getHolder();
      mHolder.addCallback(this);

      // deprecated setting, but required on Android versions prior to 3.0
      mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  }
 
源代码10 项目: Android-Basics-Codes   文件: MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(checkCameraHardware(this)){
     // ��ȡ����ͷʵ��
     mCamera = getCameraInstance();
	
     // ����Ԥ������Ķ���
     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 View.OnClickListener() {
             @Override
             public void onClick(View v) {
             	//�Զ��Խ�
             	mCamera.autoFocus(new AutoFocusCallback(){

             		//�Խ����ʱ����
			@Override
			public void onAutoFocus(boolean success,
					Camera camera) {
				//����
                   mCamera.takePicture(null, null, mPicture);
			}
             		
             	});
                 
             }
         }
     );
    }
}
 
源代码11 项目: ZBarScanProj   文件: CameraPreview.java
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera, PreviewCallback previewCb, AutoFocusCallback autoFocusCb) {
	super(context);
	mCamera = camera;
	previewCallback = previewCb;
	autoFocusCallback = autoFocusCb;

	/*
	 * Set camera to continuous focus if supported, otherwise use software
	 * auto-focus. Only works for API level >=9.
	 */
	/*
	 * Camera.Parameters parameters = camera.getParameters(); for (String f
	 * : parameters.getSupportedFocusModes()) { if (f ==
	 * Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
	 * mCamera.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
	 * autoFocusCallback = null; break; } }
	 */

	// Install a SurfaceHolder.Callback so we get notified when the
	// underlying surface is created and destroyed.
	mHolder = getHolder();
	mHolder.addCallback(this);

	// deprecated setting, but required on Android versions prior to 3.0
	mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
 
 类所在包
 类方法
 同包方法