Android 在相机中增加夜视模式+camera2+main2switcher

/vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/IAppUi.java

int QUICK_SWITCHER = 0;
    int MODE_SWITCHER = 1;
    int THUMBNAIL = 2;
    int SHUTTER_BUTTON = 3;
    int INDICATOR = 4;
    int PREVIEW_FRAME = 5;
    int GESTURE = 6;
    int SHUTTER_TEXT = 7;
    int SCREEN_HINT = 8;
    int Main2_SWITCH = 9;//*/tyd,add

末尾:

void updatePanelColor(int color);
    void setMain2SwitcherViewEntry(View view);
    void attachSwitchMain2ViewEntry();

vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/loader/FeatureLoader.java

 import com.mediatek.camera.feature.setting.Main2SwitcherEntry;

private static final String CAMERA_MAIN2 = "com.mediatek.camera.feature.setting.Main2SwitcherEntry";

IFeatureEntry cameraMain2Entry = new Main2SwitcherEntry(context, context.getResources());
        cameraMain2Entry.setDeviceSpec(deviceSpec);
        entries.put(CAMERA_MAIN2, cameraMain2Entry); 

 vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/mode/photo/PhotoMode.java

@Override
    public void init(@Nonnull IApp app, @Nonnull ICameraContext cameraContext,
            boolean isFromLaunch) {
        LogHelper.d(TAG, "[init]+");
        super.init(app, cameraContext, isFromLaunch);
//        mCameraId = getCameraIdByFacing(mDataStore.getValue(
//                KEY_CAMERA_SWITCHER, null, mDataStore.getGlobalScope()));
        mCameraId = mDataStore.getValue(KEY_CAMERA_ID, "0", mDataStore.getGlobalScope());

 @Override
    public void resume(@Nonnull DeviceUsage deviceUsage) {
        super.resume(deviceUsage);
        mIsResumed = true;

//*/add start
        mCameraId = mDataStore.getValue(KEY_CAMERA_ID, "0", mDataStore.getGlobalScope());

//*/
        initSettingManager(mCameraId);
        initStatusMonitor();
        mMemoryManager.addListener(this);
        mMemoryManager.initStateForCapture(
                mICameraContext.getStorageService().getCaptureStorageSpace());
        mMemoryState = IMemoryManager.MemoryAction.NORMAL;
        mIDeviceController.queryCameraDeviceManager();
        prepareAndOpenCamera(false, mCameraId, false);
    } 

 vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/mode/video/VideoMode.java

@Override
    public void resume(@Nonnull DeviceUsage deviceUsage) {
        LogHelper.i(TAG, "[resume]");
        super.resume(deviceUsage);

//*/add start
        mCameraId = mDataStore.getValue(KEY_CAMERA_ID, "0", mDataStore.getGlobalScope());

//*/
        mCameraDevice.modePaused(false);
        updateModeState(ModeState.STATE_RESUMED);
        doInitDeviceManager();
        initVideoVariables();
        updateVideoState(VideoState.STATE_UNKNOWN);
        doResumeMode();
    }

 private void initVideoVariables() {
        mAppUi = mApp.getAppUi();

/*/tyd,add
       mCameraId = getCameraIdByFacing(mDataStore.getValue(
                KEY_CAMERA_SWITCHER, null, mDataStore.getGlobalScope()));

/*/
        mCameraId = mDataStore.getValue(KEY_CAMERA_ID, "0", mDataStore.getGlobalScope());

//*/
        mStorageService = mCameraContext.getStorageService();
        mSettingManager = mCameraContext.getSettingManagerFactory().getInstance(
                mCameraId, getModeKey(), ModeType.VIDEO, mCameraApi);
    }

 vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/mode/CameraModeBase.java

protected static final String KEY_CAMERA_SWITCHER = "key_camera_switcher";
    protected static final String KEY_CAMERA_ID = "key_camera_id";//*/tyd,add

 protected String getCameraIdByFacing(String cameraFacing) {
        String cameraId = BACK_CAMERA_ID;
        if (mIApp != null && mIApp.getActivity() != null) {
            Intent currentIntent = mIApp.getActivity().getIntent();
            if (currentIntent.getBooleanExtra(EXTRA_USE_FRONT_CAMERA_FOR_ANDROID, false) ||
                    currentIntent.getBooleanExtra(EXTRA_USE_FRONT_CAMERA_FOR_GOOGLE, false)) {
                cameraId = FRONT_CAMERA_ID;
                if (mDataStore != null) {
                    mDataStore.setValue(KEY_CAMERA_SWITCHER, CAMERA_FACING_FRONT,
                            mDataStore.getGlobalScope(), true);

//*/tyd,add
     mDataStore.setValue(KEY_CAMERA_ID, "1", mDataStore.getGlobalScope(), true);

//*/
                }
                LogHelper.i(mTag, "Open front camera only for test");
                return cameraId;
            }
        }

 vendor/mediatek/proprietary/packages/apps/Camera2/common/src/com/mediatek/camera/common/setting/SettingManager.java

@Override
    public void addViewEntry() {
        LogHelper.d(mTag, "[addViewEntry], mInitialized:" + mInitialized);
        if (!mInitialized) {
            return;
        }
        SettingAccessManager.Access access = mSettingAccessManager
                .getAccess("addViewEntry" + this.hashCode());
        boolean successful = mSettingAccessManager.activeAccess(access);
        if (!successful) {
            return;
        }

        List settingsRelatedToMode = getSettingByModeType(mModeType);
        for (ICameraSetting setting : settingsRelatedToMode) {
            if (!access.isValid()) {
                break;
            }
            setting.addViewEntry();
        }

        List settingsUnRelatedToMode = getSettingByModeType(
                mModeType == ICameraMode.ModeType.PHOTO ? ICameraMode.ModeType.VIDEO
                        : ICameraMode.ModeType.PHOTO);

        List settingsForPhotoAndVideo
                = mSettingTable.getSettingListByType(ICameraSetting.SettingType.PHOTO_AND_VIDEO);
        settingsUnRelatedToMode.removeAll(settingsForPhotoAndVideo);
        for (ICameraSetting setting : settingsUnRelatedToMode) {
            if (!access.isValid()) {
                break;
            }
            setting.removeViewEntry();
        }
        mSettingAccessManager.recycleAccess(access);
        mAppUi.registerQuickIconDone();
        mAppUi.attachEffectViewEntry();

//*/tyd,add
        mAppUi.attachSwitchMain2ViewEntry();

//*/
    }

 vendor/mediatek/proprietary/packages/apps/Camera2/feature/setting/cameraswitcher/src/com/mediatek/camera/feature/setting/CameraSwitcher.java

private static final String KEY_CAMERA_SWITCHER = "key_camera_switcher";
    private static final String KEY_CAMERA_ID = "key_camera_id";

 //for Main2 debug.
    private static final String DEBUG_MAIN2 = "vendor.debug.camera.single_main2";
    private static final String KEY_DEBUG_STEREO_MAIN2 = "key_stereo_main2"

你可能感兴趣的:(android,数码相机)