cameraview icon indicating copy to clipboard operation
cameraview copied to clipboard

XiaoMi MI3 os:Android4.4.4 app crashes , when switch front camera。

Open hxk1224 opened this issue 8 years ago • 2 comments

crash happens when setFlashInternal().

/** * @return {@code true} if {@link #mCameraParameters} was modified. */ private boolean setFlashInternal(int flash) { if (isCameraOpened()) { List<String> modes = mCameraParameters.getSupportedFlashModes(); String mode = FLASH_MODES.get(flash); if (modes != null && modes.contains(mode)) { mCameraParameters.setFlashMode(mode); mFlash = flash; return true; } String currentMode = FLASH_MODES.get(mFlash); if (modes == null || !modes.contains(currentMode)) { mCameraParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); mFlash = Constants.FLASH_OFF; return true; } return false; } else { mFlash = flash; return false; } }

hxk1224 avatar Aug 17 '17 03:08 hxk1224

加我qq群:490113234 ,细聊,他们代码里面在启动相机的时候调用了chooseCameraIdByFacing这个方法,不论你怎么设置前置摄像头都不行,除非你单独调用cameramanager.openCamera,(注意):chooseCameraIdByFacing这个方法简直恶心,你可以把里面改造下,我就是改造完之后,才能用,切换前置没什么问题了。我其实自己做了设置前置后置的标志,然后在里面动态设置。

TheMelody avatar Sep 19 '17 00:09 TheMelody

private boolean setFlashInternal(int flash) { if (isCameraOpened()) { List<String> modes = mCameraParameters.getSupportedFlashModes(); //flash mode setting is not supported if (modes == null) { mFlash = flash; return false; }

        String mode = FLASH_MODES.get(flash);
        if (modes != null && modes.contains(mode)) {
            mCameraParameters.setFlashMode(mode);
            mFlash = flash;
            return true;
        }
        String currentMode = FLASH_MODES.get(mFlash);
        if (!modes.contains(currentMode)) {
            mCameraParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
            mFlash = Constants.FLASH_OFF;
            return true;
        }
        return false;
    } else {
        mFlash = flash;
        return false;
    }
}

motify this function can fix it!

xiaanming avatar Oct 10 '17 03:10 xiaanming