切换时间
private void doCameraSelect(String newCameraId) { LogHelper.i(TAG, "[doCameraSelect] + mVideoState = " + mVideoState); LogHelper.e(TAG, "doCameraSelect:="+System.currentTimeMillis()); if (getVideoState() == VideoState.STATE_PREVIEW && getModeState() == ModeState.STATE_RESUMED) { mCameraDevice.preventChangeSettings(); updateVideoState(VideoState.STATE_UNKNOWN); LogHelper.e(TAG, "mCameraDevice.closeCamera(true)before:="+System.currentTimeMillis()); mCameraDevice.closeCamera(true); LogHelper.e(TAG, "mCameraDevice.closeCamera(true)after:="+System.currentTimeMillis()); mCameraContext.getSettingManagerFactory().recycle(mCameraId); mCameraId = newCameraId; mSettingManager = mCameraContext.getSettingManagerFactory().getInstance( mCameraId, getModeKey(), ModeType.VIDEO, mCameraApi); initStatusMonitor(); mVideoHelper.releasePreviewFrameData(); mCameraDevice.setPreviewCallback( mVideoHelper.getPreviewFrameCallback(), getPreviewStartCallback()); LogHelper.e(TAG, "mCameraDevice.openCamera before:="+System.currentTimeMillis()); mCameraDevice.openCamera(mSettingManager, mCameraId, true, mRestrictionProvider); } }
protected IDeviceController.DeviceCallback getPreviewStartCallback() { return mPreviewStartCallback; }
private IDeviceController.DeviceCallback mPreviewStartCallback = new
IDeviceController.DeviceCallback() {
@Override
public void onCameraOpened(String cameraId) {
LogHelper.e(TAG, "onCameraOpened:="+System.currentTimeMillis());
updateModeDeviceState(MODE_DEVICE_STATE_OPENED);
}
@Override
public void afterStopPreview() {
updateModeDeviceState(MODE_DEVICE_STATE_OPENED);
}
@Override
public void beforeCloseCamera() {
updateModeDeviceState(MODE_DEVICE_STATE_CLOSED);
}
@Override
public void onPreviewStart() {
LogHelper.e(TAG, "onPreviewStart:="+System.currentTimeMillis());
if (getModeState() == ModeState.STATE_PAUSED) {
LogHelper.e(TAG, "[onPreviewStart] error mode state is paused");
return;
}
updateVideoState(VideoState.STATE_PREVIEW);
mAppUi.applyAllUIEnabled(true);
updateModeDeviceState(MODE_DEVICE_STATE_PREVIEWING);
mIApp.getAppUi().isFirstInitMode(false);
LogHelper.d(TAG, "[onPreviewStart]");
}
@Override
public void onError() {
if (getVideoState() == VideoState.STATE_PAUSED
|| getVideoState() == VideoState.STATE_RECORDING) {
mVideoHandler.sendEmptyMessage(HANDLER_STOP_RECORDING);
}
}
};
差不读就是这个方法提的开始到结束 ,打日志看下