Android M camera添加对焦功能

1.vendor\mediatek\proprietary\packages\apps\Camera\src\com\android\camera\CameraActivity.java

public void onSingleTapUp(View view, int x, int y) {
        //lxm add start:{
        FocusManager focusManager = mCameraDeviceCtrl.getFocusManager();
        if(focusManager != null){
            Log.i(TAG,"focusManager.onSingleTapUp...");
            focusManager.onSingleTapUp(x, y);  
              /* 去除下面一段,则只有假对焦效果,无变焦效果 */
            mCameraDeviceCtrl.getCameraDevice().setParametersAsync(getParameters(),1);  //control zoom
        }
        //lxm add end:}
        if (FeatureSwitcher.isApi2Enable(this)) {
            return;
        }
    ...
}

2.vendor\mediatek\proprietary\packages\apps\Camera\src\com\android\camera\FocusManager.java 

    private static final int STATE_FOCUSING_SNAP_ON_FINISH = 2;
    private static final int STATE_SUCCESS = 3; // Focus finishes and succeeds.
    private static final int STATE_FAIL = 4; // Focus finishes and fails.

    //lxm add start:{
    private static final int MSG_SHOW_FOCUS_END = 5;    
    private static final int MSG_SHOW_FOCUS_END_DELAY = 600;    
    //lxm add end:}

    private boolean mInitialized;
    private boolean mFocusAreaSupported;
    private boolean mLockAeAwbNeeded;
    private boolean mLockAeNeeded = true;

.
.
.
public void handleMessage(Message msg) {
            Log.d(TAG, "[handleMessage] msg .what = " + msg.what);

            switch (msg.what) {
            case RESET_TOUCH_FOCUS:
                cancelAutoFocus();
                break;
            case RESET_FACE_BEAUTY_TOUCH_POSITION:
                resetFaceBeautyTouchPosition();
                break;
            case RESET_MULTIAF_FOCUS:
                if (mMultiZoneAfView != null) {
                    mMultiZoneAfView.clear();
                }
                break;
            //lxm add start:{
            case MSG_SHOW_FOCUS_END:
                mFocusIndicatorRotateLayout.showSuccess(true);
                mListener.playSound(MediaActionSound.FOCUS_COMPLETE);
                 /* 去除下面一段,则只有假对焦效果,无变焦效果 */
                mContext.getCameraDevice().setParametersAsync(mParameters, 0);  //control zoom
                break;
            //lxm add end:}
            default:
                break;
            }
        }  
.
.
.
 public void onSingleTapUp(int x, int y) {
        Log.d(TAG, "onSingleTapUp x = " + x + " y = " + y);

        // when devices support both continuous and infinity focus mode.
        String focusMode = getCurrentFocusMode(mContext);
        if (focusMode == null || Parameters.FOCUS_MODE_INFINITY.equals(focusMode)) {
            Log.w(TAG, "[onSingleTapUp]focusMode:" + focusMode);
            return;
        }
        // Check if metering area or focus area is supported.
        //lxm del start:{
        /* if (!mFocusAreaSupported) {
            Log.i(TAG, "[onSingleTapUp] mFocusAreaSupported is false");
            return;
        } */
        //lxm del end:}
        if (!mInitialized || mState == STATE_FOCUSING_SNAP_ON_FINISH || mState == STATE_UNKNOWN) {
            return;
        }
      .
      .
      .
    // Set the focus area and metering area.
        mListener.setFocusParameters();

        //lxm modify start:{
        //autoFocus();

        Log.d(TAG, "ydw, add if-else flow.");
        if (mFocusAreaSupported) {
            autoFocus();
        } else { // Just show the indicator in all other cases.
            updateFocusUI();
            // Reset the metering area in 3 seconds.
            mHandler.removeMessages(RESET_TOUCH_FOCUS);
            mHandler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, RESET_TOUCH_FOCUS_DELAY);
            mHandler.removeMessages(MSG_SHOW_FOCUS_END);
            mHandler.sendEmptyMessageDelayed(MSG_SHOW_FOCUS_END, MSG_SHOW_FOCUS_END_DELAY); 
        }
        //lxm modify end:}
    
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值